CMS 3D CMS Logo

L1TObjectsTiming.cc
Go to the documentation of this file.
2 
3 
5  : ugmtMuonToken_(consumes<l1t::MuonBxCollection>(ps.getParameter<edm::InputTag>("muonProducer"))),
6  stage2CaloLayer2JetToken_(consumes<l1t::JetBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2JetProducer"))),
7  stage2CaloLayer2EGammaToken_(consumes<l1t::EGammaBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2EGammaProducer"))),
8  stage2CaloLayer2TauToken_(consumes<l1t::TauBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2TauProducer"))),
9  stage2CaloLayer2EtSumToken_(consumes<l1t::EtSumBxCollection>(ps.getParameter<edm::InputTag>("stage2CaloLayer2EtSumProducer"))),
10  l1tStage2uGtProducer_(consumes<GlobalAlgBlkBxCollection>(ps.getParameter<edm::InputTag>("ugtProducer"))),
11  monitorDir_(ps.getUntrackedParameter<std::string>("monitorDir")),
12  verbose_(ps.getUntrackedParameter<bool>("verbose")),
13  gtUtil_(new l1t::L1TGlobalUtil(ps, consumesCollector(), *this, ps.getParameter<edm::InputTag>("ugtProducer"), ps.getParameter<edm::InputTag>("ugtProducer"))),
14  algoBitFirstBxInTrain_(-1),
15  algoBitLastBxInTrain_(-1),
16  algoBitIsoBx_(-1),
17  algoNameFirstBxInTrain_(ps.getUntrackedParameter<std::string>("firstBXInTrainAlgo","")),
18  algoNameLastBxInTrain_(ps.getUntrackedParameter<std::string>("lastBXInTrainAlgo","")),
19  algoNameIsoBx_(ps.getUntrackedParameter<std::string>("isoBXAlgo","")),
20  bxrange_(5),
21  egammaPtCuts_(ps.getUntrackedParameter<std::vector<double>>("egammaPtCuts")),
22  jetPtCut_(ps.getUntrackedParameter<double>("jetPtCut")),
23  egammaPtCut_(0.),
24  tauPtCut_(ps.getUntrackedParameter<double>("tauPtCut")),
25  etsumPtCut_(ps.getUntrackedParameter<double>("etsumPtCut")),
26  muonPtCut_(ps.getUntrackedParameter<double>("muonPtCut")),
27  muonQualCut_(ps.getUntrackedParameter<int>("muonQualCut"))
28 {
29  if (ps.getUntrackedParameter<std::string>("useAlgoDecision").find("final") == 0) {
30  useAlgoDecision_ = 2;
31  } else if (ps.getUntrackedParameter<std::string>("useAlgoDecision").find("intermediate") == 0) {
32  useAlgoDecision_ = 1;
33  } else {
34  useAlgoDecision_ = 0;
35  }
36 
37  // Take the first element of the cuts vector as the one to use for the all bunches histograms
38  if (not egammaPtCuts_.empty()) {
40  }
41 }
42 
44 
47  desc.add<edm::InputTag>("muonProducer")->setComment("L1T muons");;
48  desc.add<edm::InputTag>("stage2CaloLayer2JetProducer")->setComment("L1T jets");
49  desc.add<edm::InputTag>("stage2CaloLayer2EGammaProducer")->setComment("L1T egamma");
50  desc.add<edm::InputTag>("stage2CaloLayer2TauProducer")->setComment("L1T taus");
51  desc.add<edm::InputTag>("stage2CaloLayer2EtSumProducer")->setComment("L1T etsums");
52  desc.add<edm::InputTag>("ugtProducer")->setComment("uGT output");
53  desc.addUntracked<std::string>("monitorDir", "")->setComment("Target directory in the DQM file. Will be created if not existing.");
54  desc.addUntracked<bool>("verbose", false);
55  desc.addUntracked<std::string>("firstBXInTrainAlgo", "")->setComment("Pick the right algo name for L1 First Collision In Train");
56  desc.addUntracked<std::string>("lastBXInTrainAlgo", "")->setComment("Pick the right algo name for L1 Last Collision In Train");
57  desc.addUntracked<std::string>("isoBXAlgo", "")->setComment("Pick the right algo name for L1 Isolated Bunch");
58  desc.addUntracked<std::string>("useAlgoDecision", "initial")->setComment("Which algo decision should be checked [initial, intermediate, final].");
59  desc.addUntracked<std::vector<double>>("egammaPtCuts", {20., 10., 30.})->setComment("List if min egamma pT vaules");
60  desc.addUntracked<double>("jetPtCut", 20.)->setComment("Min jet pT");
61  desc.addUntracked<double>("tauPtCut", 20.)->setComment("Min tau pT");
62  desc.addUntracked<double>("etsumPtCut", 20.)->setComment("Min etsum pT");
63  desc.addUntracked<double>("muonPtCut", 8.)->setComment("Min muon pT");
64  desc.addUntracked<int>("muonQualCut", 12)->setComment("Min muon quality");
65  descriptions.add("l1tObjectsTiming", desc);
66 }
67 
69  // Get the trigger menu information
70  gtUtil_->retrieveL1Setup(c);
71 
72  // Get the algo bits needed for the timing histograms
73  if (!gtUtil_->getAlgBitFromName(algoNameFirstBxInTrain_, algoBitFirstBxInTrain_)) {
74  edm::LogWarning("L1TObjectsTiming") << "Algo \"" << algoNameFirstBxInTrain_ << "\" not found in the trigger menu " << gtUtil_->gtTriggerMenuName() << ". Could not retrieve algo bit number.";
75  }
76 
77  if (!gtUtil_->getAlgBitFromName(algoNameLastBxInTrain_, algoBitLastBxInTrain_)) {
78  edm::LogWarning("L1TObjectsTiming") << "Algo \"" << algoNameLastBxInTrain_ << "\" not found in the trigger menu " << gtUtil_->gtTriggerMenuName() << ". Could not retrieve algo bit number.";
79  }
80 
81  if (!gtUtil_->getAlgBitFromName(algoNameIsoBx_, algoBitIsoBx_)) {
82  edm::LogWarning("L1TObjectsTiming") << "Algo \"" << algoNameIsoBx_ << "\" not found in the trigger menu " << gtUtil_->gtTriggerMenuName() << ". Could not retrieve algo bit number.";
83  }
84 }
85 
87 
89 
90  std::array<std::string, 5> bx_obj { {"minus2", "minus1", "0", "plus1", "plus2"} };
91 
92  // generate cut value strings for the histogram titles
93  auto muonQualCutStr = std::to_string(muonQualCut_);
94  auto muonPtCutStr = std::to_string(muonPtCut_);
95  muonPtCutStr.resize(muonPtCutStr.size()-5); // cut some decimal digits
96 
97  auto jetPtCutStr = std::to_string(jetPtCut_);
98  jetPtCutStr.resize(jetPtCutStr.size()-5); // cut some decimal digits
99 
100  auto egammaPtCutStr = std::to_string(egammaPtCut_);
101  egammaPtCutStr.resize(egammaPtCutStr.size()-5); // cut some decimal digits
102 
103  auto tauPtCutStr = std::to_string(tauPtCut_);
104  tauPtCutStr.resize(tauPtCutStr.size()-5); // cut some decimal digits
105 
106  auto etsumPtCutStr = std::to_string(etsumPtCut_);
107  etsumPtCutStr.resize(etsumPtCutStr.size()-5); // cut some decimal digits
108 
109  // all bunches
110  ibooker.setCurrentFolder(monitorDir_+"/L1TMuon/timing");
111  for(unsigned int i=0; i<bxrange_; ++i) {
112  muons_eta_phi.push_back(ibooker.book2D("muons_eta_phi_bx_"+bx_obj[i],"L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr+" #eta vs #phi BX="+bx_obj[i]+";#eta;#phi", 25, -2.5, 2.5, 25, -3.2, 3.2));
113  }
114  denominator_muons = ibooker.book2D("denominator_muons","Denominator for L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr+";#eta;#phi", 25, -2.5, 2.5, 25, -3.2, 3.2);
115 
116  ibooker.setCurrentFolder(monitorDir_+"/L1TJet/timing");
117  for(unsigned int i=0; i<bxrange_; ++i) {
118  jet_eta_phi.push_back(ibooker.book2D("jet_eta_phi_bx_"+bx_obj[i],"L1T Jet p_{T}#geq"+jetPtCutStr+" GeV #eta vs #phi BX="+bx_obj[i]+";#eta;#phi", 50, -5., 5., 25, -3.2, 3.2));
119  }
120  denominator_jet = ibooker.book2D("denominator_jet","Denominator for L1T Jet p_{T}#geq"+jetPtCutStr+" GeV;#eta;#phi", 50, -5., 5., 25, -3.2, 3.2);
121 
122  ibooker.setCurrentFolder(monitorDir_+"/L1TEGamma/timing");
123  for(unsigned int i=0; i<bxrange_; ++i) {
124  egamma_eta_phi.push_back(ibooker.book2D("egamma_eta_phi_bx_"+bx_obj[i],"L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV #eta vs #phi BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
125  }
126  denominator_egamma = ibooker.book2D("denominator_egamma","Denominator for L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2);
127 
128  ibooker.setCurrentFolder(monitorDir_+"/L1TTau/timing");
129  for(unsigned int i=0; i<bxrange_; ++i) {
130  tau_eta_phi.push_back(ibooker.book2D("tau_eta_phi_bx_"+bx_obj[i],"L1T Tau p_{T}#geq"+tauPtCutStr+" GeV #eta vs #phi BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
131  }
132  denominator_tau = ibooker.book2D("denominator_tau","Denominator for L1T Tau p_{T}#geq"+tauPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2);
133 
134  ibooker.setCurrentFolder(monitorDir_+"/L1TEtSum/timing");
135  for(unsigned int i=0; i<bxrange_; ++i) {
136  etsum_eta_phi_MET.push_back(ibooker.book1D("etsum_phi_bx_MET_"+bx_obj[i],"L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV #phi BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
137  etsum_eta_phi_METHF.push_back(ibooker.book1D("etsum_phi_bx_METHF_"+bx_obj[i],"L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV #phi BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
138  etsum_eta_phi_MHT.push_back(ibooker.book1D("etsum_phi_bx_MHT_"+bx_obj[i],"L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV #phi BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
139  etsum_eta_phi_MHTHF.push_back(ibooker.book1D("etsum_phi_bx_MHTHF_"+bx_obj[i],"L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV #phi BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
140  }
141  denominator_etsum_MET = ibooker.book1D("denominator_etsum_MET","Denominator for L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
142  denominator_etsum_METHF = ibooker.book1D("denominator_etsum_METHF","Denominator for L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
143  denominator_etsum_MHT = ibooker.book1D("denominator_etsum_MHT","Denominator for L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
144  denominator_etsum_MHTHF = ibooker.book1D("denominator_etsum_MHTHF","Denominator for L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
145 
146  // isolated bunch
147  if(algoBitIsoBx_ > -1) {
148  ibooker.setCurrentFolder(monitorDir_+"/L1TMuon/timing/Isolated_bunch");
149  for(unsigned int i=0; i<bxrange_; ++i) {
150  muons_eta_phi_isolated.push_back(ibooker.book2D("muons_eta_phi_bx_isolated_"+bx_obj[i],"L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr+" #eta vs #phi for isolated bunch BX="+bx_obj[i]+";#eta;#phi", 25, -2.5, 2.5, 25, -3.2, 3.2));
151  }
152  denominator_muons_isolated = ibooker.book2D("denominator_muons_isolated","Denominator for Isolated Bunch for L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr, 25, -2.5, 2.5, 25, -3.2, 3.2);
153 
154  ibooker.setCurrentFolder(monitorDir_+"/L1TJet/timing/Isolated_bunch");
155  for(unsigned int i=0; i<bxrange_; ++i) {
156  jet_eta_phi_isolated.push_back(ibooker.book2D("jet_eta_phi_bx_isolated_"+bx_obj[i],"L1T Jet p_{T}#geq"+jetPtCutStr+" GeV #eta vs #phi for isolated bunch BX="+bx_obj[i]+";#eta;#phi", 50, -5., 5., 25, -3.2, 3.2));
157  }
158  denominator_jet_isolated = ibooker.book2D("denominator_jet_isolated","Denominator for Isolated Bunch for L1T Jet p_{T}#geq"+jetPtCutStr+" GeV;#eta;#phi", 50, -5., 5., 25, -3.2, 3.2);
159 
160  for (const auto egammaPtCut : egammaPtCuts_) {
161  auto egammaPtCutStr = std::to_string(egammaPtCut);
162  egammaPtCutStr.resize(egammaPtCutStr.size()-5); // cut some decimal digits
163  auto egammaPtCutStrAlpha = egammaPtCutStr;
164  std::replace(egammaPtCutStrAlpha.begin(), egammaPtCutStrAlpha.end(), '.', 'p'); // replace the decimal dot with a 'p' to please the DQMStore
165 
166  ibooker.setCurrentFolder(monitorDir_+"/L1TEGamma/timing/Isolated_bunch/ptmin_"+egammaPtCutStrAlpha+"_gev");
167  std::vector<MonitorElement*> vHelper;
168  for(unsigned int i=0; i<bxrange_; ++i) {
169  vHelper.push_back(ibooker.book2D("egamma_eta_phi_bx_isolated_"+bx_obj[i], "L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV #eta vs #phi for first bunch BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
170  }
171  egamma_eta_phi_isolated.push_back(vHelper);
172 
173  denominator_egamma_isolated.push_back(ibooker.book2D("denominator_egamma_isolated", "Denominator for Isolated Bunch for L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
174 
175  egamma_iso_bx_ieta_isolated.push_back(ibooker.book2D("egamma_iso_bx_ieta_isolated_ptmin"+egammaPtCutStrAlpha, "L1T EGamma iso with pT#geq"+egammaPtCutStr+" GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta", 5, -2.5, 2.5, 70, -70, 70));
176 
177  egamma_noniso_bx_ieta_isolated.push_back(ibooker.book2D("egamma_noniso_bx_ieta_isolated_ptmin"+egammaPtCutStrAlpha, "L1T EGamma non iso with pT#geq"+egammaPtCutStr+" GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta", 5, -2.5, 2.5, 70, -70, 70));
178  }
179 
180  ibooker.setCurrentFolder(monitorDir_+"/L1TTau/timing/Isolated_bunch");
181  for(unsigned int i=0; i<bxrange_; ++i) {
182  tau_eta_phi_isolated.push_back(ibooker.book2D("tau_eta_phi_bx_isolated_"+bx_obj[i],"L1T Tau p_{T}#geq"+tauPtCutStr+" GeV #eta vs #phi for isolated bunch BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
183  }
184  denominator_tau_isolated = ibooker.book2D("denominator_tau_isolated","Denominator for Isolated Bunch for L1T Tau p_{T}#geq"+tauPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2);
185 
186  ibooker.setCurrentFolder(monitorDir_+"/L1TEtSum/timing/Isolated_bunch");
187  for(unsigned int i=0; i<bxrange_; ++i) {
188  etsum_eta_phi_MET_isolated.push_back(ibooker.book1D("etsum_phi_bx_MET_isolated_"+bx_obj[i],"L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV #phi for isolated bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
189  etsum_eta_phi_METHF_isolated.push_back(ibooker.book1D("etsum_phi_bx_METHF_isolated_"+bx_obj[i],"L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV #phi for isolated bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
190  etsum_eta_phi_MHT_isolated.push_back(ibooker.book1D("etsum_phi_bx_MHT_isolated_"+bx_obj[i],"L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV #phi for isolated bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
191  etsum_eta_phi_MHTHF_isolated.push_back(ibooker.book1D("etsum_phi_bx_MHTHF_isolated_"+bx_obj[i],"L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV #phi for isolated bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
192  }
193  denominator_etsum_isolated_MET = ibooker.book1D("denominator_etsum_isolated_MET","Denominator for Isolated Bunch for L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
194  denominator_etsum_isolated_METHF = ibooker.book1D("denominator_etsum_isolated_METHF","Denominator for Isolated Bunch for L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
195  denominator_etsum_isolated_MHT = ibooker.book1D("denominator_etsum_isolated_MHT","Denominator for Isolated Bunch for L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
196  denominator_etsum_isolated_MHTHF = ibooker.book1D("denominator_etsum_isolated_MHTHF","Denominator for Isolated Bunch for L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
197  }
198 
199  if(algoBitFirstBxInTrain_ > -1) {
200  // first bunch in train
201  ibooker.setCurrentFolder(monitorDir_+"/L1TMuon/timing/First_bunch");
202  for(unsigned int i=0; i<bxrange_-2; ++i) {
203  muons_eta_phi_firstbunch.push_back(ibooker.book2D("muons_eta_phi_bx_firstbunch_"+bx_obj[i],"L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr+" #eta vs #phi for first bunch BX="+bx_obj[i]+";#eta;#phi", 25, -2.5, 2.5, 25, -3.2, 3.2));
204  }
205  denominator_muons_firstbunch = ibooker.book2D("denominator_muons_firstbunch","Denominator for First Bunch for L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr, 25, -2.5, 2.5, 25, -3.2, 3.2);
206 
207  ibooker.setCurrentFolder(monitorDir_+"/L1TJet/timing/First_bunch");
208  for(unsigned int i=0; i<bxrange_-2; ++i) {
209  jet_eta_phi_firstbunch.push_back(ibooker.book2D("jet_eta_phi_bx_firstbunch_"+bx_obj[i],"L1T Jet p_{T}#geq"+jetPtCutStr+" GeV #eta vs #phi for first bunch BX="+bx_obj[i]+";#eta;#phi", 50, -5., 5., 25, -3.2, 3.2));
210  }
211  denominator_jet_firstbunch = ibooker.book2D("denominator_jet_firstbunch","Denominator for First Bunch for L1T Jet p_{T}#geq"+jetPtCutStr+" GeV;#eta;#phi", 50, -5., 5., 25, -3.2, 3.2);
212 
213  for (const auto egammaPtCut : egammaPtCuts_) {
214  auto egammaPtCutStr = std::to_string(egammaPtCut);
215  egammaPtCutStr.resize(egammaPtCutStr.size()-5); // cut some decimal digits
216  auto egammaPtCutStrAlpha = egammaPtCutStr;
217  std::replace(egammaPtCutStrAlpha.begin(), egammaPtCutStrAlpha.end(), '.', 'p'); // replace the decimal dot with a 'p' to please the DQMStore
218 
219  ibooker.setCurrentFolder(monitorDir_+"/L1TEGamma/timing/First_bunch/ptmin_"+egammaPtCutStrAlpha+"_gev");
220  std::vector<MonitorElement*> vHelper;
221  for(unsigned int i=0; i<bxrange_-2; ++i) {
222  vHelper.push_back(ibooker.book2D("egamma_eta_phi_bx_firstbunch_"+bx_obj[i], "L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV #eta vs #phi for first bunch BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
223  }
224  egamma_eta_phi_firstbunch.push_back(vHelper);
225 
226  denominator_egamma_firstbunch.push_back(ibooker.book2D("denominator_egamma_firstbunch", "Denominator for First Bunch for L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
227 
228  egamma_iso_bx_ieta_firstbunch.push_back(ibooker.book2D("egamma_iso_bx_ieta_firstbunch_ptmin"+egammaPtCutStrAlpha, "L1T EGamma iso with pT#geq"+egammaPtCutStr+" GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta", 5, -2.5, 2.5, 70, -70, 70));
229 
230  egamma_noniso_bx_ieta_firstbunch.push_back(ibooker.book2D("egamma_noniso_bx_ieta_firstbunch_ptmin"+egammaPtCutStrAlpha, "L1T EGamma non iso with pT#geq"+egammaPtCutStr+" GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta", 5, -2.5, 2.5, 70, -70, 70));
231  }
232 
233  ibooker.setCurrentFolder(monitorDir_+"/L1TTau/timing/First_bunch");
234  for(unsigned int i=0; i<bxrange_-2; ++i) {
235  tau_eta_phi_firstbunch.push_back(ibooker.book2D("tau_eta_phi_bx_firstbunch_"+bx_obj[i],"L1T Tau p_{T}#geq"+tauPtCutStr+" GeV #eta vs #phi for first bunch BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
236  }
237  denominator_tau_firstbunch = ibooker.book2D("denominator_tau_firstbunch","Denominator for First Bunch for L1T Tau p_{T}#geq"+tauPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2);
238 
239  ibooker.setCurrentFolder(monitorDir_+"/L1TEtSum/timing/First_bunch");
240  for(unsigned int i=0; i<bxrange_-2; ++i) {
241  etsum_eta_phi_MET_firstbunch.push_back(ibooker.book1D("etsum_phi_bx_MET_firstbunch_"+bx_obj[i],"L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV #phi for firstbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
242  etsum_eta_phi_METHF_firstbunch.push_back(ibooker.book1D("etsum_phi_bx_METHF_firstbunch_"+bx_obj[i],"L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV #phi for firstbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
243  etsum_eta_phi_MHT_firstbunch.push_back(ibooker.book1D("etsum_phi_bx_MHT_firstbunch_"+bx_obj[i],"L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV #phi for firstbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
244  etsum_eta_phi_MHTHF_firstbunch.push_back(ibooker.book1D("etsum_phi_bx_MHTHF_firstbunch_"+bx_obj[i],"L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV #phi for firstbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
245  }
246  denominator_etsum_firstbunch_MET = ibooker.book1D("denominator_etsum_firstbunch_MET","Denominator for First Bunch for L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
247  denominator_etsum_firstbunch_METHF = ibooker.book1D("denominator_etsum_firstbunch_METHF","Denominator for First Bunch for L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
248  denominator_etsum_firstbunch_MHT = ibooker.book1D("denominator_etsum_firstbunch_MHT","Denominator for First Bunch for L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
249  denominator_etsum_firstbunch_MHTHF = ibooker.book1D("denominator_etsum_firstbunch_MHTHF","Denominator for First Bunch for L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
250  }
251 
252  // last bunch in train
253  if(algoBitLastBxInTrain_ > -1) {
254  ibooker.setCurrentFolder(monitorDir_+"/L1TMuon/timing/Last_bunch");
255  for(unsigned int i=0; i<bxrange_-2; ++i) {
256  muons_eta_phi_lastbunch.push_back(ibooker.book2D("muons_eta_phi_bx_lastbunch_"+bx_obj[i+2],"L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr+" #eta vs #phi for last bunch BX="+bx_obj[i]+";#eta;#phi", 25, -2.5, 2.5, 25, -3.2, 3.2));
257  }
258  denominator_muons_lastbunch = ibooker.book2D("denominator_muons_lastbunch","Denominator for Last Bunch for L1T Muon p_{T}#geq"+muonPtCutStr+" GeV qual#geq"+muonQualCutStr, 25, -2.5, 2.5, 25, -3.2, 3.2);
259 
260  ibooker.setCurrentFolder(monitorDir_+"/L1TJet/timing/Last_bunch");
261  for(unsigned int i=0; i<bxrange_-2; ++i) {
262  jet_eta_phi_lastbunch.push_back(ibooker.book2D("jet_eta_phi_bx_lastbunch_"+bx_obj[i+2],"L1T Jet p_{T}#geq"+jetPtCutStr+" GeV #eta vs #phi for last bunch BX="+bx_obj[i]+";#eta;#phi", 50, -5., 5., 25, -3.2, 3.2));
263  }
264  denominator_jet_lastbunch = ibooker.book2D("denominator_jet_lastbunch","Denominator for Last Bunch for L1T Jet p_{T}#geq"+jetPtCutStr+" GeV;#eta;#phi", 50, -5., 5., 25, -3.2, 3.2);
265 
266  for (const auto egammaPtCut : egammaPtCuts_) {
267  auto egammaPtCutStr = std::to_string(egammaPtCut);
268  egammaPtCutStr.resize(egammaPtCutStr.size()-5); // cut some decimal digits
269  auto egammaPtCutStrAlpha = egammaPtCutStr;
270  std::replace(egammaPtCutStrAlpha.begin(), egammaPtCutStrAlpha.end(), '.', 'p'); // replace the decimal dot with a 'p' to please the DQMStore
271 
272  ibooker.setCurrentFolder(monitorDir_+"/L1TEGamma/timing/Last_bunch/ptmin_"+egammaPtCutStrAlpha+"_gev");
273  std::vector<MonitorElement*> vHelper;
274  for(unsigned int i=0; i<bxrange_-2; ++i) {
275  vHelper.push_back(ibooker.book2D("egamma_eta_phi_bx_lastbunch_"+bx_obj[i+2], "L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV #eta vs #phi for first bunch BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
276  }
277  egamma_eta_phi_lastbunch.push_back(vHelper);
278 
279  denominator_egamma_lastbunch.push_back(ibooker.book2D("denominator_egamma_lastbunch", "Denominator for Last Bunch for L1T EGamma p_{T}#geq"+egammaPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
280 
281  egamma_iso_bx_ieta_lastbunch.push_back(ibooker.book2D("egamma_iso_bx_ieta_lastbunch_ptmin"+egammaPtCutStrAlpha, "L1T EGamma iso with pT#geq"+egammaPtCutStr+" GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta", 5, -2.5, 2.5, 70, -70, 70));
282 
283  egamma_noniso_bx_ieta_lastbunch.push_back(ibooker.book2D("egamma_noniso_bx_ieta_lastbunch_ptmin"+egammaPtCutStrAlpha, "L1T EGamma non iso with pT#geq"+egammaPtCutStr+" GeV BX vs. i#eta for first bunch in train;BX in event (corrected);i#eta", 5, -2.5, 2.5, 70, -70, 70));
284  }
285 
286  ibooker.setCurrentFolder(monitorDir_+"/L1TTau/timing/Last_bunch");
287  for(unsigned int i=0; i<bxrange_-2; ++i) {
288  tau_eta_phi_lastbunch.push_back(ibooker.book2D("tau_eta_phi_bx_lastbunch_"+bx_obj[i+2],"L1T Tau p_{T}#geq"+tauPtCutStr+" GeV #eta vs #phi for last bunch BX="+bx_obj[i]+";#eta;#phi", 30, -3., 3., 25, -3.2, 3.2));
289  }
290  denominator_tau_lastbunch = ibooker.book2D("denominator_tau_lastbunch","Denominator for Last Bunch for L1T Tau p_{T}#geq"+tauPtCutStr+" GeV;#eta;#phi", 30, -3., 3., 25, -3.2, 3.2);
291 
292  ibooker.setCurrentFolder(monitorDir_+"/L1TEtSum/timing/Last_bunch");
293  for(unsigned int i=0; i<bxrange_-2; ++i) {
294  etsum_eta_phi_MET_lastbunch.push_back(ibooker.book1D("etsum_phi_bx_MET_lastbunch_"+bx_obj[i+2],"L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV #phi for lastbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
295  etsum_eta_phi_METHF_lastbunch.push_back(ibooker.book1D("etsum_phi_bx_METHF_lastbunch_"+bx_obj[i+2],"L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV #phi for lastbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
296  etsum_eta_phi_MHT_lastbunch.push_back(ibooker.book1D("etsum_phi_bx_MHT_lastbunch_"+bx_obj[i+2],"L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV #phi for lastbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
297  etsum_eta_phi_MHTHF_lastbunch.push_back(ibooker.book1D("etsum_phi_bx_MHTHF_lastbunch_"+bx_obj[i+2],"L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV #phi for lastbunch bunch BX="+bx_obj[i]+";#phi", 25, -3.2, 3.2));
298  }
299  denominator_etsum_lastbunch_MET = ibooker.book1D("denominator_etsum_lastbunch_MET","Denominator for Last Bunch for L1T EtSum MET p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
300  denominator_etsum_lastbunch_METHF = ibooker.book1D("denominator_etsum_lastbunch_METHF","Denominator for Last Bunch for L1T EtSum METHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
301  denominator_etsum_lastbunch_MHT = ibooker.book1D("denominator_etsum_lastbunch_MHT","Denominator for Last Bunch for L1T EtSum MHT p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
302  denominator_etsum_lastbunch_MHTHF = ibooker.book1D("denominator_etsum_lastbunch_MHTHF","Denominator for Last Bunch for L1T EtSum MHTHF p_{T}#geq"+etsumPtCutStr+" GeV;#phi", 25, -3.2, 3.2);
303  }
304 }
305 
307 
308  if (verbose_) edm::LogInfo("L1TObjectsTiming") << "L1TObjectsTiming: analyze..." << std::endl;
309 
310  // Muon Collection
312  e.getByToken(ugmtMuonToken_, MuonBxCollection);
313  // Jet Collection
315  e.getByToken(stage2CaloLayer2JetToken_, JetBxCollection);
316  // EGamma Collection
318  e.getByToken(stage2CaloLayer2EGammaToken_, EGammaBxCollection);
319  // Tau Collection
321  e.getByToken(stage2CaloLayer2TauToken_, TauBxCollection);
322  // EtSum Collection
324  e.getByToken(stage2CaloLayer2EtSumToken_, EtSumBxCollection);
325 
326  // Open uGT readout record
328  e.getByToken(l1tStage2uGtProducer_, uGtAlgs);
329 
330  // Filling eta-phi map for muons for BX=-2,-1,0,+1,+2
331  for (int itBX = MuonBxCollection->getFirstBX(); itBX <= MuonBxCollection->getLastBX(); ++itBX) {
332  for (l1t::MuonBxCollection::const_iterator Muon = MuonBxCollection->begin(itBX); Muon != MuonBxCollection->end(itBX); ++Muon) {
333  if (Muon->pt() >= muonPtCut_ and Muon->hwQual() >= muonQualCut_) {
334  denominator_muons->Fill(Muon->eta(), Muon->phi());
335  int index = (int)itBX - std::min(0, 1 - (int)bxrange_%2 - (int)std::floor(bxrange_/2.)); // the correlation from itBX to respective index of the vector
336  muons_eta_phi.at(index)->Fill(Muon->eta(), Muon->phi());
337  }
338  }
339  }
340 
341  // Filling eta-phi map for jets for BX=-2,-1,0,+1,+2
342  for (int itBX = JetBxCollection->getFirstBX(); itBX <= JetBxCollection->getLastBX(); ++itBX) {
343  for (l1t::JetBxCollection::const_iterator jet = JetBxCollection->begin(itBX); jet != JetBxCollection->end(itBX); ++jet) {
344  if (jet->pt() >= jetPtCut_) {
345  denominator_jet->Fill(jet->eta(), jet->phi());
346  int index = itBX - std::min(0, 1 - (int)bxrange_%2 - (int)std::floor(bxrange_/2.)); // the correlation from itBX to respective index of the vector
347  jet_eta_phi.at(index)->Fill(jet->eta(), jet->phi());
348  }
349  }
350  }
351 
352  // Filling eta-phi map for egamma for BX=-2,-1,0,+1,+2
353  for (int itBX = EGammaBxCollection->getFirstBX(); itBX <= EGammaBxCollection->getLastBX(); ++itBX) {
354  for (l1t::EGammaBxCollection::const_iterator egamma = EGammaBxCollection->begin(itBX); egamma != EGammaBxCollection->end(itBX); ++egamma) {
355  if (egamma->pt() >= egammaPtCut_) {
356  denominator_egamma->Fill(egamma->eta(), egamma->phi());
357  int index = itBX - std::min(0, 1 - (int)bxrange_%2 - (int)std::floor(bxrange_/2.)); // the correlation from itBX to respective index of the vector
358  egamma_eta_phi.at(index)->Fill(egamma->eta(), egamma->phi());
359  }
360  }
361  }
362 
363  // Filling eta-phi map for tau for BX=-2,-1,0,+1,+2
364  for (int itBX = TauBxCollection->getFirstBX(); itBX <= TauBxCollection->getLastBX(); ++itBX) {
365  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX); ++tau) {
366  if (tau->pt() >= tauPtCut_) {
367  denominator_tau->Fill(tau->eta(), tau->phi());
368  int index = itBX - std::min(0, 1 - (int)bxrange_%2 - (int)std::floor(bxrange_/2.)); // the correlation from itBX to respective index of the vector
369  tau_eta_phi.at(index)->Fill(tau->eta(), tau->phi());
370  }
371  }
372  }
373 
374  // Filling eta-phi map for etsum for BX=-2,-1,0,+1,+2
375  for (int itBX = EtSumBxCollection->getFirstBX(); itBX <= EtSumBxCollection->getLastBX(); ++itBX) {
376  for (l1t::EtSumBxCollection::const_iterator EtSum = EtSumBxCollection->begin(itBX); EtSum != EtSumBxCollection->end(itBX); ++EtSum) {
377  if (EtSum->pt() >= etsumPtCut_) {
378  int index = itBX - std::min(0, 1 - (int)bxrange_%2 - (int)std::floor(bxrange_/2.)); // the correlation from itBX to respective index of the vector
379  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
380  etsum_eta_phi_MET.at(index)->Fill(EtSum->phi());
381  denominator_etsum_MET->Fill(EtSum->phi());
382  }
383  else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
384  etsum_eta_phi_METHF.at(index)->Fill(EtSum->phi());
385  denominator_etsum_METHF->Fill(EtSum->phi());
386 
387  }
388  else if(l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
389  etsum_eta_phi_MHT.at(index)->Fill(EtSum->phi());
390  denominator_etsum_MHT->Fill(EtSum->phi());
391 
392  }
393  else if(l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
394  etsum_eta_phi_MHTHF.at(index)->Fill(EtSum->phi());
395  denominator_etsum_MHTHF->Fill(EtSum->phi());
396  }
397  }
398  }
399  }
400 
401  // Find out in which BX the first collision in train, isolated bunch, and last collision in train have fired.
402  // In case of pre firing it will be in BX 1 or BX 2 and this will determine the BX shift that
403  // will be applied to the timing histogram later.
404  int bxShiftFirst = -999;
405  int bxShiftIso = -999;
406  int bxShiftLast = -999;
407  for (int bx = uGtAlgs->getFirstBX(); bx <= uGtAlgs->getLastBX(); ++bx) {
408  for (GlobalAlgBlkBxCollection::const_iterator itr = uGtAlgs->begin(bx); itr != uGtAlgs->end(bx); ++itr) {
409  // first bunch in train
410  if (algoBitFirstBxInTrain_ != -1) {
411  bool bit = false;
412  switch (useAlgoDecision_) {
413  case 0:
414  bit = itr->getAlgoDecisionInitial(algoBitFirstBxInTrain_);
415  break;
416  case 1:
417  bit = itr->getAlgoDecisionInterm(algoBitFirstBxInTrain_);
418  break;
419  case 2:
420  bit = itr->getAlgoDecisionFinal(algoBitFirstBxInTrain_);
421  break;
422  }
423  if (bit) {
424  bxShiftFirst = bx;
425  }
426  }
427  // last bunch in train
428  if(algoBitLastBxInTrain_ != -1) {
429  bool bit = false;
430  switch (useAlgoDecision_) {
431  case 0:
432  bit = itr->getAlgoDecisionInitial(algoBitLastBxInTrain_);
433  break;
434  case 1:
435  bit = itr->getAlgoDecisionInterm(algoBitLastBxInTrain_);
436  break;
437  case 2:
438  bit = itr->getAlgoDecisionFinal(algoBitLastBxInTrain_);
439  break;
440  }
441  if (bit) {
442  bxShiftLast = bx;
443  }
444  }
445  // isolated bunch
446  if (algoBitIsoBx_ != -1) {
447  bool bit = false;
448  switch (useAlgoDecision_) {
449  case 0:
450  bit = itr->getAlgoDecisionInitial(algoBitIsoBx_);
451  break;
452  case 1:
453  bit = itr->getAlgoDecisionInterm(algoBitIsoBx_);
454  break;
455  case 2:
456  bit = itr->getAlgoDecisionFinal(algoBitIsoBx_);
457  break;
458  }
459  if (bit) {
460  bxShiftIso = bx;
461  }
462  }
463  }
464  }
465 
466  // fill the first bunch in train maps
467  if (bxShiftFirst > -999) {
468  // muons
469  for (int itBX = std::max(MuonBxCollection->getFirstBX(), MuonBxCollection->getFirstBX() + bxShiftFirst); itBX <= std::min(MuonBxCollection->getLastBX(), MuonBxCollection->getLastBX() + bxShiftFirst); ++itBX) {
470  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
471  if (index >= 0 and index < (int)muons_eta_phi_firstbunch.size()) {
472  for (l1t::MuonBxCollection::const_iterator muon = MuonBxCollection->begin(itBX); muon != MuonBxCollection->end(itBX); ++muon) { // Starting with Muons
473  if (muon->pt() >= muonPtCut_ and muon->hwQual() >= muonQualCut_) {
474  denominator_muons_firstbunch->Fill(muon->eta(), muon->phi());
475  muons_eta_phi_firstbunch.at(index)->Fill(muon->eta(), muon->phi());
476  }
477  }
478  }
479  }
480  // jets
481  for (int itBX = std::max(JetBxCollection->getFirstBX(), JetBxCollection->getFirstBX() + bxShiftFirst); itBX <= std::min(JetBxCollection->getLastBX(), JetBxCollection->getLastBX() + bxShiftFirst); ++itBX) {
482  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
483  if (index >= 0 and index < (int)jet_eta_phi_firstbunch.size()) {
484  for (l1t::JetBxCollection::const_iterator jet = JetBxCollection->begin(itBX); jet != JetBxCollection->end(itBX); ++jet) {
485  if (jet->pt() >= jetPtCut_) {
486  denominator_jet_firstbunch->Fill(jet->eta(), jet->phi());
487  jet_eta_phi_firstbunch.at(index)->Fill(jet->eta(), jet->phi());
488  }
489  }
490  }
491  }
492  // egammas
493  for (int itBX = std::max(EGammaBxCollection->getFirstBX(), EGammaBxCollection->getFirstBX() + bxShiftFirst); itBX <= std::min(EGammaBxCollection->getLastBX(), EGammaBxCollection->getLastBX() + bxShiftFirst); ++itBX) {
494  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
495  for (l1t::EGammaBxCollection::const_iterator egamma = EGammaBxCollection->begin(itBX); egamma != EGammaBxCollection->end(itBX); ++egamma) {
496  for (size_t i = 0; i < egammaPtCuts_.size(); ++i) {
497  if (egamma->pt() >= egammaPtCuts_.at(i)) {
498  if (index >= 0 and index < (int)egamma_eta_phi_firstbunch.size()) {
499  denominator_egamma_firstbunch.at(i)->Fill(egamma->eta(), egamma->phi());
500  egamma_eta_phi_firstbunch.at(i).at(index)->Fill(egamma->eta(), egamma->phi());
501  }
502  if ((bool)egamma->hwIso()) {
503  egamma_iso_bx_ieta_firstbunch.at(i)->Fill(itBX - bxShiftFirst, egamma->hwEta());
504  }
505  egamma_noniso_bx_ieta_firstbunch.at(i)->Fill(itBX - bxShiftFirst, egamma->hwEta());
506  }
507  }
508  }
509  }
510  // taus
511  for (int itBX = std::max(TauBxCollection->getFirstBX(), TauBxCollection->getFirstBX() + bxShiftFirst); itBX <= std::min(TauBxCollection->getLastBX(), TauBxCollection->getLastBX() + bxShiftFirst); ++itBX) {
512  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
513  if (index >= 0 and index < (int)tau_eta_phi_firstbunch.size()) {
514  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX); ++tau) {
515  if (tau->pt() >= tauPtCut_) {
516  denominator_tau_firstbunch->Fill(tau->eta(), tau->phi());
517  tau_eta_phi_firstbunch.at(index)->Fill(tau->eta(), tau->phi());
518  }
519  }
520  }
521  }
522  // etsums
523  for (int itBX = std::max(EtSumBxCollection->getFirstBX(), EtSumBxCollection->getFirstBX() + bxShiftFirst); itBX <= std::min(EtSumBxCollection->getLastBX(), EtSumBxCollection->getLastBX() + bxShiftFirst); ++itBX) {
524  int index = itBX - bxShiftFirst - uGtAlgs->getFirstBX();
525  if (index >= 0) {
526  for (l1t::EtSumBxCollection::const_iterator EtSum = EtSumBxCollection->begin(itBX); EtSum != EtSumBxCollection->end(itBX); ++EtSum) {
527  if (EtSum->pt() >= etsumPtCut_) {
528  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
529  if (index < (int)etsum_eta_phi_MET_firstbunch.size()) {
530  denominator_etsum_firstbunch_MET->Fill(EtSum->phi());
531  etsum_eta_phi_MET_firstbunch.at(index)->Fill(EtSum->phi());
532  }
533  }
534  else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
535  if (index < (int)etsum_eta_phi_METHF_firstbunch.size()) {
537  etsum_eta_phi_METHF_firstbunch.at(index)->Fill(EtSum->phi());
538  }
539  }
540  else if(l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
541  if (index < (int)etsum_eta_phi_MHT_firstbunch.size()) {
542  denominator_etsum_firstbunch_MHT->Fill(EtSum->phi());
543  etsum_eta_phi_MHT_firstbunch.at(index)->Fill(EtSum->phi());
544  }
545  }
546  else if(l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
547  if (index < (int)etsum_eta_phi_MHTHF_firstbunch.size()) {
549  etsum_eta_phi_MHTHF_firstbunch.at(index)->Fill(EtSum->phi());
550  }
551  }
552  }
553  }
554  }
555  }
556  }
557 
558  // fill the last bunch in train maps
559  if (bxShiftLast > -999) {
560  // muons
561  for (int itBX = std::max(MuonBxCollection->getFirstBX(), MuonBxCollection->getFirstBX() + bxShiftLast); itBX <= std::min(MuonBxCollection->getLastBX(), MuonBxCollection->getLastBX() + bxShiftLast); ++itBX) {
562  auto correctedBx = itBX - bxShiftLast;
563  if (correctedBx >= 0 and correctedBx < (int)muons_eta_phi_lastbunch.size()) {
564  for (l1t::MuonBxCollection::const_iterator muon = MuonBxCollection->begin(itBX); muon != MuonBxCollection->end(itBX); ++muon) { // Starting with Muons
565  if (muon->pt() >= muonPtCut_ and muon->hwQual() >= muonQualCut_) {
566  denominator_muons_lastbunch->Fill(muon->eta(), muon->phi());
567  muons_eta_phi_lastbunch.at(correctedBx)->Fill(muon->eta(), muon->phi());
568  }
569  }
570  }
571  }
572  // jets
573  for (int itBX = std::max(JetBxCollection->getFirstBX(), JetBxCollection->getFirstBX() + bxShiftLast); itBX <= std::min(JetBxCollection->getLastBX(), JetBxCollection->getLastBX() + bxShiftLast); ++itBX) {
574  auto correctedBx = itBX - bxShiftLast;
575  if (correctedBx >= 0 and correctedBx < (int)jet_eta_phi_lastbunch.size()) {
576  for (l1t::JetBxCollection::const_iterator jet = JetBxCollection->begin(itBX); jet != JetBxCollection->end(itBX); ++jet) {
577  if (jet->pt() >= jetPtCut_) {
578  denominator_jet_lastbunch->Fill(jet->eta(), jet->phi());
579  jet_eta_phi_lastbunch.at(correctedBx)->Fill(jet->eta(), jet->phi());
580  }
581  }
582  }
583  }
584  // egammas
585  for (int itBX = std::max(EGammaBxCollection->getFirstBX(), EGammaBxCollection->getFirstBX() + bxShiftLast); itBX <= std::min(EGammaBxCollection->getLastBX(), EGammaBxCollection->getLastBX() + bxShiftLast); ++itBX) {
586  auto correctedBx = itBX - bxShiftLast;
587  for (l1t::EGammaBxCollection::const_iterator egamma = EGammaBxCollection->begin(itBX); egamma != EGammaBxCollection->end(itBX); ++egamma) {
588  for (size_t i = 0; i < egammaPtCuts_.size(); ++i) {
589  if (egamma->pt() >= egammaPtCuts_.at(i)) {
590  if (correctedBx >= 0 and correctedBx < (int)egamma_eta_phi_lastbunch.size()) {
591  denominator_egamma_lastbunch.at(i)->Fill(egamma->eta(), egamma->phi());
592  egamma_eta_phi_lastbunch.at(i).at(correctedBx)->Fill(egamma->eta(), egamma->phi());
593  }
594  if ((bool)egamma->hwIso()) {
595  egamma_iso_bx_ieta_lastbunch.at(i)->Fill(correctedBx, egamma->hwEta());
596  }
597  egamma_noniso_bx_ieta_lastbunch.at(i)->Fill(correctedBx, egamma->hwEta());
598  }
599  }
600  }
601  }
602  // taus
603  for (int itBX = std::max(TauBxCollection->getFirstBX(), TauBxCollection->getFirstBX() + bxShiftLast); itBX <= std::min(TauBxCollection->getLastBX(), TauBxCollection->getLastBX() + bxShiftLast); ++itBX) {
604  auto correctedBx = itBX - bxShiftLast;
605  if (correctedBx >= 0 and correctedBx < (int)tau_eta_phi_lastbunch.size()) {
606  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX); ++tau) {
607  if (tau->pt() >= tauPtCut_) {
608  denominator_tau_lastbunch->Fill(tau->eta(), tau->phi());
609  tau_eta_phi_lastbunch.at(correctedBx)->Fill(tau->eta(), tau->phi());
610  }
611  }
612  }
613  }
614  // etsums
615  for (int itBX = std::max(EtSumBxCollection->getFirstBX(), EtSumBxCollection->getFirstBX() + bxShiftLast); itBX <= std::min(EtSumBxCollection->getLastBX(), EtSumBxCollection->getLastBX() + bxShiftLast); ++itBX) {
616  auto correctedBx = itBX - bxShiftLast;
617  if (correctedBx >= 0) {
618  for (l1t::EtSumBxCollection::const_iterator EtSum = EtSumBxCollection->begin(itBX); EtSum != EtSumBxCollection->end(itBX); ++EtSum) {
619  if (EtSum->pt() >= etsumPtCut_) {
620  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
621  if (correctedBx < (int)etsum_eta_phi_MET_lastbunch.size()) {
622  denominator_etsum_lastbunch_MET->Fill(EtSum->phi());
623  etsum_eta_phi_MET_lastbunch.at(correctedBx)->Fill(EtSum->phi());
624  }
625  }
626  else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
627  if (correctedBx < (int)etsum_eta_phi_METHF_lastbunch.size()) {
629  etsum_eta_phi_METHF_lastbunch.at(correctedBx)->Fill(EtSum->phi());
630  }
631  }
632  else if(l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
633  if (correctedBx < (int)etsum_eta_phi_MHT_lastbunch.size()) {
634  denominator_etsum_lastbunch_MHT->Fill(EtSum->phi());
635  etsum_eta_phi_MHT_lastbunch.at(correctedBx)->Fill(EtSum->phi());
636  }
637  }
638  else if(l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
639  if (correctedBx < (int)etsum_eta_phi_MHTHF_lastbunch.size()) {
641  etsum_eta_phi_MHTHF_lastbunch.at(correctedBx)->Fill(EtSum->phi());
642  }
643  }
644  }
645  }
646  }
647  }
648  }
649 
650  // fill the isolated bunch
651  if (bxShiftIso > -999) {
652  // muons
653  for (int itBX = std::max(MuonBxCollection->getFirstBX(), MuonBxCollection->getFirstBX() + bxShiftIso); itBX <= std::min(MuonBxCollection->getLastBX(), MuonBxCollection->getLastBX() + bxShiftIso); ++itBX) {
654  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
655  if (index >= 0 and index < (int)muons_eta_phi_isolated.size()) {
656  for (l1t::MuonBxCollection::const_iterator muon = MuonBxCollection->begin(itBX); muon != MuonBxCollection->end(itBX); ++muon) { // Starting with Muons
657  if (muon->pt() >= muonPtCut_ and muon->hwQual() >= muonQualCut_) {
658  denominator_muons_isolated->Fill(muon->eta(), muon->phi());
659  muons_eta_phi_isolated.at(index)->Fill(muon->eta(), muon->phi());
660  }
661  }
662  }
663  }
664  // jets
665  for (int itBX = std::max(JetBxCollection->getFirstBX(), JetBxCollection->getFirstBX() + bxShiftIso); itBX <= std::min(JetBxCollection->getLastBX(), JetBxCollection->getLastBX() + bxShiftIso); ++itBX) {
666  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
667  if (index >= 0 and index < (int)jet_eta_phi_isolated.size()) {
668  for (l1t::JetBxCollection::const_iterator jet = JetBxCollection->begin(itBX); jet != JetBxCollection->end(itBX); ++jet) {
669  if (jet->pt() >= jetPtCut_) {
670  denominator_jet_isolated->Fill(jet->eta(), jet->phi());
671  jet_eta_phi_isolated.at(index)->Fill(jet->eta(), jet->phi());
672  }
673  }
674  }
675  }
676  // egammas
677  for (int itBX = std::max(EGammaBxCollection->getFirstBX(), EGammaBxCollection->getFirstBX() + bxShiftIso); itBX <= std::min(EGammaBxCollection->getLastBX(), EGammaBxCollection->getLastBX() + bxShiftIso); ++itBX) {
678  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
679  for (l1t::EGammaBxCollection::const_iterator egamma = EGammaBxCollection->begin(itBX); egamma != EGammaBxCollection->end(itBX); ++egamma) {
680  for (size_t i = 0; i < egammaPtCuts_.size(); ++i) {
681  if (egamma->pt() >= egammaPtCuts_.at(i)) {
682  if (index >= 0 and index < (int)egamma_eta_phi_isolated.size()) {
683  denominator_egamma_isolated.at(i)->Fill(egamma->eta(), egamma->phi());
684  egamma_eta_phi_isolated.at(i).at(index)->Fill(egamma->eta(), egamma->phi());
685  }
686  if ((bool)egamma->hwIso()) {
687  egamma_iso_bx_ieta_isolated.at(i)->Fill(itBX - bxShiftIso, egamma->hwEta());
688  }
689  egamma_noniso_bx_ieta_isolated.at(i)->Fill(itBX - bxShiftIso, egamma->hwEta());
690  }
691  }
692  }
693  }
694  // taus
695  for (int itBX = std::max(TauBxCollection->getFirstBX(), TauBxCollection->getFirstBX() + bxShiftIso); itBX <= std::min(TauBxCollection->getLastBX(), TauBxCollection->getLastBX() + bxShiftIso); ++itBX) {
696  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
697  if (index >= 0 and index < (int)tau_eta_phi_isolated.size()) {
698  for (l1t::TauBxCollection::const_iterator tau = TauBxCollection->begin(itBX); tau != TauBxCollection->end(itBX); ++tau) {
699  if (tau->pt() >= tauPtCut_) {
700  denominator_tau_isolated->Fill(tau->eta(), tau->phi());
701  tau_eta_phi_isolated.at(index)->Fill(tau->eta(), tau->phi());
702  }
703  }
704  }
705  }
706  // etsums
707  for (int itBX = std::max(EtSumBxCollection->getFirstBX(), EtSumBxCollection->getFirstBX() + bxShiftIso); itBX <= std::min(EtSumBxCollection->getLastBX(), EtSumBxCollection->getLastBX() + bxShiftIso); ++itBX) {
708  int index = itBX - bxShiftIso - uGtAlgs->getFirstBX();
709  if (index >= 0) {
710  for (l1t::EtSumBxCollection::const_iterator EtSum = EtSumBxCollection->begin(itBX); EtSum != EtSumBxCollection->end(itBX); ++EtSum) {
711  if (EtSum->pt() >= etsumPtCut_) {
712  if (l1t::EtSum::EtSumType::kMissingEt == EtSum->getType()) {
713  if (index < (int)etsum_eta_phi_MET_isolated.size()) {
714  denominator_etsum_isolated_MET->Fill(EtSum->phi());
715  etsum_eta_phi_MET_isolated.at(index)->Fill(EtSum->phi());
716  }
717  }
718  else if (l1t::EtSum::EtSumType::kMissingEtHF == EtSum->getType()) {
719  if (index < (int)etsum_eta_phi_METHF_isolated.size()) {
720  denominator_etsum_isolated_METHF->Fill(EtSum->phi());
721  etsum_eta_phi_METHF_isolated.at(index)->Fill(EtSum->phi());
722  }
723  }
724  else if(l1t::EtSum::EtSumType::kMissingHt == EtSum->getType()) {
725  if (index < (int)etsum_eta_phi_MHT_isolated.size()) {
726  denominator_etsum_isolated_MHT->Fill(EtSum->phi());
727  etsum_eta_phi_MHT_isolated.at(index)->Fill(EtSum->phi());
728  }
729  }
730  else if(l1t::EtSum::EtSumType::kMissingHtHF == EtSum->getType()) {
731  if (index < (int)etsum_eta_phi_MHTHF_isolated.size()) {
732  denominator_etsum_isolated_MHTHF->Fill(EtSum->phi());
733  etsum_eta_phi_MHTHF_isolated.at(index)->Fill(EtSum->phi());
734  }
735  }
736  }
737  }
738  }
739  }
740  }
741 }
742 
MonitorElement * denominator_etsum_METHF
BXVector< EGamma > EGammaBxCollection
Definition: EGamma.h:11
const_iterator end(int bx) const
std::vector< MonitorElement * > jet_eta_phi_firstbunch
void setComment(std::string const &value)
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * denominator_etsum_lastbunch_MHT
edm::EDGetTokenT< l1t::EGammaBxCollection > stage2CaloLayer2EGammaToken_
MonitorElement * denominator_muons_isolated
void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
edm::EDGetTokenT< GlobalAlgBlkBxCollection > l1tStage2uGtProducer_
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
std::vector< MonitorElement * > etsum_eta_phi_MET_isolated
std::vector< MonitorElement * > etsum_eta_phi_METHF_isolated
std::vector< MonitorElement * > muons_eta_phi_isolated
MonitorElement * denominator_etsum_MET
std::vector< MonitorElement * > egamma_eta_phi
std::vector< std::vector< MonitorElement * > > egamma_eta_phi_lastbunch
MonitorElement * denominator_etsum_isolated_MHTHF
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:519
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:11
std::vector< MonitorElement * > etsum_eta_phi_MET_firstbunch
MonitorElement * denominator_etsum_isolated_METHF
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
void Fill(long long x)
MonitorElement * denominator_etsum_firstbunch_MHT
std::vector< MonitorElement * > muons_eta_phi_lastbunch
MonitorElement * denominator_etsum_MHTHF
std::vector< MonitorElement * > etsum_eta_phi_MHT
void bookHistograms(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
BXVector< EtSum > EtSumBxCollection
Definition: EtSum.h:11
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
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
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
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< MonitorElement * > egamma_noniso_bx_ieta_lastbunch
ParameterDescriptionBase * add(U const &iLabel, T const &value)
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
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
int getFirstBX() const
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:279
BXVector< Jet > JetBxCollection
Definition: Jet.h:11
MonitorElement * denominator_etsum_firstbunch_METHF
MonitorElement * denominator_jet_lastbunch
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:136
std::string monitorDir_
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
std::vector< MonitorElement * > egamma_iso_bx_ieta_isolated
HLT enums.
MonitorElement * denominator_etsum_isolated_MET
MonitorElement * denominator_etsum_firstbunch_MHTHF
int getLastBX() const
std::vector< MonitorElement * > denominator_egamma_lastbunch
std::vector< MonitorElement * > muons_eta_phi
MonitorElement * denominator_etsum_lastbunch_METHF
MonitorElement * denominator_etsum_isolated_MHT
const std::string algoNameFirstBxInTrain_
std::vector< MonitorElement * > etsum_eta_phi_MHT_firstbunch
const_iterator begin(int bx) const
std::shared_ptr< l1t::L1TGlobalUtil > gtUtil_
MonitorElement * denominator_jet_firstbunch
MonitorElement * denominator_jet_isolated
Definition: Run.h:43
MonitorElement * denominator_etsum_lastbunch_MET
std::vector< Muon >::const_iterator const_iterator
Definition: BXVector.h:20
std::vector< MonitorElement * > tau_eta_phi_firstbunch