CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
HLTTauDQMTagAndProbePlotter Class Reference

#include <HLTTauDQMTagAndProbePlotter.h>

Inheritance diagram for HLTTauDQMTagAndProbePlotter:
HLTTauDQMPlotter

Public Member Functions

void analyze (edm::Event const &iEvent, const edm::TriggerResults &triggerResults, const trigger::TriggerEvent &triggerEvent, const HLTTauDQMOfflineObjects &refCollection)
 
void bookHistograms (DQMStore::IBooker &iBooker, edm::Run const &iRun, edm::EventSetup const &iSetup)
 
 HLTTauDQMTagAndProbePlotter (const edm::ParameterSet &iConfig, const std::vector< std::string > &modLabels, const std::string &dqmBaseFolder)
 
 ~HLTTauDQMTagAndProbePlotter ()
 

Private Member Functions

LV findTrgObject (std::string, const trigger::TriggerEvent &)
 
- Private Member Functions inherited from HLTTauDQMPlotter
 HLTTauDQMPlotter (const edm::ParameterSet &pset, std::string dqmBaseFolder)
 
 HLTTauDQMPlotter (const std::string &dqmFolder, const std::string &dqmBaseFolder)
 
bool isValid () const
 
 ~HLTTauDQMPlotter ()
 
std::pair< bool, LVmatch (const LV &, const LVColl &, double)
 
const std::string & triggerTag () const
 

Private Attributes

std::vector< std::string > denTriggers
 
double etamax_
 
double etamin_
 
MonitorElementh_den_eta
 
MonitorElementh_den_etaphi
 
MonitorElementh_den_phi
 
MonitorElementh_den_pt
 
MonitorElementh_num_eta
 
MonitorElementh_num_etaphi
 
MonitorElementh_num_phi
 
MonitorElementh_num_pt
 
std::vector< std::string > moduleLabels
 
int nbinsEta_
 
const int nbinsPhi_
 
const int nbinsPt_
 
unsigned int nOfflineObjs
 
std::vector< std::string > numTriggers
 
const double phimax_
 
const double phimin_
 
const double ptmax_
 
const double ptmin_
 
std::string xvariable
 
- Private Attributes inherited from HLTTauDQMPlotter
bool configValid_
 
std::string dqmFolder_
 
std::string dqmFullFolder_
 

Detailed Description

Definition at line 23 of file HLTTauDQMTagAndProbePlotter.h.

Constructor & Destructor Documentation

HLTTauDQMTagAndProbePlotter::HLTTauDQMTagAndProbePlotter ( const edm::ParameterSet iConfig,
const std::vector< std::string > &  modLabels,
const std::string &  dqmBaseFolder 
)

Definition at line 19 of file HLTTauDQMTagAndProbePlotter.cc.

References denTriggers, etamax_, etamin_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), moduleLabels, nbinsEta_, nOfflineObjs, numTriggers, and xvariable.

19  :
20  HLTTauDQMPlotter(stripVersion(iConfig.getParameter<std::string>("name")), dqmBaseFolder),
21  nbinsPt_(iConfig.getParameter<int>("nPtBins")),
22  ptmin_(iConfig.getParameter<double>("ptmin")),
23  ptmax_(iConfig.getParameter<double>("ptmax")),
24  nbinsPhi_(iConfig.getParameter<int>("nPhiBins")),
25  phimin_(iConfig.getParameter<double>("phimin")),
26  phimax_(iConfig.getParameter<double>("phimax")),
27  xvariable(iConfig.getParameter<std::string>("xvariable"))
28 {
29  numTriggers = iConfig.getParameter<edm::ParameterSet>("numerator").getParameter<std::vector<std::string> >("hltPaths");
30  denTriggers = iConfig.getParameter<edm::ParameterSet>("denominator").getParameter<std::vector<std::string> >("hltPaths");
31 
32  moduleLabels = modLabels;
33 
34  boost::algorithm::to_lower(xvariable);
35 
36  if(xvariable!="met"){
37  nbinsEta_ = iConfig.getParameter<int>("nEtaBins");
38  etamin_ = iConfig.getParameter<double>("etamin");
39  etamax_ = iConfig.getParameter<double>("etamax");
40  }
41 
42  nOfflineObjs = iConfig.getUntrackedParameter<unsigned int>("nOfflObjs",1);
43 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::vector< std::string > moduleLabels
std::vector< std::string > numTriggers
HLTTauDQMPlotter(const edm::ParameterSet &pset, std::string dqmBaseFolder)
std::vector< std::string > denTriggers
HLTTauDQMTagAndProbePlotter::~HLTTauDQMTagAndProbePlotter ( )
default

Referenced by bookHistograms().

Member Function Documentation

void HLTTauDQMTagAndProbePlotter::analyze ( edm::Event const &  iEvent,
const edm::TriggerResults triggerResults,
const trigger::TriggerEvent triggerEvent,
const HLTTauDQMOfflineObjects refCollection 
)

Definition at line 94 of file HLTTauDQMTagAndProbePlotter.cc.

References edm::HLTGlobalStatus::accept(), HiRegitMuonDetachedTripletStep_cff::DeltaR, denTriggers, runTauDisplay::dr, HLTTauDQMOfflineObjects::electrons, MonitorElement::Fill(), findTrgObject(), h_den_eta, h_den_etaphi, h_den_phi, h_den_pt, h_num_eta, h_num_etaphi, h_num_phi, h_num_pt, mps_fire::i, HLTTauDQMOfflineObjects::met, HLTTauDQMOfflineObjects::muons, nOfflineObjs, numTriggers, edm::TriggerNames::size(), HLTTauDQMOfflineObjects::taus, edm::TriggerNames::triggerName(), edm::Event::triggerNames(), trigNames, edm::HLTGlobalStatus::wasrun(), and xvariable.

94  {
95  std::vector<LV> offlineObjects;
96  if(xvariable == "tau") offlineObjects = refCollection.taus;
97  if(xvariable == "muon") offlineObjects = refCollection.muons;
98  if(xvariable == "electron") offlineObjects = refCollection.electrons;
99  if(xvariable == "met") offlineObjects = refCollection.met;
100 
101  if(offlineObjects.size() < nOfflineObjs) return;
102 
103  const edm::TriggerNames& trigNames = iEvent.triggerNames(triggerResults);
104 
105  for(const LV& offlineObject: offlineObjects) {
106  // Filter out events if Trigger Filtering is requested
107  bool passTrigger = false;
108  bool hltMatched = false;
109  for ( size_t i = 0; i < denTriggers.size(); ++i){
110  LV trgObject = findTrgObject(denTriggers[i],triggerEvent);
111 
112  for ( unsigned int hltIndex = 0; hltIndex < trigNames.size(); ++hltIndex){
113  passTrigger = (trigNames.triggerName(hltIndex).find(denTriggers[i]) != std::string::npos && triggerResults.wasrun(hltIndex) && triggerResults.accept(hltIndex));
114 
115  if (passTrigger) {
116  double dr = ROOT::Math::VectorUtil::DeltaR(trgObject,offlineObject);
117  if(dr < 0.4) hltMatched = true;
118  break;
119  }
120  }
121  if (passTrigger) break;
122  }
123  if(!passTrigger) return;
124  if(hltMatched) return; // do not consider offline objects which match the tag trigger
125 
126  h_den_pt->Fill(offlineObject.pt());
127  if(xvariable != "met"){
128  h_den_eta->Fill(offlineObject.eta());
129  h_den_etaphi->Fill(offlineObject.eta(),offlineObject.phi());
130  }
131  h_den_phi->Fill(offlineObject.phi());
132 
133  // applying selection for numerator
134  passTrigger = false;
135  for ( size_t i = 0; i < numTriggers.size(); ++i){
136  for ( unsigned int hltIndex = 0; hltIndex < trigNames.size(); ++hltIndex){
137  passTrigger = (trigNames.triggerName(hltIndex).find(numTriggers[i]) != std::string::npos && triggerResults.wasrun(hltIndex) && triggerResults.accept(hltIndex));
138  if (passTrigger) break;
139  }
140  if (passTrigger) break;
141  }
142  if(!passTrigger) return;
143 
144  h_num_pt->Fill(offlineObject.pt());
145  if(xvariable != "met"){
146  h_num_eta->Fill(offlineObject.eta());
147  h_num_etaphi->Fill(offlineObject.eta(),offlineObject.phi());
148  }
149  h_num_phi->Fill(offlineObject.phi());
150 
151 
152  }
153 }
bool wasrun() const
Was at least one path run?
std::vector< LV > electrons
LV findTrgObject(std::string, const trigger::TriggerEvent &)
std::vector< LV > taus
math::XYZTLorentzVectorD LV
std::vector< std::string > numTriggers
bool accept() const
Has at least one path accepted the event?
Strings::size_type size() const
Definition: TriggerNames.cc:31
void Fill(long long x)
int iEvent
Definition: GenABIO.cc:224
std::vector< LV > met
static const char *const trigNames[]
Definition: EcalDumpRaw.cc:74
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:22
std::vector< std::string > denTriggers
std::vector< LV > muons
void HLTTauDQMTagAndProbePlotter::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  iRun,
edm::EventSetup const &  iSetup 
)

Definition at line 46 of file HLTTauDQMTagAndProbePlotter.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), etamax_, etamin_, MonitorElement::getTH2F(), h_den_eta, h_den_etaphi, h_den_phi, h_den_pt, h_num_eta, h_num_etaphi, h_num_phi, h_num_pt, HLTTauDQMPlotter::isValid(), nbinsEta_, nbinsPhi_, nbinsPt_, phimax_, phimin_, ptmax_, ptmin_, DQMStore::IBooker::setCurrentFolder(), HLTTauDQMPlotter::triggerTag(), xvariable, and ~HLTTauDQMTagAndProbePlotter().

46  {
47  if(!isValid())
48  return;
49 
50  // Efficiency helpers
51  iBooker.setCurrentFolder(triggerTag()+"/helpers");
52  h_num_pt = iBooker.book1D(xvariable+"EtEffNum", "", nbinsPt_, ptmin_, ptmax_);
53  h_den_pt = iBooker.book1D(xvariable+"EtEffDenom", "", nbinsPt_, ptmin_, ptmax_);
54 
55  if(xvariable != "met"){
56  h_num_eta = iBooker.book1D(xvariable+"EtaEffNum", "", nbinsEta_, etamin_, etamax_);
57  h_den_eta = iBooker.book1D(xvariable+"EtaEffDenom", "", nbinsEta_, etamin_, etamax_);
58 
59  h_num_etaphi = iBooker.book2D(xvariable+"EtaPhiEffNum", "", nbinsEta_, etamin_, etamax_, nbinsPhi_, phimin_, phimax_);
60  h_den_etaphi = iBooker.book2D(xvariable+"EtaPhiEffDenom", "", nbinsEta_, etamin_, etamax_, nbinsPhi_, phimin_, phimax_);
61  h_den_etaphi->getTH2F()->SetOption("COL");
62  }
63 
64  h_num_phi = iBooker.book1D(xvariable+"PhiEffNum", "", nbinsPhi_, phimin_, phimax_);
65  h_den_phi = iBooker.book1D(xvariable+"PhiEffDenom", "", nbinsPhi_, phimin_, phimax_);
66 
67  iBooker.setCurrentFolder(triggerTag());
68 }
bool isValid() const
const std::string & triggerTag() const
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:106
TH2F * getTH2F() const
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:109
LV HLTTauDQMTagAndProbePlotter::findTrgObject ( std::string  pathName,
const trigger::TriggerEvent triggerEvent 
)
private

Definition at line 73 of file HLTTauDQMTagAndProbePlotter.cc.

References trigger::TriggerObject::energy(), trigger::TriggerEvent::filterIds(), trigger::TriggerEvent::filterIndex(), trigger::TriggerEvent::filterKeys(), trigger::TriggerEvent::getObjects(), moduleLabels, trigger::TriggerObject::px(), trigger::TriggerObject::py(), trigger::TriggerObject::pz(), trigger::TriggerEvent::sizeFilters(), and TriggerAnalyzer::trigObjs.

Referenced by analyze().

73  {
75  const unsigned moduleIndex = moduleLabels.size()-2;
76 
77  const unsigned hltFilterIndex = triggerEvent.filterIndex(edm::InputTag(moduleLabels[moduleIndex],"","HLT"));
78 
79  if (hltFilterIndex < triggerEvent.sizeFilters()) {
80  const trigger::Keys& triggerKeys(triggerEvent.filterKeys(hltFilterIndex));
81  const trigger::Vids& triggerVids(triggerEvent.filterIds(hltFilterIndex));
82 
83  const unsigned nTriggers = triggerVids.size();
84  for (size_t iTrig = 0; iTrig < nTriggers; ++iTrig) {
85  const trigger::TriggerObject trigObject = trigObjs[triggerKeys[iTrig]];
86 // std::cout << " trigger objs pt,eta,phi: " << triggerKeys[iTrig] << " "
87 // << trigObject.pt() << " " << trigObject.eta() << " " << trigObject.phi() << " " << trigObject.id() << std::endl;
88  return LV(trigObject.px(),trigObject.py(),trigObject.pz(),trigObject.energy());
89  }
90  }
91  return LV(0,0,0,0);
92 }
std::vector< std::string > moduleLabels
trigger::size_type sizeFilters() const
Definition: TriggerEvent.h:135
math::XYZTLorentzVectorD LV
const Keys & filterKeys(trigger::size_type index) const
Definition: TriggerEvent.h:111
trigger::size_type filterIndex(const edm::InputTag &filterTag) const
find index of filter in data-member vector from filter tag
Definition: TriggerEvent.h:123
float energy() const
Definition: TriggerObject.h:65
Single trigger physics object (e.g., an isolated muon)
Definition: TriggerObject.h:22
const Vids & filterIds(trigger::size_type index) const
Definition: TriggerEvent.h:110
const TriggerObjectCollection & getObjects() const
Definition: TriggerEvent.h:98
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
Definition: TriggerObject.h:81
std::vector< size_type > Keys
std::vector< int > Vids

Member Data Documentation

std::vector<std::string> HLTTauDQMTagAndProbePlotter::denTriggers
private

Definition at line 47 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and HLTTauDQMTagAndProbePlotter().

double HLTTauDQMTagAndProbePlotter::etamax_
private

Definition at line 41 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms(), and HLTTauDQMTagAndProbePlotter().

double HLTTauDQMTagAndProbePlotter::etamin_
private

Definition at line 41 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms(), and HLTTauDQMTagAndProbePlotter().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_den_eta
private

Definition at line 57 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_den_etaphi
private

Definition at line 63 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_den_phi
private

Definition at line 60 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_den_pt
private

Definition at line 54 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_num_eta
private

Definition at line 56 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_num_etaphi
private

Definition at line 62 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_num_phi
private

Definition at line 59 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

MonitorElement* HLTTauDQMTagAndProbePlotter::h_num_pt
private

Definition at line 53 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and bookHistograms().

std::vector<std::string> HLTTauDQMTagAndProbePlotter::moduleLabels
private

Definition at line 49 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by findTrgObject(), and HLTTauDQMTagAndProbePlotter().

int HLTTauDQMTagAndProbePlotter::nbinsEta_
private

Definition at line 40 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms(), and HLTTauDQMTagAndProbePlotter().

const int HLTTauDQMTagAndProbePlotter::nbinsPhi_
private

Definition at line 42 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms().

const int HLTTauDQMTagAndProbePlotter::nbinsPt_
private

Definition at line 38 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms().

unsigned int HLTTauDQMTagAndProbePlotter::nOfflineObjs
private

Definition at line 51 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and HLTTauDQMTagAndProbePlotter().

std::vector<std::string> HLTTauDQMTagAndProbePlotter::numTriggers
private

Definition at line 46 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by analyze(), and HLTTauDQMTagAndProbePlotter().

const double HLTTauDQMTagAndProbePlotter::phimax_
private

Definition at line 43 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms().

const double HLTTauDQMTagAndProbePlotter::phimin_
private

Definition at line 43 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms().

const double HLTTauDQMTagAndProbePlotter::ptmax_
private

Definition at line 39 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms().

const double HLTTauDQMTagAndProbePlotter::ptmin_
private

Definition at line 39 of file HLTTauDQMTagAndProbePlotter.h.

Referenced by bookHistograms().

std::string HLTTauDQMTagAndProbePlotter::xvariable
private