CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
METplusTrackMonitor.cc
Go to the documentation of this file.
22 
24 public:
27 
29  ~METplusTrackMonitor() noexcept(true) override {}
30  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
31 
32 protected:
33  void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
34  void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
35 
36 private:
37  bool getHLTObj(const edm::Handle<trigger::TriggerEvent>& trigSummary,
38  const edm::InputTag& filterTag,
40 
42 
45 
51 
55 
56  std::vector<double> met_variable_binning_;
57  std::vector<double> muonPt_variable_binning_;
58 
64 
66  ObjME metVsLS_;
67  ObjME metPhiME_;
69  ObjME metVsHltMet_;
71 
73  ObjME muonPtVsLS_;
74  ObjME muonEtaME_;
77 
78  std::unique_ptr<GenericTriggerEventFlag> num_genTriggerEventFlag_;
79  std::unique_ptr<GenericTriggerEventFlag> den_genTriggerEventFlag_;
80 
85 
86  unsigned nmuons_;
87  unsigned njets_;
88 
90 
93 };
94 
96  : folderName_(iConfig.getParameter<std::string>("FolderName")),
97  requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
98  hltPathsAreValid_(false),
99  metToken_(consumes<reco::CaloMETCollection>(iConfig.getParameter<edm::InputTag>("met"))),
100  muonToken_(consumes<reco::MuonCollection>(iConfig.getParameter<edm::InputTag>("muons"))),
101  jetToken_(consumes<reco::PFJetCollection>(iConfig.getParameter<edm::InputTag>("jets"))),
102  vtxToken_(consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("vertices"))),
103  theTrigSummary_(consumes<trigger::TriggerEvent>(iConfig.getParameter<edm::InputTag>("trigSummary"))),
104  hltMetTag_(iConfig.getParameter<edm::InputTag>("hltMetFilter")),
105  hltMetCleanTag_(iConfig.getParameter<edm::InputTag>("hltMetCleanFilter")),
106  trackLegFilterTag_(iConfig.getParameter<edm::InputTag>("trackLegFilter")),
108  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("metBinning")),
109  muonPt_variable_binning_(
110  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("ptBinning")),
111  met_binning_(getHistoPSet(
112  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("metPSet"))),
113  ls_binning_(
114  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("lsPSet"))),
115  pt_binning_(
116  getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("ptPSet"))),
117  eta_binning_(getHistoPSet(
118  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("etaPSet"))),
119  phi_binning_(getHistoPSet(
120  iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("phiPSet"))),
122  iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
124  iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
125  metSelection_(iConfig.getParameter<std::string>("metSelection")),
126  muonSelection_(iConfig.getParameter<std::string>("muonSelection")),
127  jetSelection_(iConfig.getParameter<std::string>("jetSelection")),
128  vtxSelection_(iConfig.getParameter<std::string>("vtxSelection")),
129  nmuons_(iConfig.getParameter<unsigned>("nmuons")),
130  njets_(iConfig.getParameter<unsigned>("njets")),
131  leadJetEtaCut_(iConfig.getParameter<double>("leadJetEtaCut")),
132  requireLeadMatched_(iConfig.getParameter<bool>("requireLeadMatched")),
133  maxMatchDeltaR_(iConfig.getParameter<double>("maxMatchDeltaR")) {}
134 
136  edm::Run const& iRun,
137  edm::EventSetup const& iSetup) {
138  // Initialize the GenericTriggerEventFlag
140  num_genTriggerEventFlag_->initRun(iRun, iSetup);
141  }
143  den_genTriggerEventFlag_->initRun(iRun, iSetup);
144  }
145 
146  // check if every HLT path specified in numerator and denominator has a valid match in the HLT Menu
148  den_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->allHLTPathsAreValid() &&
149  den_genTriggerEventFlag_->allHLTPathsAreValid());
150 
151  // if valid HLT paths are required,
152  // create DQM outputs only if all paths are valid
154  return;
155  }
156 
157  std::string histname, histtitle;
158 
159  std::string currentFolder = folderName_;
160  ibooker.setCurrentFolder(currentFolder);
161 
162  // MET leg histograms
163  histname = "met_variable";
164  histtitle = "CaloMET";
165  bookME(ibooker, metME_variableBinning_, histname, histtitle, met_variable_binning_);
166  setMETitle(metME_variableBinning_, "CaloMET [GeV]", "events / [GeV]");
167 
168  histname = "metVsLS";
169  histtitle = "CaloMET vs LS";
170  bookME(ibooker,
171  metVsLS_,
172  histname,
173  histtitle,
179  setMETitle(metVsLS_, "LS", "CaloMET [GeV]");
180 
181  histname = "metPhi";
182  histtitle = "CaloMET phi";
183  bookME(ibooker, metPhiME_, histname, histtitle, phi_binning_.nbins, phi_binning_.xmin, phi_binning_.xmax);
184  setMETitle(metPhiME_, "CaloMET #phi", "events / 0.2 rad");
185 
186  histname = "deltaphi_metjet1";
187  histtitle = "dPhi(CaloMET, jet1)";
188  bookME(ibooker, deltaphimetj1ME_, histname, histtitle, phi_binning_.nbins, 0, phi_binning_.xmax);
189  setMETitle(deltaphimetj1ME_, "#Delta#phi (CaloMET, j1)", "events / 0.1 rad");
190 
191  histname = "metVsHltMet";
192  histtitle = "CaloMET vs hltMet";
193  bookME(ibooker,
194  metVsHltMet_,
195  histname,
196  histtitle,
203  setMETitle(metVsHltMet_, "hltMet (online) [GeV]", "CaloMET (offline) [GeV]");
204 
205  histname = "metVsHltMetClean";
206  histtitle = "CaloMET vs hltMetClean";
207  bookME(ibooker,
209  histname,
210  histtitle,
217  setMETitle(metVsHltMetClean_, "hltMetClean (online) [GeV]", "CaloMET (offline) [GeV]");
218 
219  // Track leg histograms
220 
221  histname = "muonPt_variable";
222  histtitle = "Muon PT";
223  bookME(ibooker, muonPtME_variableBinning_, histname, histtitle, muonPt_variable_binning_);
224  setMETitle(muonPtME_variableBinning_, "Muon p_{T} [GeV]", "events / [GeV]");
225 
226  histname = "muonEta";
227  histtitle = "Muon eta";
228  bookME(ibooker, muonEtaME_, histname, histtitle, eta_binning_.nbins, eta_binning_.xmin, eta_binning_.xmax);
229  setMETitle(muonEtaME_, "Muon #eta", "events / 0.2");
230 
231  histname = "deltaphi_muonmet";
232  histtitle = "dPhi(Muon, CaloMET)";
233  bookME(ibooker, deltaphimetmuonME_, histname, histtitle, phi_binning_.nbins, 0, phi_binning_.xmax);
234  setMETitle(deltaphimetmuonME_, "#Delta#phi (Muon, CaloMET)", "events / 0.1 rad");
235 
236  histname = "muonEtaVsPhi";
237  histtitle = "Muon eta vs phi";
238  bookME(ibooker,
240  histname,
241  histtitle,
248  setMETitle(muonEtaVsPhi_, "Muon #phi", "Muon #eta");
249 
250  histname = "muonPtVsLS";
251  histtitle = "Muon PT vs LS";
252  bookME(ibooker,
253  muonPtVsLS_,
254  histname,
255  histtitle,
260  pt_binning_.xmax);
261  setMETitle(muonPtVsLS_, "LS", "Muon p_{T} [GeV]");
262 }
263 
265  // if valid HLT paths are required,
266  // analyze event only if all paths are valid
268  return;
269  }
270 
271  // Filter out events if Trigger Filtering is requested
272  if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup))
273  return;
274 
276  iEvent.getByToken(metToken_, metHandle);
277  reco::CaloMET caloMet = metHandle->front();
278  if (!metSelection_(caloMet))
279  return;
280 
281  float met = caloMet.pt();
282  float metPhi = caloMet.phi();
283 
285  iEvent.getByToken(jetToken_, jetsHandle);
286  if (jetsHandle->size() < njets_)
287  return;
288  std::vector<reco::PFJet> jets;
289  for (auto const& j : *jetsHandle) {
290  if (jetSelection_(j))
291  jets.push_back(j);
292  }
293  if (jets.size() < njets_)
294  return;
295  if (njets_ > 0 && !(jets.empty()) && fabs(jets[0].eta()) > leadJetEtaCut_)
296  return;
297  float deltaphi_metjet1 = !(jets.empty()) ? fabs(deltaPhi(caloMet.phi(), jets[0].phi())) : 10.0;
298 
300  iEvent.getByToken(vtxToken_, primaryVertices);
301  if (primaryVertices->empty())
302  return;
303  const reco::Vertex* pv = nullptr;
304  for (auto const& v : *primaryVertices) {
305  if (!vtxSelection_(v))
306  continue;
307  pv = &v;
308  break;
309  }
310  if (pv == nullptr)
311  return;
312 
314  iEvent.getByToken(muonToken_, muonHandle);
315  if (muonHandle->size() < nmuons_)
316  return;
317  std::vector<reco::Muon> muons;
318  for (auto const& m : *muonHandle) {
319  bool passTightID =
320  muon::isTightMuon(m, *pv) &&
321  m.innerTrack()->hitPattern().trackerLayersWithoutMeasurement(reco::HitPattern::MISSING_INNER_HITS) == 0 &&
322  m.innerTrack()->hitPattern().trackerLayersWithoutMeasurement(reco::HitPattern::TRACK_HITS) == 0;
323  if (muonSelection_(m) && passTightID)
324  muons.push_back(m);
325  }
326  if (muons.size() < nmuons_)
327  return;
328 
329  // Filling MET leg histograms (denominator)
331  metPhiME_.denominator->Fill(metPhi);
332  deltaphimetj1ME_.denominator->Fill(deltaphi_metjet1);
333 
334  int ls = iEvent.id().luminosityBlock();
335  metVsLS_.denominator->Fill(ls, met);
336 
337  // Apply the selection for the MET leg numerator
338  edm::Handle<trigger::TriggerEvent> triggerSummary;
339  iEvent.getByToken(theTrigSummary_, triggerSummary);
340  if (!triggerSummary.isValid()) {
341  edm::LogError("METplusTrackMonitor") << "Invalid collection: TriggerSummary"
342  << "\n";
343  return;
344  }
345 
346  trigger::TriggerObject hltMet, hltMetClean;
347  bool passesHltMetFilter = getHLTObj(triggerSummary, hltMetTag_, hltMet);
348  bool passesHltMetCleanFilter = getHLTObj(triggerSummary, hltMetCleanTag_, hltMetClean);
349 
350  if (!passesHltMetFilter || !passesHltMetCleanFilter)
351  return;
352 
353  // Filling MET leg histograms (numerator)
355  metPhiME_.numerator->Fill(metPhi);
356  deltaphimetj1ME_.numerator->Fill(deltaphi_metjet1);
357  metVsLS_.numerator->Fill(ls, met);
358  metVsHltMet_.numerator->Fill(hltMet.pt(), met);
359  metVsHltMetClean_.numerator->Fill(hltMetClean.pt(), met);
360 
361  // Filling track leg histograms (denominator)
362  double leadMuonPt = !(muons.empty()) ? muons[0].pt() : -1.0;
363  double leadMuonEta = !(muons.empty()) ? muons[0].eta() : 10.0;
364  double leadMuonPhi = !(muons.empty()) ? muons[0].phi() : 10.0;
365  float deltaphi_metmuon = !(muons.empty()) ? fabs(deltaPhi(caloMet.phi(), muons[0].phi())) : 10.0;
366 
368  muonPtVsLS_.denominator->Fill(ls, leadMuonPt);
369  muonEtaME_.denominator->Fill(leadMuonEta);
370  deltaphimetmuonME_.denominator->Fill(deltaphi_metmuon);
371  muonEtaVsPhi_.denominator->Fill(leadMuonPhi, leadMuonEta);
372 
373  // Apply the selection for the track leg numerator
374  trigger::TriggerObject isoTrk;
375  bool passesTrackLegFilter = getHLTObj(triggerSummary, trackLegFilterTag_, isoTrk);
376 
377  // require track leg filter
378  if (!passesTrackLegFilter)
379  return;
380 
381  // if requested, require lead selected muon is matched to the track leg filter object
382  if (requireLeadMatched_ && !(muons.empty()) && deltaR(muons[0], isoTrk) < maxMatchDeltaR_)
383  return;
384 
385  // require the full HLT path is fired
386  if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
387  return;
388 
389  // Filling track leg histograms (denominator)
391  muonPtVsLS_.numerator->Fill(ls, leadMuonPt);
392  muonEtaME_.numerator->Fill(leadMuonEta);
393  deltaphimetmuonME_.numerator->Fill(deltaphi_metmuon);
394  muonEtaVsPhi_.numerator->Fill(leadMuonPhi, leadMuonEta);
395 }
396 
398  const edm::InputTag& filterTag,
399  trigger::TriggerObject& obj) const {
400  double leadingPt = -1.0;
401 
402  size_t filterIndex = trigSummary->filterIndex(filterTag);
403  trigger::TriggerObjectCollection triggerObjects = trigSummary->getObjects();
404 
405  if (!(filterIndex >= trigSummary->sizeFilters())) {
406  const trigger::Keys& keys = trigSummary->filterKeys(filterIndex);
407  for (unsigned short key : keys) {
408  trigger::TriggerObject foundObject = triggerObjects[key];
409  if (foundObject.pt() > leadingPt) {
410  obj = foundObject;
411  leadingPt = obj.pt();
412  }
413  }
414  }
415 
416  return (leadingPt > 0.0);
417 }
418 
421  desc.add<std::string>("FolderName", "HLT/MET");
422  desc.add<bool>("requireValidHLTPaths", true);
423 
424  desc.add<edm::InputTag>("met", edm::InputTag("caloMet"));
425  desc.add<edm::InputTag>("jets", edm::InputTag("ak4PFJetsCHS"));
426  desc.add<edm::InputTag>("electrons", edm::InputTag("gedGsfElectrons"));
427  desc.add<edm::InputTag>("muons", edm::InputTag("muons"));
428  desc.add<edm::InputTag>("vertices", edm::InputTag("offlinePrimaryVertices"));
429  desc.add<edm::InputTag>("trigSummary", edm::InputTag("hltTriggerSummaryAOD"));
430  desc.add<edm::InputTag>("hltMetFilter", edm::InputTag("hltMET105", "", "HLT"));
431  desc.add<edm::InputTag>("hltMetCleanFilter", edm::InputTag("hltMETClean65", "", "HLT"));
432  desc.add<edm::InputTag>("trackLegFilter", edm::InputTag("hltTrk50Filter", "", "HLT"));
433 
434  desc.add<std::string>("metSelection", "pt > 0");
435  desc.add<std::string>("jetSelection", "pt > 0");
436  desc.add<std::string>("muonSelection", "pt > 0");
437  desc.add<std::string>("vtxSelection", "!isFake");
438  desc.add<unsigned>("njets", 0);
439  desc.add<unsigned>("nmuons", 0);
440  desc.add<double>("leadJetEtaCut", 2.4);
441  desc.add<bool>("requireLeadMatched", true);
442  desc.add<double>("maxMatchDeltaR", 0.1);
443 
444  edm::ParameterSetDescription genericTriggerEventPSet;
445  genericTriggerEventPSet.add<bool>("andOr");
446  genericTriggerEventPSet.add<edm::InputTag>("dcsInputTag", edm::InputTag("scalersRawToDigi"));
447  genericTriggerEventPSet.add<std::vector<int> >("dcsPartitions", {});
448  genericTriggerEventPSet.add<bool>("andOrDcs", false);
449  genericTriggerEventPSet.add<bool>("errorReplyDcs", true);
450  genericTriggerEventPSet.add<std::string>("dbLabel", "");
451  genericTriggerEventPSet.add<bool>("andOrHlt", true);
452  genericTriggerEventPSet.add<edm::InputTag>("hltInputTag", edm::InputTag("TriggerResults::HLT"));
453  genericTriggerEventPSet.add<std::vector<std::string> >("hltPaths", {});
454  genericTriggerEventPSet.add<std::string>("hltDBKey", "");
455  genericTriggerEventPSet.add<bool>("errorReplyHlt", false);
456  genericTriggerEventPSet.add<unsigned int>("verbosityLevel", 1);
457 
458  desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
459  desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
460 
466 
467  fillHistoPSetDescription(metPSet);
468  fillHistoPSetDescription(phiPSet);
469  fillHistoPSetDescription(ptPSet);
470  fillHistoPSetDescription(etaPSet);
471 
472  histoPSet.add<edm::ParameterSetDescription>("metPSet", metPSet);
473  histoPSet.add<edm::ParameterSetDescription>("phiPSet", phiPSet);
474  histoPSet.add<edm::ParameterSetDescription>("ptPSet", ptPSet);
475  histoPSet.add<edm::ParameterSetDescription>("etaPSet", etaPSet);
476 
477  std::vector<double> bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
478  170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
479 
480  histoPSet.add<std::vector<double> >("metBinning", bins);
481  histoPSet.add<std::vector<double> >("ptBinning", bins);
482 
485  histoPSet.add<edm::ParameterSetDescription>("lsPSet", lsPSet);
486 
487  desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
488 
489  descriptions.add("metPlusTrackMonitoring", desc);
490 }
491 
edm::EDGetTokenT< reco::PFJetCollection > jetToken_
edm::InputTag hltMetCleanTag_
METplusTrackMonitor(const edm::ParameterSet &)
static void fillHistoLSPSetDescription(edm::ParameterSetDescription &pset)
double pt() const final
transverse momentum
bool getHLTObj(const edm::Handle< trigger::TriggerEvent > &trigSummary, const edm::InputTag &filterTag, trigger::TriggerObject &obj) const
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
tuple caloMet
____________________________________________________________________________||
Definition: CaloMET_cfi.py:4
eta_binning_(getHistoPSet(iConfig.getParameter< edm::ParameterSet >("histoPSet").getParameter< edm::ParameterSet >("etaPSet")))
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
tuple primaryVertices
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
den_genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig.getParameter< edm::ParameterSet >("denGenericTriggerEventPSet"), consumesCollector(),*this))
dqm::reco::MonitorElement MonitorElement
def ls
Definition: eostools.py:349
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
const std::string folderName_
static void fillHistoPSetDescription(edm::ParameterSetDescription &pset)
ls_binning_(getHistoPSet(iConfig.getParameter< edm::ParameterSet >("histoPSet").getParameter< edm::ParameterSet >("lsPSet")))
Log< level::Error, false > LogError
std::vector< Vertex > VertexCollection
Definition: Vertex.h:12
LuminosityBlockNumber_t luminosityBlock() const
Definition: EventID.h:39
edm::InputTag trackLegFilterTag_
void setMETitle(ObjME &me, const std::string &titleX, const std::string &titleY)
dqm::reco::DQMStore DQMStore
phi_binning_(getHistoPSet(iConfig.getParameter< edm::ParameterSet >("histoPSet").getParameter< edm::ParameterSet >("phiPSet")))
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
std::vector< double > muonPt_variable_binning_
edm::EDGetTokenT< reco::MuonCollection > muonToken_
void analyze(edm::Event const &iEvent, edm::EventSetup const &iSetup) override
void Fill(long long x)
Collection of Calo MET.
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:21
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
pt_binning_(getHistoPSet(iConfig.getParameter< edm::ParameterSet >("histoPSet").getParameter< edm::ParameterSet >("ptPSet")))
int iEvent
Definition: GenABIO.cc:224
std::unique_ptr< GenericTriggerEventFlag > den_genTriggerEventFlag_
nmuons_(iConfig.getParameter< unsigned int >("nmuons"))
std::vector< double > met_variable_binning_
vector< PseudoJet > jets
MonitorElement * denominator
MonitorElement * numerator
tuple key
prepare the HTCondor submission files and eventually submit them
njets_(iConfig.getParameter< unsigned int >("njets"))
metSelection_(iConfig.getParameter< std::string >("metSelection"))
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isValid() const
Definition: HandleBase.h:70
std::unique_ptr< GenericTriggerEventFlag > num_genTriggerEventFlag_
metToken_(consumes< reco::PFMETCollection >(iConfig.getParameter< edm::InputTag >("met")))
met_variable_binning_(iConfig.getParameter< edm::ParameterSet >("histoPSet").getParameter< std::vector< double > >("metBinning"))
StringCutObjectSelector< reco::CaloMET, true > metSelection_
num_genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig.getParameter< edm::ParameterSet >("numGenericTriggerEventPSet"), consumesCollector(),*this))
met_binning_(getHistoPSet(iConfig.getParameter< edm::ParameterSet >("histoPSet").getParameter< edm::ParameterSet >("metPSet")))
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:75
StringCutObjectSelector< reco::PFJet, true > jetSelection_
vtxSelection_(iConfig.getParameter< std::string >("vertexSelection"))
StringCutObjectSelector< reco::Muon, true > muonSelection_
edm::EDGetTokenT< reco::VertexCollection > vtxToken_
std::vector< size_type > Keys
StringCutObjectSelector< reco::Vertex, true > vtxSelection_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< reco::CaloMETCollection > metToken_
void bookME(DQMStore::IBooker &, ObjME &me, const std::string &histname, const std::string &histtitle, const uint nbins, const double xmin, const double xmax, const bool bookDen=true)
~METplusTrackMonitor() noexcept(true) override
edm::EventID id() const
Definition: EventBase.h:59
std::vector< PFJet > PFJetCollection
collection of PFJet objects
tuple muons
Definition: patZpeak.py:39
bool isTightMuon(const reco::Muon &, const reco::Vertex &)
jetSelection_(iConfig.getParameter< std::string >("jetSelection"))
double phi() const final
momentum azimuthal angle
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< trigger::TriggerEvent > theTrigSummary_
Definition: Run.h:45