CMS 3D CMS Logo

L1TObjectsTiming.cc
Go to the documentation of this file.
2 
4  : ugmtMuonToken_(consumes<l1t::MuonBxCollection>(ps.getParameter<edm::InputTag>("muonProducer"))),
5  stage2CaloLayer2JetToken_(
6  consumes<l1t::JetBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2JetProducer"))),
7  stage2CaloLayer2EGammaToken_(
8  consumes<l1t::EGammaBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2EGammaProducer"))),
9  stage2CaloLayer2TauToken_(
10  consumes<l1t::TauBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2TauProducer"))),
11  stage2CaloLayer2EtSumToken_(
12  consumes<l1t::EtSumBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2EtSumProducer"))),
13  l1tStage2uGtProducer_(consumes<GlobalAlgBlkBxCollection>(ps.getParameter<edm::InputTag>("ugtProducer"))),
14  monitorDir_(ps.getUntrackedParameter<std::string>("monitorDir")),
15  verbose_(ps.getUntrackedParameter<bool>("verbose")),
16  gtUtil_(new l1t::L1TGlobalUtil(ps,
17  consumesCollector(),
18  *this,
19  ps.getParameter<edm::InputTag>("ugtProducer"),
20  ps.getParameter<edm::InputTag>("ugtProducer"))),
21  algoBitFirstBxInTrain_(-1),
22  algoBitLastBxInTrain_(-1),
23  algoBitIsoBx_(-1),
24  algoNameFirstBxInTrain_(ps.getUntrackedParameter<std::string>("firstBXInTrainAlgo", "")),
25  algoNameLastBxInTrain_(ps.getUntrackedParameter<std::string>("lastBXInTrainAlgo", "")),
26  algoNameIsoBx_(ps.getUntrackedParameter<std::string>("isoBXAlgo", "")),
27  bxrange_(5),
28  egammaPtCuts_(ps.getUntrackedParameter<std::vector<double>>("egammaPtCuts")),
29  jetPtCut_(ps.getUntrackedParameter<double>("jetPtCut")),
30  egammaPtCut_(0.),
31  tauPtCut_(ps.getUntrackedParameter<double>("tauPtCut")),
32  etsumPtCut_(ps.getUntrackedParameter<double>("etsumPtCut")),
33  muonPtCut_(ps.getUntrackedParameter<double>("muonPtCut")),
34  muonQualCut_(ps.getUntrackedParameter<int>("muonQualCut")) {
35  if (ps.getUntrackedParameter<std::string>("useAlgoDecision").find("final") == 0) {
36  useAlgoDecision_ = 2;
37  } else if (ps.getUntrackedParameter<std::string>("useAlgoDecision").find("intermediate") == 0) {
38  useAlgoDecision_ = 1;
39  } else {
40  useAlgoDecision_ = 0;
41  }
42 
43  // Take the first element of the cuts vector as the one to use for the all bunches histograms
44  if (not egammaPtCuts_.empty()) {
46  }
47 }
48 
50 
53  desc.add<edm::InputTag>("muonProducer")->setComment("L1T muons");
54  ;
55  desc.add<edm::InputTag>("stage2CaloLayer2JetProducer")->setComment("L1T jets");
56  desc.add<edm::InputTag>("stage2CaloLayer2EGammaProducer")->setComment("L1T egamma");
57  desc.add<edm::InputTag>("stage2CaloLayer2TauProducer")->setComment("L1T taus");
58  desc.add<edm::InputTag>("stage2CaloLayer2EtSumProducer")->setComment("L1T etsums");
59  desc.add<edm::InputTag>("ugtProducer")->setComment("uGT output");
60  desc.addUntracked<std::string>("monitorDir", "")
61  ->setComment("Target directory in the DQM file. Will be created if not existing.");
62  desc.addUntracked<bool>("verbose", false);
63  desc.addUntracked<std::string>("firstBXInTrainAlgo", "")
64  ->setComment("Pick the right algo name for L1 First Collision In Train");
65  desc.addUntracked<std::string>("lastBXInTrainAlgo", "")
66  ->setComment("Pick the right algo name for L1 Last Collision In Train");
67  desc.addUntracked<std::string>("isoBXAlgo", "")->setComment("Pick the right algo name for L1 Isolated Bunch");
68  desc.addUntracked<std::string>("useAlgoDecision", "initial")
69  ->setComment("Which algo decision should be checked [initial, intermediate, final].");
70  desc.addUntracked<std::vector<double>>("egammaPtCuts", {20., 10., 30.})->setComment("List if min egamma pT vaules");
71  desc.addUntracked<double>("jetPtCut", 20.)->setComment("Min jet pT");
72  desc.addUntracked<double>("tauPtCut", 20.)->setComment("Min tau pT");
73  desc.addUntracked<double>("etsumPtCut", 20.)->setComment("Min etsum pT");
74  desc.addUntracked<double>("muonPtCut", 8.)->setComment("Min muon pT");
75  desc.addUntracked<int>("muonQualCut", 12)->setComment("Min muon quality");
76  descriptions.add("l1tObjectsTiming", desc);
77 }
78 
80  // Get the trigger menu information
81  gtUtil_->retrieveL1Setup(c);
82 
83  // Get the algo bits needed for the timing histograms
84  if (!gtUtil_->getAlgBitFromName(algoNameFirstBxInTrain_, algoBitFirstBxInTrain_)) {
85  edm::LogWarning("L1TObjectsTiming") << "Algo \"" << algoNameFirstBxInTrain_ << "\" not found in the trigger menu "
86  << gtUtil_->gtTriggerMenuName() << ". Could not retrieve algo bit number.";
87  }
88 
89  if (!gtUtil_->getAlgBitFromName(algoNameLastBxInTrain_, algoBitLastBxInTrain_)) {
90  edm::LogWarning("L1TObjectsTiming") << "Algo \"" << algoNameLastBxInTrain_ << "\" not found in the trigger menu "
91  << gtUtil_->gtTriggerMenuName() << ". Could not retrieve algo bit number.";
92  }
93 
94  if (!gtUtil_->getAlgBitFromName(algoNameIsoBx_, algoBitIsoBx_)) {
95  edm::LogWarning("L1TObjectsTiming") << "Algo \"" << algoNameIsoBx_ << "\" not found in the trigger menu "
96  << gtUtil_->gtTriggerMenuName() << ". Could not retrieve algo bit number.";
97  }
98 }
99 
101  std::array<std::string, 5> bx_obj{{"minus2", "minus1", "0", "plus1", "plus2"}};
102 
103  // generate cut value strings for the histogram titles
104  auto muonQualCutStr = std::to_string(muonQualCut_);
105  auto muonPtCutStr = std::to_string(muonPtCut_);
106  muonPtCutStr.resize(muonPtCutStr.size() - 5); // cut some decimal digits
107 
108  auto jetPtCutStr = std::to_string(jetPtCut_);
109  jetPtCutStr.resize(jetPtCutStr.size() - 5); // cut some decimal digits
110 
111  auto egammaPtCutStr = std::to_string(egammaPtCut_);
112  egammaPtCutStr.resize(egammaPtCutStr.size() - 5); // cut some decimal digits
113 
114  auto tauPtCutStr = std::to_string(tauPtCut_);
115  tauPtCutStr.resize(tauPtCutStr.size() - 5); // cut some decimal digits
116 
117  auto etsumPtCutStr = std::to_string(etsumPtCut_);
118  etsumPtCutStr.resize(etsumPtCutStr.size() - 5); // cut some decimal digits
119 
120  // all bunches
121  ibooker.setCurrentFolder(monitorDir_ + "/L1TMuon/timing");
122  for (unsigned int i = 0; i < bxrange_; ++i) {
123  muons_eta_phi.push_back(ibooker.book2D("muons_eta_phi_bx_" + bx_obj[i],
124  "L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr +
125  " #eta vs #phi BX=" + bx_obj[i] + ";#eta;#phi",
126  25,
127  -2.5,
128  2.5,
129  25,
130  -3.2,
131  3.2));
132  }
133  denominator_muons = ibooker.book2D(
134  "denominator_muons",
135  "Denominator for L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr + ";#eta;#phi",
136  25,
137  -2.5,
138  2.5,
139  25,
140  -3.2,
141  3.2);
142 
143  ibooker.setCurrentFolder(monitorDir_ + "/L1TJet/timing");
144  for (unsigned int i = 0; i < bxrange_; ++i) {
145  jet_eta_phi.push_back(
146  ibooker.book2D("jet_eta_phi_bx_" + bx_obj[i],
147  "L1T Jet p_{T}#geq" + jetPtCutStr + " GeV #eta vs #phi BX=" + bx_obj[i] + ";#eta;#phi",
148  50,
149  -5.,
150  5.,
151  25,
152  -3.2,
153  3.2));
154  }
155  denominator_jet = ibooker.book2D("denominator_jet",
156  "Denominator for L1T Jet p_{T}#geq" + jetPtCutStr + " GeV;#eta;#phi",
157  50,
158  -5.,
159  5.,
160  25,
161  -3.2,
162  3.2);
163 
164  ibooker.setCurrentFolder(monitorDir_ + "/L1TEGamma/timing");
165  for (unsigned int i = 0; i < bxrange_; ++i) {
166  egamma_eta_phi.push_back(
167  ibooker.book2D("egamma_eta_phi_bx_" + bx_obj[i],
168  "L1T EGamma p_{T}#geq" + egammaPtCutStr + " GeV #eta vs #phi BX=" + bx_obj[i] + ";#eta;#phi",
169  30,
170  -3.,
171  3.,
172  25,
173  -3.2,
174  3.2));
175  }
176  denominator_egamma = ibooker.book2D("denominator_egamma",
177  "Denominator for L1T EGamma p_{T}#geq" + egammaPtCutStr + " GeV;#eta;#phi",
178  30,
179  -3.,
180  3.,
181  25,
182  -3.2,
183  3.2);
184 
185  ibooker.setCurrentFolder(monitorDir_ + "/L1TTau/timing");
186  for (unsigned int i = 0; i < bxrange_; ++i) {
187  tau_eta_phi.push_back(
188  ibooker.book2D("tau_eta_phi_bx_" + bx_obj[i],
189  "L1T Tau p_{T}#geq" + tauPtCutStr + " GeV #eta vs #phi BX=" + bx_obj[i] + ";#eta;#phi",
190  30,
191  -3.,
192  3.,
193  25,
194  -3.2,
195  3.2));
196  }
197  denominator_tau = ibooker.book2D("denominator_tau",
198  "Denominator for L1T Tau p_{T}#geq" + tauPtCutStr + " GeV;#eta;#phi",
199  30,
200  -3.,
201  3.,
202  25,
203  -3.2,
204  3.2);
205 
206  ibooker.setCurrentFolder(monitorDir_ + "/L1TEtSum/timing");
207  for (unsigned int i = 0; i < bxrange_; ++i) {
208  etsum_eta_phi_MET.push_back(
209  ibooker.book1D("etsum_phi_bx_MET_" + bx_obj[i],
210  "L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV #phi BX=" + bx_obj[i] + ";#phi",
211  25,
212  -3.2,
213  3.2));
214  etsum_eta_phi_METHF.push_back(
215  ibooker.book1D("etsum_phi_bx_METHF_" + bx_obj[i],
216  "L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV #phi BX=" + bx_obj[i] + ";#phi",
217  25,
218  -3.2,
219  3.2));
220  etsum_eta_phi_MHT.push_back(
221  ibooker.book1D("etsum_phi_bx_MHT_" + bx_obj[i],
222  "L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV #phi BX=" + bx_obj[i] + ";#phi",
223  25,
224  -3.2,
225  3.2));
226  etsum_eta_phi_MHTHF.push_back(
227  ibooker.book1D("etsum_phi_bx_MHTHF_" + bx_obj[i],
228  "L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV #phi BX=" + bx_obj[i] + ";#phi",
229  25,
230  -3.2,
231  3.2));
232  }
233  denominator_etsum_MET = ibooker.book1D(
234  "denominator_etsum_MET", "Denominator for L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV;#phi", 25, -3.2, 3.2);
235  denominator_etsum_METHF = ibooker.book1D("denominator_etsum_METHF",
236  "Denominator for L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
237  25,
238  -3.2,
239  3.2);
240  denominator_etsum_MHT = ibooker.book1D(
241  "denominator_etsum_MHT", "Denominator for L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV;#phi", 25, -3.2, 3.2);
242  denominator_etsum_MHTHF = ibooker.book1D("denominator_etsum_MHTHF",
243  "Denominator for L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
244  25,
245  -3.2,
246  3.2);
247 
248  // isolated bunch
249  if (algoBitIsoBx_ > -1) {
250  ibooker.setCurrentFolder(monitorDir_ + "/L1TMuon/timing/Isolated_bunch");
251  for (unsigned int i = 0; i < bxrange_; ++i) {
252  muons_eta_phi_isolated.push_back(
253  ibooker.book2D("muons_eta_phi_bx_isolated_" + bx_obj[i],
254  "L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr +
255  " #eta vs #phi for isolated bunch BX=" + bx_obj[i] + ";#eta;#phi",
256  25,
257  -2.5,
258  2.5,
259  25,
260  -3.2,
261  3.2));
262  }
264  "denominator_muons_isolated",
265  "Denominator for Isolated Bunch for L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr,
266  25,
267  -2.5,
268  2.5,
269  25,
270  -3.2,
271  3.2);
272 
273  ibooker.setCurrentFolder(monitorDir_ + "/L1TJet/timing/Isolated_bunch");
274  for (unsigned int i = 0; i < bxrange_; ++i) {
275  jet_eta_phi_isolated.push_back(ibooker.book2D(
276  "jet_eta_phi_bx_isolated_" + bx_obj[i],
277  "L1T Jet p_{T}#geq" + jetPtCutStr + " GeV #eta vs #phi for isolated bunch BX=" + bx_obj[i] + ";#eta;#phi",
278  50,
279  -5.,
280  5.,
281  25,
282  -3.2,
283  3.2));
284  }
286  ibooker.book2D("denominator_jet_isolated",
287  "Denominator for Isolated Bunch for L1T Jet p_{T}#geq" + jetPtCutStr + " GeV;#eta;#phi",
288  50,
289  -5.,
290  5.,
291  25,
292  -3.2,
293  3.2);
294 
295  for (const auto egammaPtCut : egammaPtCuts_) {
296  auto egammaPtCutStr = std::to_string(egammaPtCut);
297  egammaPtCutStr.resize(egammaPtCutStr.size() - 5); // cut some decimal digits
298  auto egammaPtCutStrAlpha = egammaPtCutStr;
299  std::replace(egammaPtCutStrAlpha.begin(),
300  egammaPtCutStrAlpha.end(),
301  '.',
302  'p'); // replace the decimal dot with a 'p' to please the DQMStore
303 
304  ibooker.setCurrentFolder(monitorDir_ + "/L1TEGamma/timing/Isolated_bunch/ptmin_" + egammaPtCutStrAlpha + "_gev");
305  std::vector<MonitorElement*> vHelper;
306  for (unsigned int i = 0; i < bxrange_; ++i) {
307  vHelper.push_back(ibooker.book2D("egamma_eta_phi_bx_isolated_" + bx_obj[i],
308  "L1T EGamma p_{T}#geq" + egammaPtCutStr +
309  " GeV #eta vs #phi for first bunch BX=" + bx_obj[i] + ";#eta;#phi",
310  30,
311  -3.,
312  3.,
313  25,
314  -3.2,
315  3.2));
316  }
317  egamma_eta_phi_isolated.push_back(vHelper);
318 
319  denominator_egamma_isolated.push_back(
320  ibooker.book2D("denominator_egamma_isolated",
321  "Denominator for Isolated Bunch for L1T EGamma p_{T}#geq" + egammaPtCutStr + " GeV;#eta;#phi",
322  30,
323  -3.,
324  3.,
325  25,
326  -3.2,
327  3.2));
328 
329  egamma_iso_bx_ieta_isolated.push_back(
330  ibooker.book2D("egamma_iso_bx_ieta_isolated_ptmin" + egammaPtCutStrAlpha,
331  "L1T EGamma iso with pT#geq" + egammaPtCutStr +
332  " GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta",
333  5,
334  -2.5,
335  2.5,
336  70,
337  -70,
338  70));
339 
341  ibooker.book2D("egamma_noniso_bx_ieta_isolated_ptmin" + egammaPtCutStrAlpha,
342  "L1T EGamma non iso with pT#geq" + egammaPtCutStr +
343  " GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta",
344  5,
345  -2.5,
346  2.5,
347  70,
348  -70,
349  70));
350  }
351 
352  ibooker.setCurrentFolder(monitorDir_ + "/L1TTau/timing/Isolated_bunch");
353  for (unsigned int i = 0; i < bxrange_; ++i) {
354  tau_eta_phi_isolated.push_back(ibooker.book2D(
355  "tau_eta_phi_bx_isolated_" + bx_obj[i],
356  "L1T Tau p_{T}#geq" + tauPtCutStr + " GeV #eta vs #phi for isolated bunch BX=" + bx_obj[i] + ";#eta;#phi",
357  30,
358  -3.,
359  3.,
360  25,
361  -3.2,
362  3.2));
363  }
365  ibooker.book2D("denominator_tau_isolated",
366  "Denominator for Isolated Bunch for L1T Tau p_{T}#geq" + tauPtCutStr + " GeV;#eta;#phi",
367  30,
368  -3.,
369  3.,
370  25,
371  -3.2,
372  3.2);
373 
374  ibooker.setCurrentFolder(monitorDir_ + "/L1TEtSum/timing/Isolated_bunch");
375  for (unsigned int i = 0; i < bxrange_; ++i) {
376  etsum_eta_phi_MET_isolated.push_back(ibooker.book1D(
377  "etsum_phi_bx_MET_isolated_" + bx_obj[i],
378  "L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV #phi for isolated bunch BX=" + bx_obj[i] + ";#phi",
379  25,
380  -3.2,
381  3.2));
382  etsum_eta_phi_METHF_isolated.push_back(ibooker.book1D(
383  "etsum_phi_bx_METHF_isolated_" + bx_obj[i],
384  "L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV #phi for isolated bunch BX=" + bx_obj[i] + ";#phi",
385  25,
386  -3.2,
387  3.2));
388  etsum_eta_phi_MHT_isolated.push_back(ibooker.book1D(
389  "etsum_phi_bx_MHT_isolated_" + bx_obj[i],
390  "L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV #phi for isolated bunch BX=" + bx_obj[i] + ";#phi",
391  25,
392  -3.2,
393  3.2));
394  etsum_eta_phi_MHTHF_isolated.push_back(ibooker.book1D(
395  "etsum_phi_bx_MHTHF_isolated_" + bx_obj[i],
396  "L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV #phi for isolated bunch BX=" + bx_obj[i] + ";#phi",
397  25,
398  -3.2,
399  3.2));
400  }
402  ibooker.book1D("denominator_etsum_isolated_MET",
403  "Denominator for Isolated Bunch for L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
404  25,
405  -3.2,
406  3.2);
408  ibooker.book1D("denominator_etsum_isolated_METHF",
409  "Denominator for Isolated Bunch for L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
410  25,
411  -3.2,
412  3.2);
414  ibooker.book1D("denominator_etsum_isolated_MHT",
415  "Denominator for Isolated Bunch for L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
416  25,
417  -3.2,
418  3.2);
420  ibooker.book1D("denominator_etsum_isolated_MHTHF",
421  "Denominator for Isolated Bunch for L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
422  25,
423  -3.2,
424  3.2);
425  }
426 
427  if (algoBitFirstBxInTrain_ > -1) {
428  // first bunch in train
429  ibooker.setCurrentFolder(monitorDir_ + "/L1TMuon/timing/First_bunch");
430  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
431  muons_eta_phi_firstbunch.push_back(
432  ibooker.book2D("muons_eta_phi_bx_firstbunch_" + bx_obj[i],
433  "L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr +
434  " #eta vs #phi for first bunch BX=" + bx_obj[i] + ";#eta;#phi",
435  25,
436  -2.5,
437  2.5,
438  25,
439  -3.2,
440  3.2));
441  }
443  "denominator_muons_firstbunch",
444  "Denominator for First Bunch for L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr,
445  25,
446  -2.5,
447  2.5,
448  25,
449  -3.2,
450  3.2);
451 
452  ibooker.setCurrentFolder(monitorDir_ + "/L1TJet/timing/First_bunch");
453  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
454  jet_eta_phi_firstbunch.push_back(ibooker.book2D(
455  "jet_eta_phi_bx_firstbunch_" + bx_obj[i],
456  "L1T Jet p_{T}#geq" + jetPtCutStr + " GeV #eta vs #phi for first bunch BX=" + bx_obj[i] + ";#eta;#phi",
457  50,
458  -5.,
459  5.,
460  25,
461  -3.2,
462  3.2));
463  }
465  ibooker.book2D("denominator_jet_firstbunch",
466  "Denominator for First Bunch for L1T Jet p_{T}#geq" + jetPtCutStr + " GeV;#eta;#phi",
467  50,
468  -5.,
469  5.,
470  25,
471  -3.2,
472  3.2);
473 
474  for (const auto egammaPtCut : egammaPtCuts_) {
475  auto egammaPtCutStr = std::to_string(egammaPtCut);
476  egammaPtCutStr.resize(egammaPtCutStr.size() - 5); // cut some decimal digits
477  auto egammaPtCutStrAlpha = egammaPtCutStr;
478  std::replace(egammaPtCutStrAlpha.begin(),
479  egammaPtCutStrAlpha.end(),
480  '.',
481  'p'); // replace the decimal dot with a 'p' to please the DQMStore
482 
483  ibooker.setCurrentFolder(monitorDir_ + "/L1TEGamma/timing/First_bunch/ptmin_" + egammaPtCutStrAlpha + "_gev");
484  std::vector<MonitorElement*> vHelper;
485  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
486  vHelper.push_back(ibooker.book2D("egamma_eta_phi_bx_firstbunch_" + bx_obj[i],
487  "L1T EGamma p_{T}#geq" + egammaPtCutStr +
488  " GeV #eta vs #phi for first bunch BX=" + bx_obj[i] + ";#eta;#phi",
489  30,
490  -3.,
491  3.,
492  25,
493  -3.2,
494  3.2));
495  }
496  egamma_eta_phi_firstbunch.push_back(vHelper);
497 
499  ibooker.book2D("denominator_egamma_firstbunch",
500  "Denominator for First Bunch for L1T EGamma p_{T}#geq" + egammaPtCutStr + " GeV;#eta;#phi",
501  30,
502  -3.,
503  3.,
504  25,
505  -3.2,
506  3.2));
507 
509  ibooker.book2D("egamma_iso_bx_ieta_firstbunch_ptmin" + egammaPtCutStrAlpha,
510  "L1T EGamma iso with pT#geq" + egammaPtCutStr +
511  " GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta",
512  5,
513  -2.5,
514  2.5,
515  70,
516  -70,
517  70));
518 
520  ibooker.book2D("egamma_noniso_bx_ieta_firstbunch_ptmin" + egammaPtCutStrAlpha,
521  "L1T EGamma non iso with pT#geq" + egammaPtCutStr +
522  " GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta",
523  5,
524  -2.5,
525  2.5,
526  70,
527  -70,
528  70));
529  }
530 
531  ibooker.setCurrentFolder(monitorDir_ + "/L1TTau/timing/First_bunch");
532  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
533  tau_eta_phi_firstbunch.push_back(ibooker.book2D(
534  "tau_eta_phi_bx_firstbunch_" + bx_obj[i],
535  "L1T Tau p_{T}#geq" + tauPtCutStr + " GeV #eta vs #phi for first bunch BX=" + bx_obj[i] + ";#eta;#phi",
536  30,
537  -3.,
538  3.,
539  25,
540  -3.2,
541  3.2));
542  }
544  ibooker.book2D("denominator_tau_firstbunch",
545  "Denominator for First Bunch for L1T Tau p_{T}#geq" + tauPtCutStr + " GeV;#eta;#phi",
546  30,
547  -3.,
548  3.,
549  25,
550  -3.2,
551  3.2);
552 
553  ibooker.setCurrentFolder(monitorDir_ + "/L1TEtSum/timing/First_bunch");
554  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
555  etsum_eta_phi_MET_firstbunch.push_back(ibooker.book1D(
556  "etsum_phi_bx_MET_firstbunch_" + bx_obj[i],
557  "L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV #phi for firstbunch bunch BX=" + bx_obj[i] + ";#phi",
558  25,
559  -3.2,
560  3.2));
561  etsum_eta_phi_METHF_firstbunch.push_back(ibooker.book1D(
562  "etsum_phi_bx_METHF_firstbunch_" + bx_obj[i],
563  "L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV #phi for firstbunch bunch BX=" + bx_obj[i] + ";#phi",
564  25,
565  -3.2,
566  3.2));
567  etsum_eta_phi_MHT_firstbunch.push_back(ibooker.book1D(
568  "etsum_phi_bx_MHT_firstbunch_" + bx_obj[i],
569  "L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV #phi for firstbunch bunch BX=" + bx_obj[i] + ";#phi",
570  25,
571  -3.2,
572  3.2));
573  etsum_eta_phi_MHTHF_firstbunch.push_back(ibooker.book1D(
574  "etsum_phi_bx_MHTHF_firstbunch_" + bx_obj[i],
575  "L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV #phi for firstbunch bunch BX=" + bx_obj[i] + ";#phi",
576  25,
577  -3.2,
578  3.2));
579  }
581  ibooker.book1D("denominator_etsum_firstbunch_MET",
582  "Denominator for First Bunch for L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
583  25,
584  -3.2,
585  3.2);
587  ibooker.book1D("denominator_etsum_firstbunch_METHF",
588  "Denominator for First Bunch for L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
589  25,
590  -3.2,
591  3.2);
593  ibooker.book1D("denominator_etsum_firstbunch_MHT",
594  "Denominator for First Bunch for L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
595  25,
596  -3.2,
597  3.2);
599  ibooker.book1D("denominator_etsum_firstbunch_MHTHF",
600  "Denominator for First Bunch for L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
601  25,
602  -3.2,
603  3.2);
604  }
605 
606  // last bunch in train
607  if (algoBitLastBxInTrain_ > -1) {
608  ibooker.setCurrentFolder(monitorDir_ + "/L1TMuon/timing/Last_bunch");
609  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
610  muons_eta_phi_lastbunch.push_back(
611  ibooker.book2D("muons_eta_phi_bx_lastbunch_" + bx_obj[i + 2],
612  "L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr +
613  " #eta vs #phi for last bunch BX=" + bx_obj[i] + ";#eta;#phi",
614  25,
615  -2.5,
616  2.5,
617  25,
618  -3.2,
619  3.2));
620  }
622  "denominator_muons_lastbunch",
623  "Denominator for Last Bunch for L1T Muon p_{T}#geq" + muonPtCutStr + " GeV qual#geq" + muonQualCutStr,
624  25,
625  -2.5,
626  2.5,
627  25,
628  -3.2,
629  3.2);
630 
631  ibooker.setCurrentFolder(monitorDir_ + "/L1TJet/timing/Last_bunch");
632  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
633  jet_eta_phi_lastbunch.push_back(ibooker.book2D(
634  "jet_eta_phi_bx_lastbunch_" + bx_obj[i + 2],
635  "L1T Jet p_{T}#geq" + jetPtCutStr + " GeV #eta vs #phi for last bunch BX=" + bx_obj[i] + ";#eta;#phi",
636  50,
637  -5.,
638  5.,
639  25,
640  -3.2,
641  3.2));
642  }
644  ibooker.book2D("denominator_jet_lastbunch",
645  "Denominator for Last Bunch for L1T Jet p_{T}#geq" + jetPtCutStr + " GeV;#eta;#phi",
646  50,
647  -5.,
648  5.,
649  25,
650  -3.2,
651  3.2);
652 
653  for (const auto egammaPtCut : egammaPtCuts_) {
654  auto egammaPtCutStr = std::to_string(egammaPtCut);
655  egammaPtCutStr.resize(egammaPtCutStr.size() - 5); // cut some decimal digits
656  auto egammaPtCutStrAlpha = egammaPtCutStr;
657  std::replace(egammaPtCutStrAlpha.begin(),
658  egammaPtCutStrAlpha.end(),
659  '.',
660  'p'); // replace the decimal dot with a 'p' to please the DQMStore
661 
662  ibooker.setCurrentFolder(monitorDir_ + "/L1TEGamma/timing/Last_bunch/ptmin_" + egammaPtCutStrAlpha + "_gev");
663  std::vector<MonitorElement*> vHelper;
664  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
665  vHelper.push_back(ibooker.book2D("egamma_eta_phi_bx_lastbunch_" + bx_obj[i + 2],
666  "L1T EGamma p_{T}#geq" + egammaPtCutStr +
667  " GeV #eta vs #phi for first bunch BX=" + bx_obj[i] + ";#eta;#phi",
668  30,
669  -3.,
670  3.,
671  25,
672  -3.2,
673  3.2));
674  }
675  egamma_eta_phi_lastbunch.push_back(vHelper);
676 
678  ibooker.book2D("denominator_egamma_lastbunch",
679  "Denominator for Last Bunch for L1T EGamma p_{T}#geq" + egammaPtCutStr + " GeV;#eta;#phi",
680  30,
681  -3.,
682  3.,
683  25,
684  -3.2,
685  3.2));
686 
688  ibooker.book2D("egamma_iso_bx_ieta_lastbunch_ptmin" + egammaPtCutStrAlpha,
689  "L1T EGamma iso with pT#geq" + egammaPtCutStr +
690  " GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta",
691  5,
692  -2.5,
693  2.5,
694  70,
695  -70,
696  70));
697 
699  ibooker.book2D("egamma_noniso_bx_ieta_lastbunch_ptmin" + egammaPtCutStrAlpha,
700  "L1T EGamma non iso with pT#geq" + egammaPtCutStr +
701  " GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta",
702  5,
703  -2.5,
704  2.5,
705  70,
706  -70,
707  70));
708  }
709 
710  ibooker.setCurrentFolder(monitorDir_ + "/L1TTau/timing/Last_bunch");
711  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
712  tau_eta_phi_lastbunch.push_back(ibooker.book2D(
713  "tau_eta_phi_bx_lastbunch_" + bx_obj[i + 2],
714  "L1T Tau p_{T}#geq" + tauPtCutStr + " GeV #eta vs #phi for last bunch BX=" + bx_obj[i] + ";#eta;#phi",
715  30,
716  -3.,
717  3.,
718  25,
719  -3.2,
720  3.2));
721  }
723  ibooker.book2D("denominator_tau_lastbunch",
724  "Denominator for Last Bunch for L1T Tau p_{T}#geq" + tauPtCutStr + " GeV;#eta;#phi",
725  30,
726  -3.,
727  3.,
728  25,
729  -3.2,
730  3.2);
731 
732  ibooker.setCurrentFolder(monitorDir_ + "/L1TEtSum/timing/Last_bunch");
733  for (unsigned int i = 0; i < bxrange_ - 2; ++i) {
734  etsum_eta_phi_MET_lastbunch.push_back(ibooker.book1D(
735  "etsum_phi_bx_MET_lastbunch_" + bx_obj[i + 2],
736  "L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV #phi for lastbunch bunch BX=" + bx_obj[i] + ";#phi",
737  25,
738  -3.2,
739  3.2));
740  etsum_eta_phi_METHF_lastbunch.push_back(ibooker.book1D(
741  "etsum_phi_bx_METHF_lastbunch_" + bx_obj[i + 2],
742  "L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV #phi for lastbunch bunch BX=" + bx_obj[i] + ";#phi",
743  25,
744  -3.2,
745  3.2));
746  etsum_eta_phi_MHT_lastbunch.push_back(ibooker.book1D(
747  "etsum_phi_bx_MHT_lastbunch_" + bx_obj[i + 2],
748  "L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV #phi for lastbunch bunch BX=" + bx_obj[i] + ";#phi",
749  25,
750  -3.2,
751  3.2));
752  etsum_eta_phi_MHTHF_lastbunch.push_back(ibooker.book1D(
753  "etsum_phi_bx_MHTHF_lastbunch_" + bx_obj[i + 2],
754  "L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV #phi for lastbunch bunch BX=" + bx_obj[i] + ";#phi",
755  25,
756  -3.2,
757  3.2));
758  }
760  ibooker.book1D("denominator_etsum_lastbunch_MET",
761  "Denominator for Last Bunch for L1T EtSum MET p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
762  25,
763  -3.2,
764  3.2);
766  ibooker.book1D("denominator_etsum_lastbunch_METHF",
767  "Denominator for Last Bunch for L1T EtSum METHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
768  25,
769  -3.2,
770  3.2);
772  ibooker.book1D("denominator_etsum_lastbunch_MHT",
773  "Denominator for Last Bunch for L1T EtSum MHT p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
774  25,
775  -3.2,
776  3.2);
778  ibooker.book1D("denominator_etsum_lastbunch_MHTHF",
779  "Denominator for Last Bunch for L1T EtSum MHTHF p_{T}#geq" + etsumPtCutStr + " GeV;#phi",
780  25,
781  -3.2,
782  3.2);
783  }
784 }
785 
787  if (verbose_)
788  edm::LogInfo("L1TObjectsTiming") << "L1TObjectsTiming: analyze..." << std::endl;
789 
790  // Muon Collection
792  e.getByToken(ugmtMuonToken_, MuonBxCollection);
793  // Jet Collection
796  // EGamma Collection
799  // Tau Collection
802  // EtSum Collection
805 
806  // Open uGT readout record
808  e.getByToken(l1tStage2uGtProducer_, uGtAlgs);
809 
810  // Filling eta-phi map for muons for BX=-2,-1,0,+1,+2
811  for (int itBX = MuonBxCollection->getFirstBX(); itBX <= MuonBxCollection->getLastBX(); ++itBX) {
813  Muon != MuonBxCollection->end(itBX);
814  ++Muon) {
815  if (Muon->pt() >= muonPtCut_ and Muon->hwQual() >= muonQualCut_) {
816  denominator_muons->Fill(Muon->eta(), Muon->phi());
817  // the correlation from itBX to respective index of the vector
818  int index = (int)itBX - std::min(0, 1 - (int)bxrange_ % 2 - (int)std::floor(bxrange_ / 2.));
819  muons_eta_phi.at(index)->Fill(Muon->eta(), Muon->phi());
820  }
821  }
822  }
823 
824  // Filling eta-phi map for jets for BX=-2,-1,0,+1,+2
825  for (int itBX = JetBxCollection->getFirstBX(); itBX <= JetBxCollection->getLastBX(); ++itBX) {
827  ++jet) {
828  if (jet->pt() >= jetPtCut_) {
829  denominator_jet->Fill(jet->eta(), jet->phi());
830  int index =
831  itBX - std::min(0,
832  1 - (int)bxrange_ % 2 -
833  (int)std::floor(bxrange_ /
834  2.)); // the correlation from itBX to respective index of the vector
835  jet_eta_phi.at(index)->Fill(jet->eta(), jet->phi());
836  }
837  }
838  }
839 
840  // Filling eta-phi map for egamma for BX=-2,-1,0,+1,+2
841  for (int itBX = EGammaBxCollection->getFirstBX(); itBX <= EGammaBxCollection->getLastBX(); ++itBX) {
843  egamma != EGammaBxCollection->end(itBX);
844  ++egamma) {
845  if (egamma->pt() >= egammaPtCut_) {
846  denominator_egamma->Fill(egamma->eta(), egamma->phi());
847  int index =
848  itBX - std::min(0,
849  1 - (int)bxrange_ % 2 -
850  (int)std::floor(bxrange_ /
851  2.)); // the correlation from itBX to respective index of the vector
852  egamma_eta_phi.at(index)->Fill(egamma->eta(), egamma->phi());
853  }
854  }
855  }
856 
857  // Filling eta-phi map for tau for BX=-2,-1,0,+1,+2
858  for (int itBX = TauBxCollection->getFirstBX(); itBX <= TauBxCollection->getLastBX(); ++itBX) {
860  ++tau) {
861  if (tau->pt() >= tauPtCut_) {
862  denominator_tau->Fill(tau->eta(), tau->phi());
863  int index =
864  itBX - std::min(0,
865  1 - (int)bxrange_ % 2 -
866  (int)std::floor(bxrange_ /
867  2.)); // the correlation from itBX to respective index of the vector
868  tau_eta_phi.at(index)->Fill(tau->eta(), tau->phi());
869  }
870  }
871  }
872 
873  // Filling eta-phi map for etsum for BX=-2,-1,0,+1,+2
874  for (int itBX = EtSumBxCollection->getFirstBX(); itBX <= EtSumBxCollection->getLastBX(); ++itBX) {
876  EtSum != EtSumBxCollection->end(itBX);
877  ++EtSum) {
878  if (EtSum->pt() >= etsumPtCut_) {
879  int index =
880  itBX - std::min(0,
881  1 - (int)bxrange_ % 2 -
882  (int)std::floor(bxrange_ /
883  2.)); // the correlation from itBX to respective index of the vector
884  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
885  etsum_eta_phi_MET.at(index)->Fill(EtSum->phi());
886  denominator_etsum_MET->Fill(EtSum->phi());
887  } else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
888  etsum_eta_phi_METHF.at(index)->Fill(EtSum->phi());
889  denominator_etsum_METHF->Fill(EtSum->phi());
890 
891  } else if (l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
892  etsum_eta_phi_MHT.at(index)->Fill(EtSum->phi());
893  denominator_etsum_MHT->Fill(EtSum->phi());
894 
895  } else if (l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
896  etsum_eta_phi_MHTHF.at(index)->Fill(EtSum->phi());
897  denominator_etsum_MHTHF->Fill(EtSum->phi());
898  }
899  }
900  }
901  }
902 
903  // Find out in which BX the first collision in train, isolated bunch, and last collision in train have fired.
904  // In case of pre firing it will be in BX 1 or BX 2 and this will determine the BX shift that
905  // will be applied to the timing histogram later.
906  int bxShiftFirst = -999;
907  int bxShiftIso = -999;
908  int bxShiftLast = -999;
909  for (int bx = uGtAlgs->getFirstBX(); bx <= uGtAlgs->getLastBX(); ++bx) {
910  for (GlobalAlgBlkBxCollection::const_iterator itr = uGtAlgs->begin(bx); itr != uGtAlgs->end(bx); ++itr) {
911  // first bunch in train
912  if (algoBitFirstBxInTrain_ != -1) {
913  bool bit = false;
914  switch (useAlgoDecision_) {
915  case 0:
916  bit = itr->getAlgoDecisionInitial(algoBitFirstBxInTrain_);
917  break;
918  case 1:
919  bit = itr->getAlgoDecisionInterm(algoBitFirstBxInTrain_);
920  break;
921  case 2:
922  bit = itr->getAlgoDecisionFinal(algoBitFirstBxInTrain_);
923  break;
924  }
925  if (bit) {
926  bxShiftFirst = bx;
927  }
928  }
929  // last bunch in train
930  if (algoBitLastBxInTrain_ != -1) {
931  bool bit = false;
932  switch (useAlgoDecision_) {
933  case 0:
934  bit = itr->getAlgoDecisionInitial(algoBitLastBxInTrain_);
935  break;
936  case 1:
937  bit = itr->getAlgoDecisionInterm(algoBitLastBxInTrain_);
938  break;
939  case 2:
940  bit = itr->getAlgoDecisionFinal(algoBitLastBxInTrain_);
941  break;
942  }
943  if (bit) {
944  bxShiftLast = bx;
945  }
946  }
947  // isolated bunch
948  if (algoBitIsoBx_ != -1) {
949  bool bit = false;
950  switch (useAlgoDecision_) {
951  case 0:
952  bit = itr->getAlgoDecisionInitial(algoBitIsoBx_);
953  break;
954  case 1:
955  bit = itr->getAlgoDecisionInterm(algoBitIsoBx_);
956  break;
957  case 2:
958  bit = itr->getAlgoDecisionFinal(algoBitIsoBx_);
959  break;
960  }
961  if (bit) {
962  bxShiftIso = bx;
963  }
964  }
965  }
966  }
967 
968  // fill the first bunch in train maps
969  if (bxShiftFirst > -999) {
970  // muons
971  for (int itBX = std::max(MuonBxCollection->getFirstBX(), MuonBxCollection->getFirstBX() + bxShiftFirst);
972  itBX <= std::min(MuonBxCollection->getLastBX(), MuonBxCollection->getLastBX() + bxShiftFirst);
973  ++itBX) {
974  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
975  if (index >= 0 and index < (int)muons_eta_phi_firstbunch.size()) {
977  muon != MuonBxCollection->end(itBX);
978  ++muon) { // Starting with Muons
979  if (muon->pt() >= muonPtCut_ and muon->hwQual() >= muonQualCut_) {
980  denominator_muons_firstbunch->Fill(muon->eta(), muon->phi());
981  muons_eta_phi_firstbunch.at(index)->Fill(muon->eta(), muon->phi());
982  }
983  }
984  }
985  }
986  // jets
987  for (int itBX = std::max(JetBxCollection->getFirstBX(), JetBxCollection->getFirstBX() + bxShiftFirst);
988  itBX <= std::min(JetBxCollection->getLastBX(), JetBxCollection->getLastBX() + bxShiftFirst);
989  ++itBX) {
990  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
991  if (index >= 0 and index < (int)jet_eta_phi_firstbunch.size()) {
993  ++jet) {
994  if (jet->pt() >= jetPtCut_) {
995  denominator_jet_firstbunch->Fill(jet->eta(), jet->phi());
996  jet_eta_phi_firstbunch.at(index)->Fill(jet->eta(), jet->phi());
997  }
998  }
999  }
1000  }
1001  // egammas
1002  for (int itBX = std::max(EGammaBxCollection->getFirstBX(), EGammaBxCollection->getFirstBX() + bxShiftFirst);
1003  itBX <= std::min(EGammaBxCollection->getLastBX(), EGammaBxCollection->getLastBX() + bxShiftFirst);
1004  ++itBX) {
1005  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
1007  egamma != EGammaBxCollection->end(itBX);
1008  ++egamma) {
1009  for (size_t i = 0; i < egammaPtCuts_.size(); ++i) {
1010  if (egamma->pt() >= egammaPtCuts_.at(i)) {
1011  if (index >= 0 and index < (int)egamma_eta_phi_firstbunch.size()) {
1012  denominator_egamma_firstbunch.at(i)->Fill(egamma->eta(), egamma->phi());
1013  egamma_eta_phi_firstbunch.at(i).at(index)->Fill(egamma->eta(), egamma->phi());
1014  }
1015  if ((bool)egamma->hwIso()) {
1016  egamma_iso_bx_ieta_firstbunch.at(i)->Fill(itBX - bxShiftFirst, egamma->hwEta());
1017  }
1018  egamma_noniso_bx_ieta_firstbunch.at(i)->Fill(itBX - bxShiftFirst, egamma->hwEta());
1019  }
1020  }
1021  }
1022  }
1023  // taus
1024  for (int itBX = std::max(TauBxCollection->getFirstBX(), TauBxCollection->getFirstBX() + bxShiftFirst);
1025  itBX <= std::min(TauBxCollection->getLastBX(), TauBxCollection->getLastBX() + bxShiftFirst);
1026  ++itBX) {
1027  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
1028  if (index >= 0 and index < (int)tau_eta_phi_firstbunch.size()) {
1029  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX);
1030  ++tau) {
1031  if (tau->pt() >= tauPtCut_) {
1032  denominator_tau_firstbunch->Fill(tau->eta(), tau->phi());
1033  tau_eta_phi_firstbunch.at(index)->Fill(tau->eta(), tau->phi());
1034  }
1035  }
1036  }
1037  }
1038  // etsums
1039  for (int itBX = std::max(EtSumBxCollection->getFirstBX(), EtSumBxCollection->getFirstBX() + bxShiftFirst);
1040  itBX <= std::min(EtSumBxCollection->getLastBX(), EtSumBxCollection->getLastBX() + bxShiftFirst);
1041  ++itBX) {
1042  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
1043  if (index >= 0) {
1045  EtSum != EtSumBxCollection->end(itBX);
1046  ++EtSum) {
1047  if (EtSum->pt() >= etsumPtCut_) {
1048  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
1049  if (index < (int)etsum_eta_phi_MET_firstbunch.size()) {
1050  denominator_etsum_firstbunch_MET->Fill(EtSum->phi());
1051  etsum_eta_phi_MET_firstbunch.at(index)->Fill(EtSum->phi());
1052  }
1053  } else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
1054  if (index < (int)etsum_eta_phi_METHF_firstbunch.size()) {
1056  etsum_eta_phi_METHF_firstbunch.at(index)->Fill(EtSum->phi());
1057  }
1058  } else if (l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
1059  if (index < (int)etsum_eta_phi_MHT_firstbunch.size()) {
1060  denominator_etsum_firstbunch_MHT->Fill(EtSum->phi());
1061  etsum_eta_phi_MHT_firstbunch.at(index)->Fill(EtSum->phi());
1062  }
1063  } else if (l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
1064  if (index < (int)etsum_eta_phi_MHTHF_firstbunch.size()) {
1066  etsum_eta_phi_MHTHF_firstbunch.at(index)->Fill(EtSum->phi());
1067  }
1068  }
1069  }
1070  }
1071  }
1072  }
1073  }
1074 
1075  // fill the last bunch in train maps
1076  if (bxShiftLast > -999) {
1077  // muons
1078  for (int itBX = std::max(MuonBxCollection->getFirstBX(), MuonBxCollection->getFirstBX() + bxShiftLast);
1079  itBX <= std::min(MuonBxCollection->getLastBX(), MuonBxCollection->getLastBX() + bxShiftLast);
1080  ++itBX) {
1081  auto correctedBx = itBX - bxShiftLast;
1082  if (correctedBx >= 0 and correctedBx < (int)muons_eta_phi_lastbunch.size()) {
1084  muon != MuonBxCollection->end(itBX);
1085  ++muon) { // Starting with Muons
1086  if (muon->pt() >= muonPtCut_ and muon->hwQual() >= muonQualCut_) {
1087  denominator_muons_lastbunch->Fill(muon->eta(), muon->phi());
1088  muons_eta_phi_lastbunch.at(correctedBx)->Fill(muon->eta(), muon->phi());
1089  }
1090  }
1091  }
1092  }
1093  // jets
1094  for (int itBX = std::max(JetBxCollection->getFirstBX(), JetBxCollection->getFirstBX() + bxShiftLast);
1095  itBX <= std::min(JetBxCollection->getLastBX(), JetBxCollection->getLastBX() + bxShiftLast);
1096  ++itBX) {
1097  auto correctedBx = itBX - bxShiftLast;
1098  if (correctedBx >= 0 and correctedBx < (int)jet_eta_phi_lastbunch.size()) {
1099  for (l1t::JetBxCollection::const_iterator jet = JetBxCollection->begin(itBX); jet != JetBxCollection->end(itBX);
1100  ++jet) {
1101  if (jet->pt() >= jetPtCut_) {
1102  denominator_jet_lastbunch->Fill(jet->eta(), jet->phi());
1103  jet_eta_phi_lastbunch.at(correctedBx)->Fill(jet->eta(), jet->phi());
1104  }
1105  }
1106  }
1107  }
1108  // egammas
1109  for (int itBX = std::max(EGammaBxCollection->getFirstBX(), EGammaBxCollection->getFirstBX() + bxShiftLast);
1110  itBX <= std::min(EGammaBxCollection->getLastBX(), EGammaBxCollection->getLastBX() + bxShiftLast);
1111  ++itBX) {
1112  auto correctedBx = itBX - bxShiftLast;
1114  egamma != EGammaBxCollection->end(itBX);
1115  ++egamma) {
1116  for (size_t i = 0; i < egammaPtCuts_.size(); ++i) {
1117  if (egamma->pt() >= egammaPtCuts_.at(i)) {
1118  if (correctedBx >= 0 and correctedBx < (int)egamma_eta_phi_lastbunch.size()) {
1119  denominator_egamma_lastbunch.at(i)->Fill(egamma->eta(), egamma->phi());
1120  egamma_eta_phi_lastbunch.at(i).at(correctedBx)->Fill(egamma->eta(), egamma->phi());
1121  }
1122  if ((bool)egamma->hwIso()) {
1123  egamma_iso_bx_ieta_lastbunch.at(i)->Fill(correctedBx, egamma->hwEta());
1124  }
1125  egamma_noniso_bx_ieta_lastbunch.at(i)->Fill(correctedBx, egamma->hwEta());
1126  }
1127  }
1128  }
1129  }
1130  // taus
1131  for (int itBX = std::max(TauBxCollection->getFirstBX(), TauBxCollection->getFirstBX() + bxShiftLast);
1132  itBX <= std::min(TauBxCollection->getLastBX(), TauBxCollection->getLastBX() + bxShiftLast);
1133  ++itBX) {
1134  auto correctedBx = itBX - bxShiftLast;
1135  if (correctedBx >= 0 and correctedBx < (int)tau_eta_phi_lastbunch.size()) {
1136  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX);
1137  ++tau) {
1138  if (tau->pt() >= tauPtCut_) {
1139  denominator_tau_lastbunch->Fill(tau->eta(), tau->phi());
1140  tau_eta_phi_lastbunch.at(correctedBx)->Fill(tau->eta(), tau->phi());
1141  }
1142  }
1143  }
1144  }
1145  // etsums
1146  for (int itBX = std::max(EtSumBxCollection->getFirstBX(), EtSumBxCollection->getFirstBX() + bxShiftLast);
1147  itBX <= std::min(EtSumBxCollection->getLastBX(), EtSumBxCollection->getLastBX() + bxShiftLast);
1148  ++itBX) {
1149  auto correctedBx = itBX - bxShiftLast;
1150  if (correctedBx >= 0) {
1152  EtSum != EtSumBxCollection->end(itBX);
1153  ++EtSum) {
1154  if (EtSum->pt() >= etsumPtCut_) {
1155  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
1156  if (correctedBx < (int)etsum_eta_phi_MET_lastbunch.size()) {
1157  denominator_etsum_lastbunch_MET->Fill(EtSum->phi());
1158  etsum_eta_phi_MET_lastbunch.at(correctedBx)->Fill(EtSum->phi());
1159  }
1160  } else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
1161  if (correctedBx < (int)etsum_eta_phi_METHF_lastbunch.size()) {
1162  denominator_etsum_lastbunch_METHF->Fill(EtSum->phi());
1163  etsum_eta_phi_METHF_lastbunch.at(correctedBx)->Fill(EtSum->phi());
1164  }
1165  } else if (l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
1166  if (correctedBx < (int)etsum_eta_phi_MHT_lastbunch.size()) {
1167  denominator_etsum_lastbunch_MHT->Fill(EtSum->phi());
1168  etsum_eta_phi_MHT_lastbunch.at(correctedBx)->Fill(EtSum->phi());
1169  }
1170  } else if (l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
1171  if (correctedBx < (int)etsum_eta_phi_MHTHF_lastbunch.size()) {
1172  denominator_etsum_lastbunch_MHTHF->Fill(EtSum->phi());
1173  etsum_eta_phi_MHTHF_lastbunch.at(correctedBx)->Fill(EtSum->phi());
1174  }
1175  }
1176  }
1177  }
1178  }
1179  }
1180  }
1181 
1182  // fill the isolated bunch
1183  if (bxShiftIso > -999) {
1184  // muons
1185  for (int itBX = std::max(MuonBxCollection->getFirstBX(), MuonBxCollection->getFirstBX() + bxShiftIso);
1186  itBX <= std::min(MuonBxCollection->getLastBX(), MuonBxCollection->getLastBX() + bxShiftIso);
1187  ++itBX) {
1188  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
1189  if (index >= 0 and index < (int)muons_eta_phi_isolated.size()) {
1191  muon != MuonBxCollection->end(itBX);
1192  ++muon) { // Starting with Muons
1193  if (muon->pt() >= muonPtCut_ and muon->hwQual() >= muonQualCut_) {
1194  denominator_muons_isolated->Fill(muon->eta(), muon->phi());
1195  muons_eta_phi_isolated.at(index)->Fill(muon->eta(), muon->phi());
1196  }
1197  }
1198  }
1199  }
1200  // jets
1201  for (int itBX = std::max(JetBxCollection->getFirstBX(), JetBxCollection->getFirstBX() + bxShiftIso);
1202  itBX <= std::min(JetBxCollection->getLastBX(), JetBxCollection->getLastBX() + bxShiftIso);
1203  ++itBX) {
1204  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
1205  if (index >= 0 and index < (int)jet_eta_phi_isolated.size()) {
1206  for (l1t::JetBxCollection::const_iterator jet = JetBxCollection->begin(itBX); jet != JetBxCollection->end(itBX);
1207  ++jet) {
1208  if (jet->pt() >= jetPtCut_) {
1209  denominator_jet_isolated->Fill(jet->eta(), jet->phi());
1210  jet_eta_phi_isolated.at(index)->Fill(jet->eta(), jet->phi());
1211  }
1212  }
1213  }
1214  }
1215  // egammas
1216  for (int itBX = std::max(EGammaBxCollection->getFirstBX(), EGammaBxCollection->getFirstBX() + bxShiftIso);
1217  itBX <= std::min(EGammaBxCollection->getLastBX(), EGammaBxCollection->getLastBX() + bxShiftIso);
1218  ++itBX) {
1219  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
1221  egamma != EGammaBxCollection->end(itBX);
1222  ++egamma) {
1223  for (size_t i = 0; i < egammaPtCuts_.size(); ++i) {
1224  if (egamma->pt() >= egammaPtCuts_.at(i)) {
1225  if (index >= 0 and index < (int)egamma_eta_phi_isolated.size()) {
1226  denominator_egamma_isolated.at(i)->Fill(egamma->eta(), egamma->phi());
1227  egamma_eta_phi_isolated.at(i).at(index)->Fill(egamma->eta(), egamma->phi());
1228  }
1229  if ((bool)egamma->hwIso()) {
1230  egamma_iso_bx_ieta_isolated.at(i)->Fill(itBX - bxShiftIso, egamma->hwEta());
1231  }
1232  egamma_noniso_bx_ieta_isolated.at(i)->Fill(itBX - bxShiftIso, egamma->hwEta());
1233  }
1234  }
1235  }
1236  }
1237  // taus
1238  for (int itBX = std::max(TauBxCollection->getFirstBX(), TauBxCollection->getFirstBX() + bxShiftIso);
1239  itBX <= std::min(TauBxCollection->getLastBX(), TauBxCollection->getLastBX() + bxShiftIso);
1240  ++itBX) {
1241  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
1242  if (index >= 0 and index < (int)tau_eta_phi_isolated.size()) {
1243  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX);
1244  ++tau) {
1245  if (tau->pt() >= tauPtCut_) {
1246  denominator_tau_isolated->Fill(tau->eta(), tau->phi());
1247  tau_eta_phi_isolated.at(index)->Fill(tau->eta(), tau->phi());
1248  }
1249  }
1250  }
1251  }
1252  // etsums
1253  for (int itBX = std::max(EtSumBxCollection->getFirstBX(), EtSumBxCollection->getFirstBX() + bxShiftIso);
1254  itBX <= std::min(EtSumBxCollection->getLastBX(), EtSumBxCollection->getLastBX() + bxShiftIso);
1255  ++itBX) {
1256  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
1257  if (index >= 0) {
1259  EtSum != EtSumBxCollection->end(itBX);
1260  ++EtSum) {
1261  if (EtSum->pt() >= etsumPtCut_) {
1262  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
1263  if (index < (int)etsum_eta_phi_MET_isolated.size()) {
1264  denominator_etsum_isolated_MET->Fill(EtSum->phi());
1265  etsum_eta_phi_MET_isolated.at(index)->Fill(EtSum->phi());
1266  }
1267  } else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
1268  if (index < (int)etsum_eta_phi_METHF_isolated.size()) {
1269  denominator_etsum_isolated_METHF->Fill(EtSum->phi());
1270  etsum_eta_phi_METHF_isolated.at(index)->Fill(EtSum->phi());
1271  }
1272  } else if (l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
1273  if (index < (int)etsum_eta_phi_MHT_isolated.size()) {
1274  denominator_etsum_isolated_MHT->Fill(EtSum->phi());
1275  etsum_eta_phi_MHT_isolated.at(index)->Fill(EtSum->phi());
1276  }
1277  } else if (l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
1278  if (index < (int)etsum_eta_phi_MHTHF_isolated.size()) {
1279  denominator_etsum_isolated_MHTHF->Fill(EtSum->phi());
1280  etsum_eta_phi_MHTHF_isolated.at(index)->Fill(EtSum->phi());
1281  }
1282  }
1283  }
1284  }
1285  }
1286  }
1287  }
1288 }
MonitorElement * denominator_etsum_METHF
int getLastBX() const
BXVector< EGamma > EGammaBxCollection
Definition: EGamma.h:10
std::vector< MonitorElement * > jet_eta_phi_firstbunch
MonitorElement * denominator_etsum_lastbunch_MHT
int getFirstBX() const
edm::EDGetTokenT< l1t::EGammaBxCollection > stage2CaloLayer2EGammaToken_
MonitorElement * denominator_muons_isolated
edm::EDGetTokenT< GlobalAlgBlkBxCollection > l1tStage2uGtProducer_
std::vector< MonitorElement * > etsum_eta_phi_MET_isolated
std::vector< MonitorElement * > etsum_eta_phi_METHF_isolated
std::vector< MonitorElement * > muons_eta_phi_isolated
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * denominator_etsum_MET
std::vector< MonitorElement * > egamma_eta_phi
std::vector< std::vector< MonitorElement * > > egamma_eta_phi_lastbunch
MonitorElement * denominator_etsum_isolated_MHTHF
MonitorElement * denominator_muons_firstbunch
std::vector< MonitorElement * > jet_eta_phi_lastbunch
void dqmBeginRun(const edm::Run &, const edm::EventSetup &) override
std::vector< MonitorElement * > tau_eta_phi_lastbunch
void analyze(const edm::Event &, const edm::EventSetup &) override
std::vector< MonitorElement * > denominator_egamma_isolated
MonitorElement * denominator_etsum_MHT
const unsigned int bxrange_
def replace(string, replacements)
delete x;
Definition: CaloConfig.h:22
BXVector< Tau > TauBxCollection
Definition: Tau.h:10
std::vector< MonitorElement * > etsum_eta_phi_MET_firstbunch
MonitorElement * denominator_etsum_isolated_METHF
static std::string to_string(const XMLCh *ch)
std::vector< std::vector< MonitorElement * > > egamma_eta_phi_isolated
std::vector< MonitorElement * > egamma_iso_bx_ieta_firstbunch
MonitorElement * denominator_tau_isolated
std::vector< MonitorElement * > etsum_eta_phi_MHT_lastbunch
MonitorElement * denominator_etsum_firstbunch_MET
MonitorElement * denominator_etsum_firstbunch_MHT
const_iterator begin(int bx) const
T getUntrackedParameter(std::string const &, T const &) const
void Fill(long long x)
std::vector< MonitorElement * > muons_eta_phi_lastbunch
MonitorElement * denominator_etsum_MHTHF
std::vector< MonitorElement * > etsum_eta_phi_MHT
std::vector< T >::const_iterator const_iterator
Definition: BXVector.h:18
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
BXVector< EtSum > EtSumBxCollection
Definition: EtSum.h:10
MonitorElement * denominator_egamma
std::vector< MonitorElement * > etsum_eta_phi_MET_lastbunch
Definition: Muon.py:1
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::vector< MonitorElement * > denominator_egamma_firstbunch
MonitorElement * denominator_tau_lastbunch
std::vector< MonitorElement * > jet_eta_phi
std::vector< MonitorElement * > etsum_eta_phi_METHF_firstbunch
std::vector< MonitorElement * > etsum_eta_phi_MHTHF_isolated
L1TObjectsTiming(const edm::ParameterSet &ps)
edm::EDGetTokenT< l1t::MuonBxCollection > ugmtMuonToken_
MonitorElement * denominator_tau_firstbunch
std::vector< std::vector< MonitorElement * > > egamma_eta_phi_firstbunch
const std::string algoNameIsoBx_
MonitorElement * denominator_etsum_lastbunch_MHTHF
MonitorElement * denominator_muons
std::vector< MonitorElement * > muons_eta_phi_firstbunch
std::vector< MonitorElement * > egamma_noniso_bx_ieta_lastbunch
std::vector< MonitorElement * > etsum_eta_phi_MHTHF_lastbunch
edm::EDGetTokenT< l1t::EtSumBxCollection > stage2CaloLayer2EtSumToken_
unsigned int useAlgoDecision_
edm::EDGetTokenT< l1t::JetBxCollection > stage2CaloLayer2JetToken_
edm::EDGetTokenT< l1t::TauBxCollection > stage2CaloLayer2TauToken_
std::vector< MonitorElement * > egamma_noniso_bx_ieta_firstbunch
std::vector< MonitorElement * > tau_eta_phi_isolated
Log< level::Info, false > LogInfo
std::vector< MonitorElement * > etsum_eta_phi_METHF
std::vector< MonitorElement * > etsum_eta_phi_MHTHF
BXVector< Muon > MuonBxCollection
Definition: Muon.h:11
std::vector< MonitorElement * > etsum_eta_phi_MHTHF_firstbunch
std::vector< MonitorElement * > tau_eta_phi
BXVector< Jet > JetBxCollection
Definition: Jet.h:10
MonitorElement * denominator_etsum_firstbunch_METHF
MonitorElement * denominator_jet_lastbunch
std::string monitorDir_
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
MonitorElement * denominator_jet
std::vector< double > egammaPtCuts_
std::vector< MonitorElement * > egamma_noniso_bx_ieta_isolated
std::vector< MonitorElement * > etsum_eta_phi_MHT_isolated
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< MonitorElement * > etsum_eta_phi_METHF_lastbunch
std::vector< MonitorElement * > egamma_iso_bx_ieta_lastbunch
MonitorElement * denominator_muons_lastbunch
const std::string algoNameLastBxInTrain_
std::vector< MonitorElement * > etsum_eta_phi_MET
MonitorElement * denominator_tau
~L1TObjectsTiming() override
std::vector< MonitorElement * > jet_eta_phi_isolated
const_iterator end(int bx) const
std::vector< MonitorElement * > egamma_iso_bx_ieta_isolated
HLT enums.
MonitorElement * denominator_etsum_isolated_MET
MonitorElement * denominator_etsum_firstbunch_MHTHF
std::vector< MonitorElement * > denominator_egamma_lastbunch
Log< level::Warning, false > LogWarning
std::vector< MonitorElement * > muons_eta_phi
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
MonitorElement * denominator_etsum_lastbunch_METHF
MonitorElement * denominator_etsum_isolated_MHT
const std::string algoNameFirstBxInTrain_
std::vector< MonitorElement * > etsum_eta_phi_MHT_firstbunch
std::shared_ptr< l1t::L1TGlobalUtil > gtUtil_
MonitorElement * denominator_jet_firstbunch
MonitorElement * denominator_jet_isolated
Definition: Run.h:45
MonitorElement * denominator_etsum_lastbunch_MET
std::vector< MonitorElement * > tau_eta_phi_firstbunch