CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
HLTObjectsMonitor Class Reference
Inheritance diagram for HLTObjectsMonitor:
DQMEDAnalyzer edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Classes

struct  MEbinning
 

Public Member Functions

 HLTObjectsMonitor (const edm::ParameterSet &)
 
 ~HLTObjectsMonitor () override=default
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &) override
 
void dqmBeginRun (edm::Run const &, edm::EventSetup const &) override
 
double dxyFinder (double, double, edm::Handle< reco::RecoChargedCandidateCollection >, edm::Handle< reco::BeamSpot >, double)
 
double dzFinder (double, double, double, double, edm::Handle< reco::RecoChargedCandidateCollection >, double)
 
void getPSet ()
 
bool isHEM17 (double eta, double phi)
 
bool isHEP17 (double eta, double phi)
 

Static Private Member Functions

static hltPlot getPlotPSet (edm::ParameterSet pset)
 

Private Attributes

std::string backupFolder_
 
edm::InputTag beamSpot_
 
edm::EDGetTokenT< reco::BeamSpotbeamSpotToken_
 
edm::EDGetTokenT< reco::JetTagCollectioncaloJetBTagsToken_
 
const MEbinning csv_binning_ {N_CSV, -MAX_CSV, MAX_CSV}
 
bool debug_
 
edm::InputTag eleCandidates_
 
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > eleCandidatesToken_
 
const MEbinning eta_binning_hem17_ {N_ETA_HEP17, -MAX_ETA_HEP17, MIN_ETA_HEP17}
 
const MEbinning eta_binning_hep17_ {N_ETA_HEP17, MIN_ETA_HEP17, MAX_ETA_HEP17}
 
MonitorElementeventsPlot_
 
HLTConfigProvider hltConfig_
 
std::vector< hltPlothltPlots_
 
std::string label_
 
std::string mainFolder_
 
const double MASS_MU = .105658
 
double MAX_CSV = 1.
 
double MAX_ETA_HEP17 = 3.0
 
double MAX_PHI = 3.2
 
double MAX_PHI_HEP17 = -0.52
 
double MIN_ETA_HEP17 = 1.3
 
double MIN_PHI_HEP17 = -0.87
 
edm::InputTag muCandidates_
 
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > muCandidatesToken_
 
int N_CSV = 20
 
int N_ETA_HEP17 = 6
 
int N_PHI = 64
 
int N_PHI_HEP17 = 7
 
edm::EDGetTokenT< reco::JetTagCollectionpfJetBTagsToken_
 
const MEbinning phi_binning_ {N_PHI, -MAX_PHI, MAX_PHI}
 
const MEbinning phi_binning_hep17_ {N_PHI_HEP17, MIN_PHI_HEP17, MAX_PHI_HEP17}
 
std::vector< double > phi_variable_binning_
 
std::unordered_map< std::string, int > plotNamesToBins_
 
std::vector< edm::ParameterSetplotPSETS_
 
std::string processName_
 
std::string TopFolder_
 
edm::EDGetTokenT< trigger::TriggerEventtriggerEventToken_
 
edm::EDGetTokenT< edm::TriggerResultstriggerResultsToken_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 97 of file HLTObjectsMonitor.cc.

Constructor & Destructor Documentation

HLTObjectsMonitor::HLTObjectsMonitor ( const edm::ParameterSet iConfig)
explicit

Definition at line 256 of file HLTObjectsMonitor.cc.

References backupFolder_, getPSet(), mps_fire::i, mainFolder_, MAX_PHI, N_PHI, phi_variable_binning_, and TopFolder_.

257  : TopFolder_(iConfig.getParameter<std::string>("TopFolder")),
258  label_(iConfig.getParameter<std::string>("label")),
259  processName_(iConfig.getParameter<std::string>("processName")),
260  plotPSETS_(iConfig.getParameter<std::vector<edm::ParameterSet>>("plots")),
261  debug_(iConfig.getUntrackedParameter<bool>("debug", false)),
262  triggerResultsToken_(consumes<edm::TriggerResults>(iConfig.getParameter<edm::InputTag>("TriggerResults"))),
263  triggerEventToken_(consumes<trigger::TriggerEvent>(iConfig.getParameter<edm::InputTag>("TriggerSummary"))),
264  beamSpot_(iConfig.getParameter<edm::InputTag>("beamspot")),
265  beamSpotToken_(consumes<reco::BeamSpot>(beamSpot_)),
266  caloJetBTagsToken_(consumes<reco::JetTagCollection>(iConfig.getParameter<edm::InputTag>("caloJetBTags"))),
267  pfJetBTagsToken_(consumes<reco::JetTagCollection>(iConfig.getParameter<edm::InputTag>("pfJetBTags"))),
268  muCandidates_(iConfig.getParameter<edm::InputTag>("muCandidates")),
269  muCandidatesToken_(consumes<std::vector<reco::RecoChargedCandidate>>(muCandidates_)),
270  eleCandidates_(iConfig.getParameter<edm::InputTag>("eleCandidates")),
271  eleCandidatesToken_(consumes<std::vector<reco::RecoChargedCandidate>>(eleCandidates_)) {
272  getPSet();
273 
274  //now do what ever initialization is needed
275  mainFolder_ = TopFolder_ + "/MainShifter";
276  backupFolder_ = TopFolder_ + "/Backup";
277 
278  //set Token(s)
279 
280  double step = 2 * MAX_PHI / double(N_PHI);
281  for (int i = 0; i <= N_PHI; i++)
282  phi_variable_binning_.push_back(-MAX_PHI + step * i);
283 }
edm::EDGetTokenT< reco::JetTagCollection > pfJetBTagsToken_
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
edm::InputTag muCandidates_
edm::EDGetTokenT< reco::JetTagCollection > caloJetBTagsToken_
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
edm::InputTag beamSpot_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > eleCandidatesToken_
edm::InputTag eleCandidates_
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > muCandidatesToken_
std::vector< double > phi_variable_binning_
std::vector< edm::ParameterSet > plotPSETS_
step
Definition: StallMonitor.cc:94
edm::EDGetTokenT< trigger::TriggerEvent > triggerEventToken_
HLTObjectsMonitor::~HLTObjectsMonitor ( )
overridedefault

Member Function Documentation

void HLTObjectsMonitor::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivate

Definition at line 290 of file HLTObjectsMonitor.cc.

References funct::abs(), edm::HLTGlobalStatus::accept(), HLTObjectsMonitor_cfi::beamspot, beamSpotToken_, edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::begin(), HLTObjectsMonitor_cfi::caloJetBTags, caloJetBTagsToken_, gather_cfg::cout, debug_, PbPb_ZMuSkimMuonDPG_cff::deltaR, HGC3DClusterGenMatchSelector_cfi::dR, PVValHelper::dxy, dxyFinder(), PVValHelper::dz, dzFinder(), HLTObjectsMonitor_cfi::eleCandidates, eleCandidatesToken_, edm::AssociationVector< KeyRefProd, CVal, KeyRef, SizeType, KeyReferenceHelper >::end(), HCALHighEnergyHPDFilter_cfi::energy, PVValHelper::eta, HLT_2018_cff::eta2, eventsPlot_, dqm::impl::MonitorElement::Fill(), trigger::TriggerEvent::filterIndex(), trigger::TriggerEvent::filterKeys(), edm::Event::getByToken(), trigger::TriggerEvent::getObjects(), hltConfig_, hltPlots_, globals_cff::id2, training_settings::idx, HLT_2018_cff::InputTag, isHEM17(), isHEP17(), edm::HandleBase::isValid(), crabWrapper::key, relativeConstraints::keys, LogDebug, EgHLTOffHistBins_cfi::mass, MASS_MU, HLTConfigProvider::moduleLabels(), EcalCalibMonitorClient_cfi::moduleName, HLTObjectsMonitor_cfi::muCandidates, muCandidatesToken_, HLTObjectsMonitor_cfi::pfJetBTags, pfJetBTagsToken_, phi, plotFactory::plot, plotNamesToBins_, processName_, DiDispStaMuonMonitor_cfi::pt, HLT_2018_cff::pt2, q1, q2, HLTConfigProvider::saveTags(), trigger::TriggerEvent::sizeFilters(), PDWG_DiPhoton_SD_cff::triggerEvent, triggerEventToken_, triggerResults, triggerResultsToken_, and findQualityFiles::v.

290  {
291  // if ( debug_ )
292  // std::cout << "[HLTObjectsMonitor::analyze]" << std::endl;
293 
294  // access trigger results
296  iEvent.getByToken(triggerResultsToken_, triggerResults);
297  if (!triggerResults.isValid())
298  return;
299 
301  iEvent.getByToken(triggerEventToken_, triggerEvent);
302  if (!triggerEvent.isValid())
303  return;
304 
306  iEvent.getByToken(caloJetBTagsToken_, caloJetBTags);
307 
309  iEvent.getByToken(pfJetBTagsToken_, pfJetBTags);
310 
312  iEvent.getByToken(muCandidatesToken_, muCandidates);
313 
315  iEvent.getByToken(eleCandidatesToken_, eleCandidates);
316 
318  iEvent.getByToken(beamSpotToken_, beamspot);
319 
320  // loop over path
321  int ibin = -1;
322  std::vector<bool> plottedPathIndices(plotNamesToBins_.size(), false);
323  for (auto& plot : hltPlots_) {
324  ibin++;
325  if (plot.pathIDX <= 0)
326  continue;
327 
328  if (triggerResults->accept(plot.pathIDX)) {
329  //We only want to fill this once per pathNAME per event
330  auto index = plotNamesToBins_[plot.pathNAME];
331  if (not plottedPathIndices[index]) {
332  plottedPathIndices[index] = true;
333  if (debug_)
334  std::cout << plot.pathNAME << " --> bin: " << ibin << std::endl;
335  eventsPlot_->Fill(index);
336  }
337  const trigger::TriggerObjectCollection objects = triggerEvent->getObjects();
338  if (hltConfig_.saveTags(plot.moduleNAME)) {
339  if (debug_)
340  std::cout << "objects: " << objects.size() << std::endl;
341 
342  bool moduleFOUND = false;
343  std::vector<std::string> moduleNames = hltConfig_.moduleLabels(plot.pathIDX);
344  for (const auto& module : moduleNames) {
345  if (module == plot.moduleNAME)
346  moduleFOUND = true;
347  }
348  if (debug_)
349  std::cout << plot.moduleNAME << (moduleFOUND ? "" : "NOT") << " found in the list of modules" << std::endl;
350 
351  if (debug_)
352  for (const auto& module : moduleNames) {
353  unsigned int idx = triggerEvent->filterIndex(edm::InputTag(module, "", processName_));
354  std::cout << "module: " << module;
355  if (idx < triggerEvent->sizeFilters())
356  std::cout << " --> " << idx;
357  std::cout << std::endl;
358  }
359  //
360  // trigger accepted and collection w/ objects is available
362  unsigned int moduleIDX = triggerEvent->filterIndex(moduleName);
363  if (debug_)
364  std::cout << "moduleNAME: " << plot.moduleNAME << " --> " << moduleIDX << std::endl;
365 
366  if (moduleIDX >= triggerEvent->sizeFilters()) {
367  LogDebug("HLTObjectsMonitor")
368  << plot.pathNAME << " " << plot.moduleNAME
369  << " is not available ! please, fix update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py";
370  return;
371  }
372 
373  const trigger::Keys& keys = triggerEvent->filterKeys(moduleIDX);
374  if (debug_)
375  std::cout << "keys: " << keys.size() << std::endl;
376 
377  plot.nME.first->Fill(keys.size());
378 
379  double MR = 0.;
380  double RSQ = 0.;
381  for (const auto& key : keys) {
382  double pt = objects[key].pt();
383  double eta = objects[key].eta();
384  double phi = objects[key].phi();
385  double mass = objects[key].mass();
386  double energy = objects[key].energy();
387  int id = objects[key].id();
388  if (debug_)
389  std::cout << "object ID " << id << " mass: " << mass << std::endl;
390 
391  // single-object plots
392  plot.ptME.first->Fill(pt);
393  if (plot.doPlotETA)
394  plot.etaME.first->Fill(eta);
395  plot.phiME.first->Fill(phi);
396 
397  if (plot.doPlotCSV) {
398  if (plot.doCALO) {
399  if (!caloJetBTags.isValid())
400  plot.csvME.first->Fill(-10.);
401  else {
402  for (auto it = caloJetBTags->begin(); it != caloJetBTags->end(); ++it) {
403  double dR = deltaR(eta, phi, it->first->eta(), it->first->phi());
404  if (debug_)
405  std::cout << "[HLTObjectsMonitor::analyze] deltaR: " << dR << " matched ? "
406  << (dR <= 0.4 ? "YEAP" : "NOPE") << std::endl;
407  plot.csvME.first->Fill(it->second);
408  }
409  }
410 
411  } else if (plot.doPF) {
412  if (!pfJetBTags.isValid())
413  plot.csvME.first->Fill(-10.);
414  else {
415  for (auto it = pfJetBTags->begin(); it != pfJetBTags->end(); ++it) {
416  double dR = deltaR(eta, phi, it->first->eta(), it->first->phi());
417  if (debug_)
418  std::cout << "[HLTObjectsMonitor::analyze] deltaR: " << dR << " matched ? "
419  << (dR <= 0.4 ? "YEAP" : "NOPE") << std::endl;
420  plot.csvME.first->Fill(it->second);
421  }
422  }
423  }
424  }
425  if (plot.doPlotMASS)
426  plot.massME.first->Fill(mass);
427  if (plot.doPlotENERGY)
428  plot.energyME.first->Fill(energy);
429  if (plot.doPlot2D)
430  plot.etaVSphiME.first->Fill(eta, phi);
431  if (plot.doPlotHEP17) {
432  if (isHEP17(eta, phi))
433  plot.ptMEhep17.first->Fill(pt);
434  if (isHEM17(eta, phi))
435  plot.ptMEhem17.first->Fill(pt);
436  }
437 
438  if (id == 0) { //the MET object containing MR and Rsq will show up with ID = 0
439  MR = objects[key].px(); //razor variables stored in dummy reco::MET objects
440  RSQ = objects[key].py();
441  }
442 
443  if (plot.doPlotDXY) {
444  double dxy = -99.;
445  if (abs(id) == 13)
446  dxy = dxyFinder(eta, phi, muCandidates, beamspot, 0.1); // dRcut = 0.1
447  else
448  dxy = dxyFinder(eta, phi, eleCandidates, beamspot, 0.1); // dRcut = 0.1
449  plot.dxyME.first->Fill(dxy);
450  }
451  } // end loop on keys
452  if (plot.doPlotRazor) {
453  plot.mrME.first->Fill(MR);
454  plot.rsqME.first->Fill(RSQ);
455  }
456 
457  if (keys.size() < 2) {
458  if (plot.doPlotDiMass || plot.doPlotDZ)
459  LogDebug("HLTObjectsMonitor") << plot.pathNAME << " " << plot.moduleNAME << " # objects is (" << keys.size()
460  << ") less than 2 ! you probably want to either change the moduleNAME or "
461  "switch off di-object system plots (doPlotDZ: "
462  << plot.doPlotDZ << " doPlotDiMass: " << plot.doPlotDiMass
463  << ") in DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py)";
464  } else {
465  for (const auto& key : keys) {
466  double pt = objects[key].pt();
467  double eta = objects[key].eta();
468  double phi = objects[key].phi();
469  int id = objects[key].id();
470 
471  unsigned int kCnt0 = 0;
472 
473  TLorentzVector v1;
474  if (abs(id) == 13) // check if it is a muon
475  v1.SetPtEtaPhiM(pt, eta, phi, MASS_MU);
476  else
477  v1.SetPtEtaPhiM(pt, eta, phi, 0);
478 
479  unsigned int kCnt1 = 0;
480  for (const auto& key1 : keys) {
481  if (key != key1 &&
482  kCnt1 > kCnt0) { // avoid filling hists with same objs && avoid double counting separate objs
483 
484  double pt2 = objects[key1].phi();
485  double eta2 = objects[key1].eta();
486  double phi2 = objects[key1].phi();
487  int id2 = objects[key1].id();
488 
489  double dR = deltaR(eta, phi, eta2, phi2);
490  plot.dRME.first->Fill(dR);
491  plot.dRetaVSphiME.first->Fill(eta, phi, dR);
492 
493  int q1 = (id == 0 ? 0 : id / abs(id));
494  int q2 = (id2 == 0 ? 0 : id2 / abs(id2));
495  int q1q2 = q1 * q2;
496  plot.q1q2ME.first->Fill(q1q2);
497 
498  if (abs(id) != abs(id2))
499  edm::LogInfo("HLTObjectsMonitor")
500  << plot.pathNAME << " " << plot.moduleNAME << " objects have different ID !?!" << abs(id)
501  << " and " << abs(id2);
502 
503  if ((id + id2) == 0) { // check di-object system charge and flavor
504 
505  TLorentzVector v2;
506  if (abs(id2) == 13) // check if it is a muon
507  v2.SetPtEtaPhiM(pt2, eta2, phi2, MASS_MU);
508  else
509  v2.SetPtEtaPhiM(pt2, eta2, phi2, 0);
510 
511  if (plot.doPlotDiMass) {
512  TLorentzVector v = v1 + v2;
513  plot.dimassME.first->Fill(v.M());
514  }
515 
516  if (plot.doPlotDZ) {
517  double dz = -99.;
518  if (abs(id) == 13)
519  dz = dzFinder(eta, phi, eta2, phi2, muCandidates, 0.1); // dRcut = 0.1
520  else
521  dz = dzFinder(eta, phi, eta2, phi2, eleCandidates, 0.1); // dRcut = 0.1
522  plot.dzME.first->Fill(dz);
523  }
524  }
525  }
526  kCnt1++;
527  }
528  kCnt0++;
529  }
530  }
531  }
532  }
533  }
534 }
#define LogDebug(id)
edm::EDGetTokenT< reco::JetTagCollection > pfJetBTagsToken_
bool saveTags(const std::string &module) const
Is module an L3 filter (ie, tracked saveTags=true)
std::vector< hltPlot > hltPlots_
edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
std::unordered_map< std::string, int > plotNamesToBins_
trigger::size_type sizeFilters() const
Definition: TriggerEvent.h:146
edm::EDGetTokenT< reco::JetTagCollection > caloJetBTagsToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
bool accept() const
Has at least one path accepted the event?
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:118
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:132
edm::EDGetTokenT< reco::BeamSpot > beamSpotToken_
const_iterator end() const
double q2[4]
Definition: TauolaWrapper.h:88
void Fill(long long x)
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > eleCandidatesToken_
bool isHEP17(double eta, double phi)
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:101
double dxyFinder(double, double, edm::Handle< reco::RecoChargedCandidateCollection >, edm::Handle< reco::BeamSpot >, double)
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
static std::string const triggerResults
Definition: EdmProvDump.cc:45
bool isValid() const
Definition: HandleBase.h:70
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:75
double q1[4]
Definition: TauolaWrapper.h:87
std::vector< size_type > Keys
HLTConfigProvider hltConfig_
edm::EDGetTokenT< std::vector< reco::RecoChargedCandidate > > muCandidatesToken_
bool isHEM17(double eta, double phi)
MonitorElement * eventsPlot_
double dzFinder(double, double, double, double, edm::Handle< reco::RecoChargedCandidateCollection >, double)
const_iterator begin() const
Definition: vlib.h:198
edm::EDGetTokenT< trigger::TriggerEvent > triggerEventToken_
void HLTObjectsMonitor::bookHistograms ( DQMStore::IBooker i,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprivatevirtual

Implements DQMEDAnalyzer.

Definition at line 574 of file HLTObjectsMonitor.cc.

References backupFolder_, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), dqm::dqmstoreimpl::DQMStore::IBooker::bookProfile2D(), gather_cfg::cout, csv_binning_, debug_, end, eventsPlot_, hltPlots_, mps_fire::i, label_, LogDebug, mainFolder_, Skims_PA_cff::name, LaserClient_cfi::nbins, HLTObjectsMonitor::MEbinning::nbins, hlt_dqm_clientPB-live_cfg::nbinsX, hlt_dqm_clientPB-live_cfg::nbinsY, AlCaHLTBitMon_ParallelJobs::p, plotFactory::plot, plotNamesToBins_, dqm::impl::MonitorElement::setAxisTitle(), dqm::impl::MonitorElement::setBinLabel(), dqm::dqmstoreimpl::DQMStore::IBooker::setCurrentFolder(), findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, overlapproblemtsosanalyzer_cfi::title, TopFolder_, HLTObjectsMonitor::MEbinning::xmax, and HLTObjectsMonitor::MEbinning::xmin.

576  {
577  if (debug_)
578  std::cout << "[HLTObjectsMonitor::bookHistograms]" << std::endl;
579 
580  ibooker.setCurrentFolder(TopFolder_);
581 
582  std::string name = "eventsPerPath_" + label_;
583  std::string title = " events per path";
584 
585  //We must avoid repeating the same pathNAME
586  {
587  std::unordered_map<std::string, int> uniqueNames;
588  for (auto const& p : hltPlots_) {
589  plotNamesToBins_[p.pathNAME] = -1;
590  }
591  int nbins = plotNamesToBins_.size();
592  eventsPlot_ = ibooker.book1D(name, title, nbins, -0.5, double(nbins) - 0.5);
593  eventsPlot_->setAxisTitle("HLT path");
594  int i = 0;
595  //keep the bin order the same as hltPlots_
596  for (auto const& p : hltPlots_) {
597  //only add a bin if this is the first time we've seen the name
598  if (-1 == plotNamesToBins_[p.pathNAME]) {
599  plotNamesToBins_[p.pathNAME] = ++i;
600  eventsPlot_->setBinLabel(i, p.pathNAME);
601  if (debug_)
602  std::cout << p.pathNAME << " --> bin: " << i << std::endl;
603  }
604  }
605  }
606 
607  for (auto& plot : hltPlots_) {
608  if (debug_)
609  std::cout << "booking plots for " << plot.label << std::endl;
610 
611  if (plot.pathIDX <= 0) {
612  LogDebug("HLTObjectsMonitor") << plot.pathNAME
613  << " is not available in the HLT menu ! no plots are going to be booked for it "
614  "(update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py)";
615  continue;
616  }
617  if (debug_)
618  std::cout << "booking histograms for " << plot.pathNAME << std::endl;
619 
620  {
621  if (plot.nME.second)
622  ibooker.setCurrentFolder(mainFolder_);
623  else
624  ibooker.setCurrentFolder(backupFolder_);
625 
626  name = plot.label + "_nobjects";
627  title = plot.pathNAME + " # objects";
628  plot.nME.first = ibooker.book1D(name, title, 20, -0.5, 19.5);
629  plot.nME.first->setAxisTitle(plot.xTITLE + " # objects");
630  }
631 
632  if (plot.ptME.second)
633  ibooker.setCurrentFolder(mainFolder_);
634  else
635  ibooker.setCurrentFolder(backupFolder_);
636 
637  name = plot.label + "_pt";
638  title = plot.pathNAME + " p_T";
639  int nbins = (plot.ptBINNING).size() - 1;
640  std::vector<float> fbinning((plot.ptBINNING).begin(), (plot.ptBINNING).end());
641  float* arr = &fbinning[0];
642  plot.ptME.first = ibooker.book1D(name, title, nbins, arr);
643  plot.ptME.first->setAxisTitle(plot.xTITLE + " p_{T} [GeV]");
644 
645  {
646  if (plot.phiME.second)
647  ibooker.setCurrentFolder(mainFolder_);
648  else
649  ibooker.setCurrentFolder(backupFolder_);
650 
651  name = plot.label + "_phi";
652  title = plot.pathNAME + " #phi";
653  int nbins = (plot.phiBINNING).size() - 1;
654  std::vector<float> fbinning((plot.phiBINNING).begin(), (plot.phiBINNING).end());
655  float* arr = &fbinning[0];
656  plot.phiME.first = ibooker.book1D(name, title, nbins, arr);
657  plot.phiME.first->setAxisTitle(plot.xTITLE + " #phi [rad]");
658  }
659 
660  if (plot.doPlotETA) {
661  if (plot.etaME.second)
662  ibooker.setCurrentFolder(mainFolder_);
663  else
664  ibooker.setCurrentFolder(backupFolder_);
665 
666  name = plot.label + "_eta";
667  title = plot.pathNAME + " #eta";
668  int nbins = (plot.etaBINNING).size() - 1;
669  std::vector<float> fbinning((plot.etaBINNING).begin(), (plot.etaBINNING).end());
670  float* arr = &fbinning[0];
671 
672  plot.etaME.first = ibooker.book1D(name, title, nbins, arr);
673  plot.etaME.first->setAxisTitle(plot.xTITLE + " #eta");
674  }
675 
676  if (plot.doPlotMASS) {
677  if (plot.massME.second)
678  ibooker.setCurrentFolder(mainFolder_);
679  else
680  ibooker.setCurrentFolder(backupFolder_);
681 
682  name = plot.label + "_mass";
683  title = plot.pathNAME + " mass";
684  int nbins = (plot.massBINNING).size() - 1;
685  std::vector<float> fbinning((plot.massBINNING).begin(), (plot.massBINNING).end());
686  float* arr = &fbinning[0];
687 
688  plot.massME.first = ibooker.book1D(name, title, nbins, arr);
689  plot.massME.first->setAxisTitle(plot.xTITLE + " mass [GeV]");
690  }
691 
692  if (plot.doPlotENERGY) {
693  if (plot.energyME.second)
694  ibooker.setCurrentFolder(mainFolder_);
695  else
696  ibooker.setCurrentFolder(backupFolder_);
697 
698  name = plot.label + "_energy";
699  title = plot.pathNAME + " energy";
700  int nbins = (plot.ptBINNING).size() - 1;
701  std::vector<float> fbinning((plot.ptBINNING).begin(), (plot.ptBINNING).end());
702  float* arr = &fbinning[0];
703 
704  plot.energyME.first = ibooker.book1D(name, title, nbins, arr);
705  plot.energyME.first->setAxisTitle(plot.xTITLE + " energy [GeV]");
706  }
707 
708  if (plot.doPlotCSV) {
709  if (plot.csvME.second)
710  ibooker.setCurrentFolder(mainFolder_);
711  else
712  ibooker.setCurrentFolder(backupFolder_);
713 
714  name = plot.label + "_csv";
715  title = plot.pathNAME + " CSV";
716 
717  plot.csvME.first = ibooker.book1D(name, title, csv_binning_.nbins, csv_binning_.xmin, csv_binning_.xmax);
718  plot.csvME.first->setAxisTitle(plot.xTITLE + " CSV discriminator");
719  }
720 
721  if (plot.doPlot2D) {
722  if (plot.etaVSphiME.second)
723  ibooker.setCurrentFolder(mainFolder_);
724  else
725  ibooker.setCurrentFolder(backupFolder_);
726 
727  name = plot.label + "_etaVSphi";
728  title = plot.pathNAME + " #eta vs #phi";
729  int nbinsX = (plot.etaBINNING).size() - 1;
730  std::vector<float> fbinningX((plot.etaBINNING).begin(), (plot.etaBINNING).end());
731  float* arrX = &fbinningX[0];
732  int nbinsY = (plot.phiBINNING).size() - 1;
733  ;
734  std::vector<float> fbinningY((plot.phiBINNING).begin(), (plot.phiBINNING).end());
735  float* arrY = &fbinningY[0];
736  plot.etaVSphiME.first = ibooker.book2D(name, title, nbinsX, arrX, nbinsY, arrY);
737  plot.etaVSphiME.first->setAxisTitle(plot.xTITLE + " #eta", 1);
738  plot.etaVSphiME.first->setAxisTitle(plot.xTITLE + " #phi", 2);
739  }
740 
741  if (plot.doPlotHEP17) {
742  if (plot.ptMEhep17.second)
743  ibooker.setCurrentFolder(mainFolder_);
744  else
745  ibooker.setCurrentFolder(backupFolder_);
746 
747  int nbins = (plot.ptBINNING).size() - 1;
748  std::vector<float> fbinning((plot.ptBINNING).begin(), (plot.ptBINNING).end());
749  float* arr = &fbinning[0];
750 
751  name = plot.label + "_pt_HEP17";
752  title = plot.pathNAME + " p_{T} HEP17";
753  plot.ptMEhep17.first = ibooker.book1D(name, title, nbins, arr);
754  plot.ptMEhep17.first->setAxisTitle(plot.xTITLE + " p_{T} [GeV]", 1);
755 
756  if (plot.ptMEhem17.second)
757  ibooker.setCurrentFolder(mainFolder_);
758  else
759  ibooker.setCurrentFolder(backupFolder_);
760 
761  name = plot.label + "_pt_HEM17";
762  title = plot.pathNAME + " p_{T} HEM17";
763  plot.ptMEhem17.first = ibooker.book1D(name, title, nbins, arr);
764  plot.ptMEhem17.first->setAxisTitle(plot.xTITLE + " p_{T} [GeV]", 1);
765  }
766 
767  if (plot.doPlotRazor) {
768  if (plot.mrME.second)
769  ibooker.setCurrentFolder(mainFolder_);
770  else
771  ibooker.setCurrentFolder(backupFolder_);
772 
773  name = plot.label + "_mr";
774  title = plot.pathNAME + " M_{R}";
775  plot.mrME.first = ibooker.book1D(name, title, 100, 0., 100.);
776  plot.mrME.first->setAxisTitle(plot.xTITLE + " M_{R} [GeV]", 1);
777 
778  if (plot.rsqME.second)
779  ibooker.setCurrentFolder(mainFolder_);
780  else
781  ibooker.setCurrentFolder(backupFolder_);
782 
783  name = plot.label + "_rsq";
784  title = plot.pathNAME + " RSQ";
785  plot.rsqME.first = ibooker.book1D(name, title, 100, 0., 100.);
786  plot.rsqME.first->setAxisTitle(plot.xTITLE + " RSQ [GeV]", 1);
787  }
788 
789  if (plot.doPlotDXY) {
790  if (plot.dxyME.second)
791  ibooker.setCurrentFolder(mainFolder_);
792  else
793  ibooker.setCurrentFolder(backupFolder_);
794 
795  name = plot.label + "_dxy";
796  title = plot.pathNAME + " d_{xy}";
797  int nbins = (plot.dxyBINNING).size() - 1;
798  std::vector<float> fbinning((plot.dxyBINNING).begin(), (plot.dxyBINNING).end());
799  float* arr = &fbinning[0];
800  plot.dxyME.first = ibooker.book1D(name, title, nbins, arr);
801  plot.dxyME.first->setAxisTitle(plot.xTITLE + " d_{xy} [cm]");
802  }
803 
804  if (plot.doPlotDZ) {
805  if (plot.dzME.second)
806  ibooker.setCurrentFolder(mainFolder_);
807  else
808  ibooker.setCurrentFolder(backupFolder_);
809 
810  name = plot.label + "_dz";
811  title = plot.pathNAME + " d_{z}";
812  int nbins = (plot.dzBINNING).size() - 1;
813  std::vector<float> fbinning((plot.dzBINNING).begin(), (plot.dzBINNING).end());
814  float* arr = &fbinning[0];
815  plot.dzME.first = ibooker.book1D(name, title, nbins, arr);
816  plot.dzME.first->setAxisTitle(plot.xTITLE + " d_{z} [cm]");
817  }
818 
819  if (plot.dRME.second)
820  ibooker.setCurrentFolder(mainFolder_);
821  else
822  ibooker.setCurrentFolder(backupFolder_);
823 
824  name = plot.label + "_dR";
825  title = plot.pathNAME + " di-object dR";
826  plot.dRME.first = ibooker.book1D(name, title, 50, 0., 5.);
827  plot.dRME.first->setAxisTitle(plot.xTITLE + " dR_{obj,obj}");
828 
829  if (plot.dRetaVSphiME.second)
830  ibooker.setCurrentFolder(mainFolder_);
831  else
832  ibooker.setCurrentFolder(backupFolder_);
833 
834  name = plot.label + "_dR_etaVSphi";
835  title = plot.pathNAME + " di-object dR in the #eta-#phi plane (of 1st obj)";
836  plot.dRetaVSphiME.first = ibooker.bookProfile2D(name, title, 60, -3., 3., 64, -3.2, 3.2, 0., 5.);
837  plot.dRetaVSphiME.first->setAxisTitle(plot.xTITLE + " #eta", 1);
838  plot.dRetaVSphiME.first->setAxisTitle(plot.xTITLE + " #phi", 2);
839  plot.dRetaVSphiME.first->setAxisTitle(plot.xTITLE + " dR_{obj,obj}", 3);
840 
841  if (plot.q1q2ME.second)
842  ibooker.setCurrentFolder(mainFolder_);
843  else
844  ibooker.setCurrentFolder(backupFolder_);
845 
846  name = plot.label + "_q1q2";
847  title = plot.pathNAME + " di-object q1xq2";
848  plot.q1q2ME.first = ibooker.book1D(name, title, 3, -1., 1.);
849  plot.q1q2ME.first->setAxisTitle(plot.xTITLE + " q_{obj1} x q_{obj2}");
850 
851  if (plot.doPlotDiMass) {
852  if (plot.dimassME.second)
853  ibooker.setCurrentFolder(mainFolder_);
854  else
855  ibooker.setCurrentFolder(backupFolder_);
856 
857  name = plot.label + "_dimass";
858  title = plot.pathNAME + " di-object mass";
859  int nbins = (plot.dimassBINNING).size() - 1;
860  std::vector<float> fbinning((plot.dimassBINNING).begin(), (plot.dimassBINNING).end());
861  float* arr = &fbinning[0];
862  plot.dimassME.first = ibooker.book1D(name, title, nbins, arr);
863  plot.dimassME.first->setAxisTitle(plot.xTITLE + " m_{obj,obj} [GeV]");
864  }
865  }
866 
867  if (debug_)
868  std::cout << "[HLTObjectsMonitor::bookHistograms] DONE" << std::endl;
869 }
#define LogDebug(id)
size
Write out results.
std::vector< hltPlot > hltPlots_
std::unordered_map< std::string, int > plotNamesToBins_
const MEbinning csv_binning_
#define end
Definition: vmac.h:39
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * eventsPlot_
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void HLTObjectsMonitor::dqmBeginRun ( edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)
overrideprivatevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 537 of file HLTObjectsMonitor.cc.

References gather_cfg::cout, debug_, hltConfig_, hltPlots_, HLTConfigProvider::init(), hltMonBTagIPClient_cfi::pathName, plotFactory::plot, processName_, HLTConfigProvider::removeVersion(), AlCaHLTBitMon_QueryRunRegistry::string, HLTConfigProvider::triggerIndex(), HLTConfigProvider::triggerNames(), and triggerPaths.

537  {
538  bool changed = true;
539  if (hltConfig_.init(iRun, iSetup, processName_, changed))
540  if (debug_)
541  std::cout << "[HLTObjectsMonitor::dqmBeginRun] extracting HLTconfig" << std::endl;
542 
543  //get path indicies from menu
544  std::string pathName_noVersion;
545  std::vector<std::string> triggerPaths = hltConfig_.triggerNames();
546 
547  if (debug_)
548  std::cout << "[HLTObjectsMonitor::dqmBeginRun] triggerPaths: " << triggerPaths.size() << " <--> "
549  << hltPlots_.size() << std::endl;
550 
551  for (const auto& pathName : triggerPaths) {
552  if (debug_)
553  std::cout << "[HLTObjectsMonitor::dqmBeginRun] " << pathName << std::endl;
554 
555  pathName_noVersion = hltConfig_.removeVersion(pathName);
556  // std::cout << "pathName: " << pathName << " --> " << pathName_noVersion << std::endl;
557  for (auto& plot : hltPlots_) {
558  if (plot.pathNAME == pathName_noVersion) {
560  // check that the index makes sense, otherwise force pathIDX = -1
561  if (plot.pathIDX <= 0 || plot.pathIDX == int(triggerPaths.size()))
562  plot.pathIDX = -1;
563  }
564  }
565  }
566 
567  if (debug_) {
568  for (const auto& plot : hltPlots_)
569  std::cout << "plot: " << plot.pathNAME << " --> pathIDX: " << plot.pathIDX << std::endl;
570  std::cout << "[HLTObjectsMonitor::dqmBeginRun] DONE" << std::endl;
571  }
572 }
std::vector< hltPlot > hltPlots_
const std::vector< std::string > & triggerNames() const
names of trigger paths
static const std::string removeVersion(const std::string &trigger)
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
HLTConfigProvider hltConfig_
static std::string const triggerPaths
Definition: EdmProvDump.cc:46
double HLTObjectsMonitor::dxyFinder ( double  eta,
double  phi,
edm::Handle< reco::RecoChargedCandidateCollection candidates,
edm::Handle< reco::BeamSpot beamspot,
double  dRcut = 0.1 
)
private

Definition at line 871 of file HLTObjectsMonitor.cc.

References beamSpot_, PbPb_ZMuSkimMuonDPG_cff::deltaR, PVValHelper::dxy, eleCandidates_, edm::HandleBase::isValid(), LogDebug, muonTagProbeFilters_cff::matched, muCandidates_, reco::BeamSpot::x0(), and reco::BeamSpot::y0().

Referenced by analyze().

875  {
876  double dxy = -99.;
877  if (!candidates.isValid()) {
878  LogDebug("HLTObjectsMonitor") << "either " << muCandidates_ << " or " << eleCandidates_
879  << " is not valid ! please, update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py"
880  << " by switching OFF doPlotDXY or updating the InputTag collection";
881  return dxy;
882  }
883  if (!beamspot.isValid()) {
884  LogDebug("HLTObjectsMonitor") << beamSpot_
885  << " is not valid ! please, update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py"
886  << " by switching OFF doPlotDXY or updating the InputTag collection";
887  return dxy;
888  }
889 
890  bool matched = false;
891  for (reco::RecoChargedCandidateCollection::const_iterator candidate = candidates->begin();
892  candidate != candidates->end();
893  ++candidate) {
894  if (deltaR(eta, phi, candidate->eta(), candidate->phi()) < dRcut) {
895  matched = true;
896  dxy = (-(candidate->vx() - beamspot->x0()) * candidate->py() +
897  (candidate->vy() - beamspot->y0()) * candidate->px()) /
898  candidate->pt();
899  break;
900  }
901  }
902  if (!matched)
903  edm::LogWarning("HLTObjectsMonitor") << "trigger object does not match ( dR > " << dRcut
904  << ") to any of the candidates in either " << muCandidates_ << " or "
905  << eleCandidates_;
906 
907  return dxy;
908 }
#define LogDebug(id)
edm::InputTag muCandidates_
edm::InputTag beamSpot_
edm::InputTag eleCandidates_
bool isValid() const
Definition: HandleBase.h:70
double y0() const
y coordinate
Definition: BeamSpot.h:63
double x0() const
x coordinate
Definition: BeamSpot.h:61
double HLTObjectsMonitor::dzFinder ( double  eta1,
double  phi1,
double  eta2,
double  phi2,
edm::Handle< reco::RecoChargedCandidateCollection candidates,
double  dRcut = 0.1 
)
private

Definition at line 910 of file HLTObjectsMonitor.cc.

References gather_cfg::cout, debug_, DEFINE_FWK_MODULE, PbPb_ZMuSkimMuonDPG_cff::deltaR, PVValHelper::dz, eleCandidates_, reco::LeafCandidate::eta(), edm::HandleBase::isValid(), LogDebug, muCandidates_, reco::LeafCandidate::phi(), reco::LeafCandidate::pt(), and reco::LeafCandidate::vz().

Referenced by analyze().

915  {
916  double dz = -99.;
917  if (!candidates.isValid()) {
918  LogDebug("HLTObjectsMonitor") << "either " << muCandidates_ << " or " << eleCandidates_
919  << " is not valid ! please, update DQM/HLTEvF/python/HLTObjectsMonitor_cfi.py"
920  << " by switching OFF doPlotDZ or updating the InputTag collection";
921  return dz;
922  }
923 
924  const reco::RecoChargedCandidate* cand1;
925  const reco::RecoChargedCandidate* cand2;
926  bool matched1 = false;
927  bool matched2 = false;
928  for (reco::RecoChargedCandidateCollection::const_iterator candidate = candidates->begin();
929  candidate != candidates->end();
930  ++candidate) {
931  if (deltaR(eta1, phi1, candidate->eta(), candidate->phi()) < dRcut) {
932  matched1 = true;
933  cand1 = &*candidate;
934  if (debug_)
935  std::cout << "cand1: " << cand1->pt() << " " << cand1->eta() << " " << cand1->phi() << std::endl;
936  break;
937  }
938  }
939  if (!matched1) {
940  LogDebug("HLTObjectsMonitor") << "trigger object1 does not match ( dR > " << dRcut
941  << ") to any of the candidates in either " << muCandidates_ << " or "
942  << eleCandidates_;
943  return dz;
944  }
945 
946  for (reco::RecoChargedCandidateCollection::const_iterator candidate = candidates->begin();
947  candidate != candidates->end();
948  ++candidate) {
949  if (debug_) {
950  std::cout << "candidate: " << candidate->pt() << " cand1: " << cand1->pt() << std::endl;
951  std::cout << "candidate: " << candidate->eta() << " cand1: " << cand1->eta() << std::endl;
952  std::cout << "candidate: " << candidate->phi() << " cand1: " << cand1->phi() << std::endl;
953  }
954  if (&*candidate == cand1)
955  continue;
956 
957  if (deltaR(eta2, phi2, candidate->eta(), candidate->phi()) < dRcut) {
958  matched2 = true;
959  cand2 = &*candidate;
960  if (debug_)
961  std::cout << "cand2: " << cand2->pt() << " " << cand2->eta() << " " << cand2->phi() << std::endl;
962  break;
963  }
964  }
965  if (!matched2) {
966  LogDebug("HLTObjectsMonitor") << "trigger object2 does not match ( dR > " << dRcut
967  << ") to any of the candidates in either " << muCandidates_ << " or "
968  << eleCandidates_;
969  return dz;
970  }
971 
972  dz = cand1->vz() - cand2->vz();
973  return dz;
974 }
#define LogDebug(id)
double eta() const final
momentum pseudorapidity
edm::InputTag muCandidates_
double pt() const final
transverse momentum
edm::InputTag eleCandidates_
bool isValid() const
Definition: HandleBase.h:70
double vz() const override
z coordinate of vertex position
double phi() const final
momentum azimuthal angle
hltPlot HLTObjectsMonitor::getPlotPSet ( edm::ParameterSet  pset)
staticprivate

Definition at line 191 of file HLTObjectsMonitor.cc.

References edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

191  {
192  return hltPlot{std::make_pair<MonitorElement*, bool>(nullptr, false),
193  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_eta")),
194  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_phi")),
195  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_pt")),
196  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_mass")),
197  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_energy")),
198  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_csv")),
199  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_etaVSphi")),
200  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_pt_HEP17")),
201  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_pt_HEM17")),
202  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_MR")),
203  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_RSQ")),
204  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_dxy")),
205  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_dz")),
206  std::make_pair<MonitorElement*, bool>(nullptr, pset.getParameter<bool>("displayInPrimary_dimass")),
207  std::make_pair<MonitorElement*, bool>(nullptr, false),
208  std::make_pair<MonitorElement*, bool>(nullptr, false),
209  std::make_pair<MonitorElement*, bool>(nullptr, false),
210  pset.getParameter<std::string>("label"),
211  pset.getParameter<std::string>("pathNAME"),
212  -1,
213  pset.getParameter<std::string>("moduleNAME"),
214  pset.getParameter<std::string>("xTITLE"),
215  pset.getParameter<std::vector<double>>("etaBINNING"),
216  pset.getParameter<std::vector<double>>("ptBINNING"),
217  pset.getParameter<std::vector<double>>("phiBINNING"),
218  pset.getParameter<std::vector<double>>("massBINNING"),
219  pset.getParameter<std::vector<double>>("dxyBINNING"),
220  pset.getParameter<std::vector<double>>("dzBINNING"),
221  pset.getParameter<std::vector<double>>("dimassBINNING"),
222  pset.getUntrackedParameter<bool>("doPlot2D", false),
223  pset.getUntrackedParameter<bool>("doPlotETA", true),
224  pset.getUntrackedParameter<bool>("doPlotMASS", false),
225  pset.getUntrackedParameter<bool>("doPlotENERGY", false),
226  pset.getUntrackedParameter<bool>("doPlotHEP17", true),
227  pset.getUntrackedParameter<bool>("doPlotCSV", false),
228  pset.getUntrackedParameter<bool>("doCALO", false),
229  pset.getUntrackedParameter<bool>("doPF", false),
230  pset.getUntrackedParameter<bool>("doPlotRazor", false),
231  pset.getUntrackedParameter<bool>("doPlotDXY", false),
232  pset.getUntrackedParameter<bool>("doPlotDZ", false),
233  pset.getUntrackedParameter<bool>("doPlotDiMass", false)};
234 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
void HLTObjectsMonitor::getPSet ( )
private

Definition at line 236 of file HLTObjectsMonitor.cc.

References muonDTDigis_cfi::pset.

Referenced by HLTObjectsMonitor().

236  {
237  for (const auto& pset : plotPSETS_)
238  hltPlots_.push_back(getPlotPSet(pset));
239 }
std::vector< hltPlot > hltPlots_
static hltPlot getPlotPSet(edm::ParameterSet pset)
std::vector< edm::ParameterSet > plotPSETS_
bool HLTObjectsMonitor::isHEM17 ( double  eta,
double  phi 
)
private

Definition at line 247 of file HLTObjectsMonitor.cc.

Referenced by analyze().

247  {
248  if ((eta >= -MAX_ETA_HEP17 && eta <= -MIN_ETA_HEP17) && (phi >= MIN_PHI_HEP17 && phi <= MAX_PHI_HEP17))
249  return true;
250  else
251  return false;
252 }
bool HLTObjectsMonitor::isHEP17 ( double  eta,
double  phi 
)
private

Definition at line 241 of file HLTObjectsMonitor.cc.

Referenced by analyze().

241  {
242  if ((eta >= MIN_ETA_HEP17 && eta <= MAX_ETA_HEP17) && (phi >= MIN_PHI_HEP17 && phi <= MAX_PHI_HEP17))
243  return true;
244  else
245  return false;
246 }

Member Data Documentation

std::string HLTObjectsMonitor::backupFolder_
private

Definition at line 133 of file HLTObjectsMonitor.cc.

Referenced by bookHistograms(), and HLTObjectsMonitor().

edm::InputTag HLTObjectsMonitor::beamSpot_
private

Definition at line 138 of file HLTObjectsMonitor.cc.

Referenced by dxyFinder().

edm::EDGetTokenT<reco::BeamSpot> HLTObjectsMonitor::beamSpotToken_
private

Definition at line 139 of file HLTObjectsMonitor.cc.

Referenced by analyze().

edm::EDGetTokenT<reco::JetTagCollection> HLTObjectsMonitor::caloJetBTagsToken_
private

Definition at line 141 of file HLTObjectsMonitor.cc.

Referenced by analyze().

const MEbinning HLTObjectsMonitor::csv_binning_ {N_CSV, -MAX_CSV, MAX_CSV}
private

Definition at line 163 of file HLTObjectsMonitor.cc.

Referenced by bookHistograms().

bool HLTObjectsMonitor::debug_
private

Definition at line 130 of file HLTObjectsMonitor.cc.

Referenced by analyze(), bookHistograms(), dqmBeginRun(), and dzFinder().

edm::InputTag HLTObjectsMonitor::eleCandidates_
private

Definition at line 146 of file HLTObjectsMonitor.cc.

Referenced by dxyFinder(), and dzFinder().

edm::EDGetTokenT<std::vector<reco::RecoChargedCandidate> > HLTObjectsMonitor::eleCandidatesToken_
private

Definition at line 147 of file HLTObjectsMonitor.cc.

Referenced by analyze().

const MEbinning HLTObjectsMonitor::eta_binning_hem17_ {N_ETA_HEP17, -MAX_ETA_HEP17, MIN_ETA_HEP17}
private

Definition at line 181 of file HLTObjectsMonitor.cc.

const MEbinning HLTObjectsMonitor::eta_binning_hep17_ {N_ETA_HEP17, MIN_ETA_HEP17, MAX_ETA_HEP17}
private

Definition at line 179 of file HLTObjectsMonitor.cc.

MonitorElement* HLTObjectsMonitor::eventsPlot_
private

Definition at line 126 of file HLTObjectsMonitor.cc.

Referenced by analyze(), and bookHistograms().

HLTConfigProvider HLTObjectsMonitor::hltConfig_
private

Definition at line 124 of file HLTObjectsMonitor.cc.

Referenced by analyze(), and dqmBeginRun().

std::vector<hltPlot> HLTObjectsMonitor::hltPlots_
private

Definition at line 127 of file HLTObjectsMonitor.cc.

Referenced by analyze(), bookHistograms(), and dqmBeginRun().

std::string HLTObjectsMonitor::label_
private
std::string HLTObjectsMonitor::mainFolder_
private

Definition at line 132 of file HLTObjectsMonitor.cc.

Referenced by bookHistograms(), and HLTObjectsMonitor().

const double HLTObjectsMonitor::MASS_MU = .105658
private

Definition at line 149 of file HLTObjectsMonitor.cc.

Referenced by analyze().

double HLTObjectsMonitor::MAX_CSV = 1.
private

Definition at line 161 of file HLTObjectsMonitor.cc.

double HLTObjectsMonitor::MAX_ETA_HEP17 = 3.0
private

Definition at line 176 of file HLTObjectsMonitor.cc.

double HLTObjectsMonitor::MAX_PHI = 3.2
private

Definition at line 157 of file HLTObjectsMonitor.cc.

Referenced by HLTObjectsMonitor().

double HLTObjectsMonitor::MAX_PHI_HEP17 = -0.52
private

Definition at line 172 of file HLTObjectsMonitor.cc.

double HLTObjectsMonitor::MIN_ETA_HEP17 = 1.3
private

Definition at line 177 of file HLTObjectsMonitor.cc.

double HLTObjectsMonitor::MIN_PHI_HEP17 = -0.87
private

Definition at line 173 of file HLTObjectsMonitor.cc.

edm::InputTag HLTObjectsMonitor::muCandidates_
private

Definition at line 144 of file HLTObjectsMonitor.cc.

Referenced by dxyFinder(), and dzFinder().

edm::EDGetTokenT<std::vector<reco::RecoChargedCandidate> > HLTObjectsMonitor::muCandidatesToken_
private

Definition at line 145 of file HLTObjectsMonitor.cc.

Referenced by analyze().

int HLTObjectsMonitor::N_CSV = 20
private

Definition at line 162 of file HLTObjectsMonitor.cc.

int HLTObjectsMonitor::N_ETA_HEP17 = 6
private

Definition at line 178 of file HLTObjectsMonitor.cc.

int HLTObjectsMonitor::N_PHI = 64
private

Definition at line 158 of file HLTObjectsMonitor.cc.

Referenced by HLTObjectsMonitor().

int HLTObjectsMonitor::N_PHI_HEP17 = 7
private

Definition at line 174 of file HLTObjectsMonitor.cc.

edm::EDGetTokenT<reco::JetTagCollection> HLTObjectsMonitor::pfJetBTagsToken_
private

Definition at line 142 of file HLTObjectsMonitor.cc.

Referenced by analyze().

const MEbinning HLTObjectsMonitor::phi_binning_ {N_PHI, -MAX_PHI, MAX_PHI}
private

Definition at line 159 of file HLTObjectsMonitor.cc.

const MEbinning HLTObjectsMonitor::phi_binning_hep17_ {N_PHI_HEP17, MIN_PHI_HEP17, MAX_PHI_HEP17}
private

Definition at line 175 of file HLTObjectsMonitor.cc.

std::vector<double> HLTObjectsMonitor::phi_variable_binning_
private

Definition at line 165 of file HLTObjectsMonitor.cc.

Referenced by HLTObjectsMonitor().

std::unordered_map<std::string, int> HLTObjectsMonitor::plotNamesToBins_
private

Definition at line 128 of file HLTObjectsMonitor.cc.

Referenced by analyze(), and bookHistograms().

std::vector<edm::ParameterSet> HLTObjectsMonitor::plotPSETS_
private

Definition at line 122 of file HLTObjectsMonitor.cc.

std::string HLTObjectsMonitor::processName_
private

Definition at line 121 of file HLTObjectsMonitor.cc.

Referenced by analyze(), and dqmBeginRun().

std::string HLTObjectsMonitor::TopFolder_
private

Definition at line 119 of file HLTObjectsMonitor.cc.

Referenced by bookHistograms(), and HLTObjectsMonitor().

edm::EDGetTokenT<trigger::TriggerEvent> HLTObjectsMonitor::triggerEventToken_
private

Definition at line 136 of file HLTObjectsMonitor.cc.

Referenced by analyze().

edm::EDGetTokenT<edm::TriggerResults> HLTObjectsMonitor::triggerResultsToken_
private

Definition at line 135 of file HLTObjectsMonitor.cc.

Referenced by analyze().