CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
HLTMuonPlotter Class Reference

#include <HLTMuonPlotter.h>

Classes

struct  matchesByDescendingPt
 
struct  MatchStruct
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
 
void beginJob ()
 
void beginRun (DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &)
 
 HLTMuonPlotter (const edm::ParameterSet &, std::string, const std::vector< std::string > &, const std::vector< std::string > &, const boost::tuple< edm::EDGetTokenT< trigger::TriggerEventWithRefs >, edm::EDGetTokenT< reco::GenParticleCollection >, edm::EDGetTokenT< reco::MuonCollection > > &)
 
 ~HLTMuonPlotter ()
 

Static Public Member Functions

static boost::tuple< edm::EDGetTokenT< trigger::TriggerEventWithRefs >, edm::EDGetTokenT< reco::GenParticleCollection >, edm::EDGetTokenT< reco::MuonCollection > > getTokens (const edm::ParameterSet &, edm::ConsumesCollector &&)
 

Private Member Functions

void analyzePath (const edm::Event &, const std::string &, const std::string &, const std::vector< MatchStruct > &, edm::Handle< trigger::TriggerEventWithRefs >)
 
void bookHist (DQMStore::IBooker &, std::string, std::string, std::string, std::string)
 
void findMatches (std::vector< MatchStruct > &, const l1t::MuonVectorRef &candsL1, const std::vector< std::vector< const reco::RecoChargedCandidate * > > &)
 

Private Attributes

double cutMaxEta_
 
double cutMinPt_
 
unsigned int cutMotherId_
 
std::vector< double > cutsDr_
 
std::map< std::string, MonitorElement * > elements_
 
std::string genMuonCut_
 
StringCutObjectSelector< reco::GenParticle > * genMuonSelector_
 
edm::EDGetTokenT< reco::GenParticleCollectiongenParticleLabel_
 
std::string hltPath_
 
std::string hltProcessName_
 
edm::EDGetTokenT< trigger::TriggerEventWithRefshltTriggerSummaryRAW_
 
L1MuonMatcherAlgo l1Matcher_
 
std::vector< std::string > moduleLabels_
 
std::vector< double > parametersEta_
 
std::vector< double > parametersPhi_
 
std::vector< double > parametersTurnOn_
 
std::string recMuonCut_
 
edm::EDGetTokenT< reco::MuonCollectionrecMuonLabel_
 
StringCutObjectSelector< reco::Muon > * recMuonSelector_
 
std::vector< std::string > stepLabels_
 

Detailed Description

Generate histograms for muon trigger efficiencies Documentation available on the CMS TWiki: https://twiki.cern.ch/twiki/bin/view/CMS/MuonHLTOfflinePerformance

Author
J. Klukas, M. Vander Donckt, J. Alcaraz

Definition at line 58 of file HLTMuonPlotter.h.

Constructor & Destructor Documentation

HLTMuonPlotter::HLTMuonPlotter ( const edm::ParameterSet ,
std::string  ,
const std::vector< std::string > &  ,
const std::vector< std::string > &  ,
const boost::tuple< edm::EDGetTokenT< trigger::TriggerEventWithRefs >, edm::EDGetTokenT< reco::GenParticleCollection >, edm::EDGetTokenT< reco::MuonCollection > > &   
)

Definition at line 35 of file HLTMuonPlotter.cc.

References cutsDr_, genMuonCut_, genMuonSelector_, genParticleLabel_, edm::ParameterSet::getParameter(), TriggerAnalyzer::hltPath, hltPath_, hltProcessName_, hltTriggerSummaryRAW_, moduleLabels_, parametersEta_, parametersPhi_, parametersTurnOn_, recMuonCut_, recMuonLabel_, recMuonSelector_, and stepLabels_.

42  :
43 
45 {
46 
47  hltPath_ = hltPath;
48  moduleLabels_ = moduleLabels;
49  stepLabels_ = stepLabels;
50  hltProcessName_ = pset.getParameter<string>("hltProcessName");
51 
52  cutsDr_ = pset.getParameter< vector<double> >("cutsDr" );
53 
54  parametersEta_ = pset.getParameter< vector<double> >("parametersEta");
55  parametersPhi_ = pset.getParameter< vector<double> >("parametersPhi");
56  parametersTurnOn_ = pset.getParameter< vector<double> >("parametersTurnOn");
57 
58  genMuonCut_ = pset.getParameter<string>("genMuonCut");
59  recMuonCut_ = pset.getParameter<string>("recMuonCut");
60 
61  genMuonSelector_ = nullptr;
62  recMuonSelector_ = nullptr;
63 
64  //set tokens
65  hltTriggerSummaryRAW_ = tokens.get<0>();
66  genParticleLabel_ = tokens.get<1>();
67  recMuonLabel_ = tokens.get<2>();
68 
69 }
std::string hltPath_
std::vector< double > parametersEta_
L1MuonMatcherAlgo l1Matcher_
std::string genMuonCut_
std::vector< std::string > moduleLabels_
std::string recMuonCut_
StringCutObjectSelector< reco::Muon > * recMuonSelector_
std::vector< double > cutsDr_
edm::EDGetTokenT< reco::MuonCollection > recMuonLabel_
StringCutObjectSelector< reco::GenParticle > * genMuonSelector_
std::vector< std::string > stepLabels_
std::vector< double > parametersPhi_
std::string hltProcessName_
edm::EDGetTokenT< reco::GenParticleCollection > genParticleLabel_
edm::EDGetTokenT< trigger::TriggerEventWithRefs > hltTriggerSummaryRAW_
std::vector< double > parametersTurnOn_
HLTMuonPlotter::~HLTMuonPlotter ( )
inline

Definition at line 69 of file HLTMuonPlotter.h.

References analyze(), beginJob(), beginRun(), genMuonSelector_, getTokens(), and recMuonSelector_.

69  {
70  delete genMuonSelector_;
71  delete recMuonSelector_;
72  }
StringCutObjectSelector< reco::Muon > * recMuonSelector_
StringCutObjectSelector< reco::GenParticle > * genMuonSelector_

Member Function Documentation

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

Definition at line 136 of file HLTMuonPlotter.cc.

References KineDebug3::count(), cutMaxEta_, cutMinPt_, elements_, PVValHelper::eta, edm::HandleBase::failedToGet(), HcalObjRepresent::Fill(), trigger::TriggerEventWithRefs::filterIndex(), spr::find(), findMatches(), genMuonCut_, genMuonSelector_, genParticleLabel_, GenHFHadronMatcher_cfi::genParticles, edm::Event::getByToken(), trigger::TriggerEventWithRefs::getObjects(), hltPath_, hltProcessName_, hltTriggerSummaryRAW_, mps_fire::i, edm::HandleBase::isValid(), hcalDigis_cfi::level, LogTrace, patRefSel_triggerMatching_cfi::matches, moduleLabels_, phi, EnergyCorrector::pt, recMuonCut_, recMuonLabel_, recMuonSelector_, findQualityFiles::size, source, stepLabels_, GlobalPosition_Frontier_DevDB_cff::tag, trigger::TriggerL1Mu, and trigger::TriggerMuon.

Referenced by ~HLTMuonPlotter().

137 {
138 
139  static int eventNumber = 0;
140  eventNumber++;
141  LogTrace("HLTMuonVal") << "In HLTMuonPlotter::analyze, "
142  << "Event: " << eventNumber;
143 
144  // cout << hltPath_ << endl;
145  // for (size_t i = 0; i < moduleLabels_.size(); i++)
146  // cout << " " << moduleLabels_[i] << endl;
147 
148  Handle< TriggerEventWithRefs> rawTriggerEvent;
149  Handle< MuonCollection> recMuons;
151 
152  iEvent.getByToken(hltTriggerSummaryRAW_, rawTriggerEvent);
153  if (rawTriggerEvent.failedToGet())
154  {LogError("HLTMuonVal") << "No trigger summary found"; return;}
155  iEvent.getByToken(recMuonLabel_, recMuons);
156  iEvent.getByToken(genParticleLabel_, genParticles );
157 
158  vector<string> sources;
159  if (genParticles.isValid()) sources.push_back("gen");
160  if ( recMuons.isValid()) sources.push_back("rec");
161 
162  for (size_t sourceNo = 0; sourceNo < sources.size(); sourceNo++) {
163 
164  string source = sources[sourceNo];
165 
166  // If this is the first event, initialize selectors
171 
172  // Make each good gen/rec muon into the base cand for a MatchStruct
173  vector<MatchStruct> matches;
174  if (source == "gen" && genParticles.isValid())
175  for (size_t i = 0; i < genParticles->size(); i++)
176  if ((*genMuonSelector_)(genParticles->at(i)))
177  matches.push_back(MatchStruct(& genParticles->at(i)));
178  if (source == "rec" && recMuons.isValid())
179  for (size_t i = 0; i < recMuons->size(); i++)
180  if ((*recMuonSelector_)(recMuons->at(i)))
181  matches.push_back(MatchStruct(& recMuons->at(i)));
182 
183  // Sort the MatchStructs by pT for later filling of turn-on curve
184  sort(matches.begin(), matches.end(), matchesByDescendingPt());
185 
186  const bool isDoubleMuonPath = (hltPath_.find("Double") != string::npos);
187  const size_t nFilters = moduleLabels_.size();
188  const size_t nSteps = stepLabels_.size();
189  const size_t nStepsHlt = nSteps - 2;
190  const int nObjectsToPassPath = (isDoubleMuonPath) ? 2 : 1;
191  l1t::MuonVectorRef candsL1;
192  vector< vector< RecoChargedCandidateRef > > refsHlt(nStepsHlt);
193  vector< vector< const RecoChargedCandidate * > > candsHlt(nStepsHlt);
194 
195  for (size_t i = 0; i < nFilters; i++) {
196  const int hltStep = i - 1;
198  size_t iFilter = rawTriggerEvent->filterIndex(tag);
199  if (iFilter < rawTriggerEvent->size()) {
200  if (i == 0)
201  rawTriggerEvent->getObjects(iFilter, TriggerL1Mu, candsL1);
202  else
203  rawTriggerEvent->getObjects(iFilter, TriggerMuon,
204  refsHlt[hltStep]);
205  }
206  else LogTrace("HLTMuonVal") << "No collection with label " << tag;
207  }
208  for (size_t i = 0; i < nStepsHlt; i++)
209  for (size_t j = 0; j < refsHlt[i].size(); j++)
210  if (refsHlt[i][j].isAvailable()) {
211  candsHlt[i].push_back(& * refsHlt[i][j]);
212  } else {
213  LogWarning("HLTMuonPlotter")
214  << "Ref refsHlt[i][j]: product not available "
215  << i << " " << j;
216  }
217 
218  // Add trigger objects to the MatchStructs
219  findMatches(matches, candsL1, candsHlt);
220 
221  vector<size_t> matchesInEtaRange;
222  vector<bool> hasMatch(matches.size(), true);
223 
224  for (size_t step = 0; step < nSteps; step++) {
225 
226  size_t hltStep = (step >= 2) ? step - 2 : 0;
227  if (nSteps == 6) hltStep=hltStep-1; // case of the tracker muon (it has no L2)
228  size_t level = 0;
229  if ((stepLabels_[step].find("L3TkIso") != string::npos)||(stepLabels_[step].find("TkTkIso") != string::npos)) level = 6;
230  else if ((stepLabels_[step].find("L3HcalIso") != string::npos)||(stepLabels_[step].find("TkEcalIso") != string::npos)) level = 5;
231  else if ((stepLabels_[step].find("L3EcalIso") != string::npos)||(stepLabels_[step].find("TkEcalIso") != string::npos)) level = 4;
232  else if ((stepLabels_[step].find("L3") != string::npos)||(stepLabels_[step].find("Tk") != string::npos)) level = 3;
233  else if (stepLabels_[step].find("L2") != string::npos) level = 2;
234  else if (stepLabels_[step].find("L1") != string::npos) level = 1;
235 
236  for (size_t j = 0; j < matches.size(); j++) {
237  if (level == 0) {
238  if (fabs(matches[j].candBase->eta()) < cutMaxEta_)
239  matchesInEtaRange.push_back(j);
240  }
241  else if (level == 1) {
242  if (matches[j].candL1 == nullptr)
243  hasMatch[j] = false;
244  }
245  else if (level >= 2) {
246  if (matches[j].candHlt[hltStep] == nullptr)
247  hasMatch[j] = false;
248  else if (!hasMatch[j]) {
249  LogTrace("HLTMuonVal") << "Match found for HLT step " << hltStep
250  << " of " << nStepsHlt
251  << " without previous match!";
252  break;
253  }
254  }
255  }
256 
257  if (std::count(hasMatch.begin(), hasMatch.end(), true) <
258  nObjectsToPassPath)
259  break;
260 
261  string pre = source + "Pass";
262  string post = "_" + stepLabels_[step];
263 
264  for (size_t j = 0; j < matches.size(); j++) {
265  float pt = matches[j].candBase->pt();
266  float eta = matches[j].candBase->eta();
267  float phi = matches[j].candBase->phi();
268  if (hasMatch[j]) {
269  if (!matchesInEtaRange.empty() && j == matchesInEtaRange[0])
270  elements_[pre + "MaxPt1" + post]->Fill(pt);
271  if (matchesInEtaRange.size() >= 2 && j == matchesInEtaRange[1])
272  elements_[pre + "MaxPt2" + post]->Fill(pt);
273  if (pt > cutMinPt_) {
274  elements_[pre + "Eta" + post]->Fill(eta);
275  if (fabs(eta) < cutMaxEta_)
276  elements_[pre + "Phi" + post]->Fill(phi);
277  }
278  }
279  }
280 
281  }
282 
283 
284 
285  } // End loop over sources
286 
287 }
size
Write out results.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
enum start value shifted to 81 so as to avoid clashes with PDG codes
std::string hltPath_
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
std::string genMuonCut_
std::vector< std::string > moduleLabels_
std::vector< MuonRef > MuonVectorRef
Definition: Muon.h:15
std::string recMuonCut_
StringCutObjectSelector< reco::Muon > * recMuonSelector_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
edm::EDGetTokenT< reco::MuonCollection > recMuonLabel_
bool isValid() const
Definition: HandleBase.h:74
StringCutObjectSelector< reco::GenParticle > * genMuonSelector_
#define LogTrace(id)
size_type filterIndex(const edm::InputTag &filterTag) const
index from tag
std::vector< std::string > stepLabels_
bool failedToGet() const
Definition: HandleBase.h:78
void getObjects(size_type filter, Vids &ids, VRphoton &photons) const
extract Ref<C>s for a specific filter and of specific physics type
Helper structure to order MatchStruct.
Definition: MatchStruct.cc:82
step
std::map< std::string, MonitorElement * > elements_
std::string hltProcessName_
edm::EDGetTokenT< reco::GenParticleCollection > genParticleLabel_
void findMatches(std::vector< MatchStruct > &, const l1t::MuonVectorRef &candsL1, const std::vector< std::vector< const reco::RecoChargedCandidate * > > &)
edm::EDGetTokenT< trigger::TriggerEventWithRefs > hltTriggerSummaryRAW_
static std::string const source
Definition: EdmProvDump.cc:44
void HLTMuonPlotter::analyzePath ( const edm::Event ,
const std::string &  ,
const std::string &  ,
const std::vector< MatchStruct > &  ,
edm::Handle< trigger::TriggerEventWithRefs  
)
private
void HLTMuonPlotter::beginJob ( void  )

Definition at line 74 of file HLTMuonPlotter.cc.

Referenced by ~HLTMuonPlotter().

75 {
76 
77 }
void HLTMuonPlotter::beginRun ( DQMStore::IBooker iBooker,
const edm::Run iRun,
const edm::EventSetup iSetup 
)

Definition at line 82 of file HLTMuonPlotter.cc.

References DQMStore::IBooker::bookFloat(), bookHist(), cutMaxEta_, cutMinPt_, elements_, hltPath_, mps_fire::i, L1MuonMatcherAlgo::init(), l1Matcher_, convertSQLiteXML::runNumber, DQMStore::IBooker::setCurrentFolder(), source, stepLabels_, and electronIdCutBased_cfi::threshold.

Referenced by ~HLTMuonPlotter().

84 {
85 
86  static int runNumber = 0;
87  runNumber++;
88 
89  l1Matcher_.init(iSetup);
90 
91  cutMaxEta_ = 2.4;
92  if (hltPath_.find("eta2p1") != string::npos)
93  cutMaxEta_ = 2.1;
94 
95  // Choose a pT cut for gen/rec muons based on the pT cut in the hltPath_
96  unsigned int threshold = 0;
97  TPRegexp ptRegexp("Mu([0-9]+)");
98  TObjArray * regexArray = ptRegexp.MatchS(hltPath_);
99  if (regexArray->GetEntriesFast() == 2) {
100  threshold = atoi(((TObjString *)regexArray->At(1))->GetString());
101  }
102  delete regexArray;
103  // We select a whole number min pT cut slightly above the hltPath_'s final
104  // pt threshold, then subtract a bit to let through particle gun muons with
105  // exact integer pT:
106  cutMinPt_ = ceil(threshold * 1.1) - 0.01;
107  if (cutMinPt_ < 0.) cutMinPt_ = 0.;
108 
109  string baseDir = "HLT/Muon/Distributions/";
110  iBooker.setCurrentFolder(baseDir + hltPath_);
111 
112  vector<string> sources(2);
113  sources[0] = "gen";
114  sources[1] = "rec";
115 
116  elements_["CutMinPt" ] = iBooker.bookFloat("CutMinPt" );
117  elements_["CutMaxEta"] = iBooker.bookFloat("CutMaxEta");
118  elements_["CutMinPt" ]->Fill(cutMinPt_);
119  elements_["CutMaxEta"]->Fill(cutMaxEta_);
120 
121  for (size_t i = 0; i < sources.size(); i++) {
122  string source = sources[i];
123  for (size_t j = 0; j < stepLabels_.size(); j++) {
124  bookHist(iBooker, hltPath_, stepLabels_[j], source, "Eta");
125  bookHist(iBooker, hltPath_, stepLabels_[j], source, "Phi");
126  bookHist(iBooker, hltPath_, stepLabels_[j], source, "MaxPt1");
127  bookHist(iBooker, hltPath_, stepLabels_[j], source, "MaxPt2");
128  }
129  }
130 
131 }
void init(const edm::EventSetup &iSetup)
Call this method at the beginning of each run, to initialize geometry, magnetic field and propagators...
std::string hltPath_
L1MuonMatcherAlgo l1Matcher_
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:268
std::vector< std::string > stepLabels_
void bookHist(DQMStore::IBooker &, std::string, std::string, std::string, std::string)
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:105
std::map< std::string, MonitorElement * > elements_
static std::string const source
Definition: EdmProvDump.cc:44
void HLTMuonPlotter::bookHist ( DQMStore::IBooker ,
std::string  ,
std::string  ,
std::string  ,
std::string   
)
private

Definition at line 399 of file HLTMuonPlotter.cc.

References DQMStore::IBooker::book1D(), elements_, h, mps_fire::i, createfilelist::int, label, SiStripPI::max, min(), dataset::name, parametersEta_, parametersPhi_, parametersTurnOn_, source, and fftjetcommon_cfi::title.

Referenced by beginRun(), and HLTMuonPlotter::matchesByDescendingPt::operator()().

402 {
403 
404  string sourceUpper = source;
405  sourceUpper[0] = toupper(sourceUpper[0]);
406  string name = source + "Pass" + type + "_" + label;
407  TH1F * h;
408 
409  if (type.find("MaxPt") != string::npos) {
410  string desc = (type == "MaxPt1") ? "Leading" : "Next-to-Leading";
411  string title = "pT of " + desc + " " + sourceUpper + " Muon "+
412  "matched to " + label;
413  const size_t nBins = parametersTurnOn_.size() - 1;
414  float * edges = new float[nBins + 1];
415  for (size_t i = 0; i < nBins + 1; i++) edges[i] = parametersTurnOn_[i];
416  h = new TH1F(name.c_str(), title.c_str(), nBins, edges);
417  }
418 
419  else {
420  string symbol = (type == "Eta") ? "#eta" : "#phi";
421  string title = symbol + " of " + sourceUpper + " Muons " +
422  "matched to " + label;
423  vector<double> params = (type == "Eta") ? parametersEta_ : parametersPhi_;
424  int nBins = (int)params[0];
425  double min = params[1];
426  double max = params[2];
427  h = new TH1F(name.c_str(), title.c_str(), nBins, min, max);
428  }
429 
430  h->Sumw2();
431  elements_[name] = iBooker.book1D(name, h);
432  delete h;
433 
434 }
type
Definition: HCALResponse.h:21
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
std::vector< double > parametersEta_
char const * label
T min(T a, T b)
Definition: MathUtil.h:58
std::vector< double > parametersPhi_
std::map< std::string, MonitorElement * > elements_
std::vector< double > parametersTurnOn_
static std::string const source
Definition: EdmProvDump.cc:44
void HLTMuonPlotter::findMatches ( std::vector< MatchStruct > &  matches,
const l1t::MuonVectorRef candsL1,
const std::vector< std::vector< const reco::RecoChargedCandidate * > > &  candsHlt 
)
private

Definition at line 312 of file HLTMuonPlotter.cc.

References begin, deltar::bestMatch(), cutsDr_, deltaR(), PFRecoTauDiscriminationAgainstElectronDeadECAL_cfi::dR, reco::Candidate::eta(), mps_fire::i, edm::eventsetup::heterocontainer::insert(), kNull, hcalDigis_cfi::level, and reco::Candidate::phi().

Referenced by analyze(), and HLTMuonPlotter::matchesByDescendingPt::operator()().

316 {
317 
318  set<size_t>::iterator it;
319 
320  set<size_t> indicesL1;
321  for (size_t i = 0; i < candsL1.size(); i++)
322  indicesL1.insert(i);
323 
324  vector< set<size_t> > indicesHlt(candsHlt.size());
325  for (size_t i = 0; i < candsHlt.size(); i++)
326  for (size_t j = 0; j < candsHlt[i].size(); j++)
327  indicesHlt[i].insert(j);
328 
329  for (size_t i = 0; i < matches.size(); i++) {
330 
331  const Candidate * cand = matches[i].candBase;
332 
333  double bestDeltaR = cutsDr_[0];
334  size_t bestMatch = kNull;
335  for (it = indicesL1.begin(); it != indicesL1.end(); it++) {
336  if (candsL1[*it].isAvailable()) {
337  double dR = deltaR(cand->eta(), cand->phi(),
338  candsL1[*it]->eta(), candsL1[*it]->phi());
339  if (dR < bestDeltaR) {
340  bestMatch = *it;
341  bestDeltaR = dR;
342  }
343  // TrajectoryStateOnSurface propagated;
344  // float dR = 999., dPhi = 999.;
345  // bool isValid = l1Matcher_.match(* cand, * candsL1[*it],
346  // dR, dPhi, propagated);
347  // if (isValid && dR < bestDeltaR) {
348  // bestMatch = *it;
349  // bestDeltaR = dR;
350  // }
351  } else {
352  LogWarning("HLTMuonPlotter")
353  << "Ref candsL1[*it]: product not available "
354  << *it;
355  }
356  }
357 
358 
359  if (bestMatch != kNull)
360  matches[i].candL1 = & * candsL1[bestMatch];
361  indicesL1.erase(bestMatch);
362 
363  matches[i].candHlt.assign(candsHlt.size(), nullptr);
364  for (size_t j = 0; j < candsHlt.size(); j++) {
365  size_t level = (candsHlt.size() == 4) ? (j < 2) ? 2 : 3 :
366  (candsHlt.size() == 2) ? (j < 1) ? 2 : 3 :
367  2;
368  bestDeltaR = cutsDr_[level - 2];
369  bestMatch = kNull;
370  for (it = indicesHlt[j].begin(); it != indicesHlt[j].end(); it++) {
371  double dR = deltaR(cand->eta(), cand->phi(),
372  candsHlt[j][*it]->eta(), candsHlt[j][*it]->phi());
373  if (dR < bestDeltaR) {
374  bestMatch = *it;
375  bestDeltaR = dR;
376  }
377  }
378  if (bestMatch != kNull)
379  matches[i].candHlt[j] = candsHlt[j][bestMatch];
380  indicesHlt[j].erase(bestMatch);
381  }
382 
383 // cout << " Muon: " << cand->eta() << ", ";
384 // if (matches[i].candL1) cout << matches[i].candL1->eta() << ", ";
385 // else cout << "none, ";
386 // for (size_t j = 0; j < candsHlt.size(); j++)
387 // if (matches[i].candHlt[j]) cout << matches[i].candHlt[j]->eta() << ", ";
388 // else cout << "none, ";
389 // cout << endl;
390 
391  }
392 
393 }
std::vector< double > cutsDr_
const unsigned int kNull
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:49
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
virtual double eta() const =0
momentum pseudorapidity
def bestMatch(object, matchCollection)
Definition: deltar.py:138
#define begin
Definition: vmac.h:32
virtual double phi() const =0
momentum azimuthal angle

Definition at line 294 of file HLTMuonPlotter.cc.

References edm::ParameterSet::getParameter().

Referenced by HLTMuonValidator::HLTMuonValidator(), and ~HLTMuonPlotter().

295 {
296 
297  edm::EDGetTokenT<trigger::TriggerEventWithRefs> _hltTriggerSummaryRAW = iC.consumes<TriggerEventWithRefs>(edm::InputTag("hltTriggerSummaryRAW"));
298  edm::EDGetTokenT<reco::GenParticleCollection> _genParticleLabel = iC.consumes<GenParticleCollection>(pset.getParameter<string>("genParticleLabel"));
299  edm::EDGetTokenT<reco::MuonCollection> _recMuonLabel = iC.consumes<MuonCollection>(pset.getParameter<string>("recMuonLabel"));
300 
301  boost::tuple<
304  edm::EDGetTokenT<reco::MuonCollection> > myTuple(_hltTriggerSummaryRAW,_genParticleLabel,_recMuonLabel);
305 
306  return (myTuple);
307 }
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
T getParameter(std::string const &) const
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9

Member Data Documentation

double HLTMuonPlotter::cutMaxEta_
private

Definition at line 137 of file HLTMuonPlotter.h.

Referenced by analyze(), and beginRun().

double HLTMuonPlotter::cutMinPt_
private

Definition at line 136 of file HLTMuonPlotter.h.

Referenced by analyze(), and beginRun().

unsigned int HLTMuonPlotter::cutMotherId_
private

Definition at line 138 of file HLTMuonPlotter.h.

std::vector<double> HLTMuonPlotter::cutsDr_
private

Definition at line 139 of file HLTMuonPlotter.h.

Referenced by findMatches(), and HLTMuonPlotter().

std::map<std::string, MonitorElement *> HLTMuonPlotter::elements_
private

Definition at line 148 of file HLTMuonPlotter.h.

Referenced by analyze(), beginRun(), and bookHist().

std::string HLTMuonPlotter::genMuonCut_
private

Definition at line 140 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

StringCutObjectSelector<reco::GenParticle>* HLTMuonPlotter::genMuonSelector_
private

Definition at line 143 of file HLTMuonPlotter.h.

Referenced by analyze(), HLTMuonPlotter(), and ~HLTMuonPlotter().

edm::EDGetTokenT<reco::GenParticleCollection> HLTMuonPlotter::genParticleLabel_
private

Definition at line 129 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

std::string HLTMuonPlotter::hltPath_
private

Definition at line 122 of file HLTMuonPlotter.h.

Referenced by analyze(), beginRun(), and HLTMuonPlotter().

std::string HLTMuonPlotter::hltProcessName_
private

Definition at line 123 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

edm::EDGetTokenT<trigger::TriggerEventWithRefs> HLTMuonPlotter::hltTriggerSummaryRAW_
private

Definition at line 128 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

L1MuonMatcherAlgo HLTMuonPlotter::l1Matcher_
private

Definition at line 146 of file HLTMuonPlotter.h.

Referenced by beginRun().

std::vector<std::string> HLTMuonPlotter::moduleLabels_
private

Definition at line 125 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

std::vector<double> HLTMuonPlotter::parametersEta_
private

Definition at line 132 of file HLTMuonPlotter.h.

Referenced by bookHist(), and HLTMuonPlotter().

std::vector<double> HLTMuonPlotter::parametersPhi_
private

Definition at line 133 of file HLTMuonPlotter.h.

Referenced by bookHist(), and HLTMuonPlotter().

std::vector<double> HLTMuonPlotter::parametersTurnOn_
private

Definition at line 134 of file HLTMuonPlotter.h.

Referenced by bookHist(), and HLTMuonPlotter().

std::string HLTMuonPlotter::recMuonCut_
private

Definition at line 141 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

edm::EDGetTokenT<reco::MuonCollection> HLTMuonPlotter::recMuonLabel_
private

Definition at line 130 of file HLTMuonPlotter.h.

Referenced by analyze(), and HLTMuonPlotter().

StringCutObjectSelector<reco::Muon >* HLTMuonPlotter::recMuonSelector_
private

Definition at line 144 of file HLTMuonPlotter.h.

Referenced by analyze(), HLTMuonPlotter(), and ~HLTMuonPlotter().

std::vector<std::string> HLTMuonPlotter::stepLabels_
private

Definition at line 126 of file HLTMuonPlotter.h.

Referenced by analyze(), beginRun(), and HLTMuonPlotter().