CMS 3D CMS Logo

HLTMuonPlotter.cc
Go to the documentation of this file.
1 
14 
19 
20 using namespace std;
21 using namespace edm;
22 using namespace reco;
23 using namespace trigger;
24 
25 typedef vector<ParameterSet> Parameters;
26 
28  string hltPath,
29  const std::vector<string> &moduleLabels,
30  const std::vector<string> &stepLabels,
34  :
35 
36  l1Matcher_(pset) {
37  hltPath_ = hltPath;
38  moduleLabels_ = moduleLabels;
39  stepLabels_ = stepLabels;
40  hltProcessName_ = pset.getParameter<string>("hltProcessName");
41 
42  cutsDr_ = pset.getParameter<vector<double>>("cutsDr");
43 
44  parametersEta_ = pset.getParameter<vector<double>>("parametersEta");
45  parametersPhi_ = pset.getParameter<vector<double>>("parametersPhi");
46  parametersTurnOn_ = pset.getParameter<vector<double>>("parametersTurnOn");
47 
48  genMuonCut_ = pset.getParameter<string>("genMuonCut");
49  recMuonCut_ = pset.getParameter<string>("recMuonCut");
50 
51  genMuonSelector_ = nullptr;
52  recMuonSelector_ = nullptr;
53 
54  // set tokens
55  hltTriggerSummaryRAW_ = std::get<0>(tokens);
56  genParticleLabel_ = std::get<1>(tokens);
57  recMuonLabel_ = std::get<2>(tokens);
58 }
59 
61 
62 void HLTMuonPlotter::beginRun(DQMStore::IBooker &iBooker, const Run &iRun, const EventSetup &iSetup) {
63  l1Matcher_.init(iSetup);
64 
65  cutMaxEta_ = 2.4;
66  if (hltPath_.find("eta2p1") != string::npos)
67  cutMaxEta_ = 2.1;
68 
69  // Choose a pT cut for gen/rec muons based on the pT cut in the hltPath_
70  unsigned int threshold = 0;
71  TPRegexp ptRegexp("Mu([0-9]+)");
72  TObjArray *regexArray = ptRegexp.MatchS(hltPath_);
73  if (regexArray->GetEntriesFast() == 2) {
74  threshold = atoi(((TObjString *)regexArray->At(1))->GetString());
75  }
76  delete regexArray;
77  // We select a whole number min pT cut slightly above the hltPath_'s final
78  // pt threshold, then subtract a bit to let through particle gun muons with
79  // exact integer pT:
80  cutMinPt_ = ceil(threshold * 1.1) - 0.01;
81  if (cutMinPt_ < 0.)
82  cutMinPt_ = 0.;
83 
84  string baseDir = "HLT/Muon/Distributions/";
86 
87  vector<string> sources(2);
88  sources[0] = "gen";
89  sources[1] = "rec";
90 
91  elements_["CutMinPt"] = iBooker.bookFloat("CutMinPt");
92  elements_["CutMaxEta"] = iBooker.bookFloat("CutMaxEta");
93  elements_["CutMinPt"]->Fill(cutMinPt_);
94  elements_["CutMaxEta"]->Fill(cutMaxEta_);
95 
96  for (size_t i = 0; i < sources.size(); i++) {
97  string source = sources[i];
98  for (size_t j = 0; j < stepLabels_.size(); j++) {
99  bookHist(iBooker, hltPath_, stepLabels_[j], source, "Eta");
100  bookHist(iBooker, hltPath_, stepLabels_[j], source, "Phi");
101  bookHist(iBooker, hltPath_, stepLabels_[j], source, "MaxPt1");
102  bookHist(iBooker, hltPath_, stepLabels_[j], source, "MaxPt2");
103  }
104  }
105 }
106 
107 void HLTMuonPlotter::analyze(const Event &iEvent, const EventSetup &iSetup) {
108  LogTrace("HLTMuonVal") << "In HLTMuonPlotter::analyze, "
109  << "Event: " << iEvent.id();
110 
111  // cout << hltPath_ << endl;
112  // for (size_t i = 0; i < moduleLabels_.size(); i++)
113  // cout << " " << moduleLabels_[i] << endl;
114 
115  Handle<TriggerEventWithRefs> rawTriggerEvent;
116  Handle<MuonCollection> recMuons;
118 
119  iEvent.getByToken(hltTriggerSummaryRAW_, rawTriggerEvent);
120  if (rawTriggerEvent.failedToGet()) {
121  LogError("HLTMuonVal") << "No trigger summary found";
122  return;
123  }
124  iEvent.getByToken(recMuonLabel_, recMuons);
126 
127  vector<string> sources;
128  if (genParticles.isValid())
129  sources.push_back("gen");
130  if (recMuons.isValid())
131  sources.push_back("rec");
132 
133  for (size_t sourceNo = 0; sourceNo < sources.size(); sourceNo++) {
134  string source = sources[sourceNo];
135 
136  // If this is the first event, initialize selectors
137  if (!genMuonSelector_)
139  if (!recMuonSelector_)
141 
142  // Make each good gen/rec muon into the base cand for a MatchStruct
143  vector<MatchStruct> matches;
144  if (source == "gen" && genParticles.isValid())
145  for (size_t i = 0; i < genParticles->size(); i++)
146  if ((*genMuonSelector_)(genParticles->at(i)))
147  matches.push_back(MatchStruct(&genParticles->at(i)));
148  if (source == "rec" && recMuons.isValid())
149  for (size_t i = 0; i < recMuons->size(); i++)
150  if ((*recMuonSelector_)(recMuons->at(i)))
151  matches.push_back(MatchStruct(&recMuons->at(i)));
152 
153  // Sort the MatchStructs by pT for later filling of turn-on curve
154  sort(matches.begin(), matches.end(), matchesByDescendingPt());
155 
156  const bool isDoubleMuonPath = (hltPath_.find("Double") != string::npos);
157  const size_t nFilters = moduleLabels_.size();
158  const size_t nSteps = stepLabels_.size();
159  const size_t nStepsHlt = nSteps - 2;
160  const int nObjectsToPassPath = (isDoubleMuonPath) ? 2 : 1;
161  l1t::MuonVectorRef candsL1;
162  vector<vector<RecoChargedCandidateRef>> refsHlt(nStepsHlt);
163  vector<vector<const RecoChargedCandidate *>> candsHlt(nStepsHlt);
164 
165  for (size_t i = 0; i < nFilters; i++) {
166  const int hltStep = i - 1;
168  size_t iFilter = rawTriggerEvent->filterIndex(tag);
169  if (iFilter < rawTriggerEvent->size()) {
170  if (i == 0)
171  rawTriggerEvent->getObjects(iFilter, TriggerL1Mu, candsL1);
172  else
173  rawTriggerEvent->getObjects(iFilter, TriggerMuon, refsHlt[hltStep]);
174  } else
175  LogTrace("HLTMuonVal") << "No collection with label " << tag;
176  }
177  for (size_t i = 0; i < nStepsHlt; i++)
178  for (size_t j = 0; j < refsHlt[i].size(); j++)
179  if (refsHlt[i][j].isAvailable()) {
180  candsHlt[i].push_back(&*refsHlt[i][j]);
181  } else {
182  LogWarning("HLTMuonPlotter") << "Ref refsHlt[i][j]: product not available " << i << " " << j;
183  }
184 
185  // Add trigger objects to the MatchStructs
186  findMatches(matches, candsL1, candsHlt);
187 
188  vector<size_t> matchesInEtaRange;
189  vector<bool> hasMatch(matches.size(), true);
190 
191  for (size_t step = 0; step < nSteps; step++) {
192  size_t hltStep = (step >= 2) ? step - 2 : 0;
193  if (nSteps == 6)
194  hltStep = hltStep - 1; // case of the tracker muon (it has no L2)
195  size_t level = 0;
196  if ((stepLabels_[step].find("L3TkIso") != string::npos) || (stepLabels_[step].find("TkTkIso") != string::npos))
197  level = 6;
198  else if ((stepLabels_[step].find("L3HcalIso") != string::npos) ||
199  (stepLabels_[step].find("TkEcalIso") != string::npos))
200  level = 5;
201  else if ((stepLabels_[step].find("L3EcalIso") != string::npos) ||
202  (stepLabels_[step].find("TkEcalIso") != string::npos))
203  level = 4;
204  else if ((stepLabels_[step].find("L3") != string::npos) || (stepLabels_[step].find("Tk") != string::npos))
205  level = 3;
206  else if (stepLabels_[step].find("L2") != string::npos)
207  level = 2;
208  else if (stepLabels_[step].find("L1") != string::npos)
209  level = 1;
210 
211  for (size_t j = 0; j < matches.size(); j++) {
212  if (level == 0) {
213  if (fabs(matches[j].candBase->eta()) < cutMaxEta_)
214  matchesInEtaRange.push_back(j);
215  } else if (level == 1) {
216  if (matches[j].candL1 == nullptr)
217  hasMatch[j] = false;
218  } else if (level >= 2) {
219  if (matches[j].candHlt[hltStep] == nullptr)
220  hasMatch[j] = false;
221  else if (!hasMatch[j]) {
222  LogTrace("HLTMuonVal") << "Match found for HLT step " << hltStep << " of " << nStepsHlt
223  << " without previous match!";
224  break;
225  }
226  }
227  }
228 
229  if (std::count(hasMatch.begin(), hasMatch.end(), true) < nObjectsToPassPath)
230  break;
231 
232  string pre = source + "Pass";
233  string post = "_" + stepLabels_[step];
234 
235  for (size_t j = 0; j < matches.size(); j++) {
236  float pt = matches[j].candBase->pt();
237  float eta = matches[j].candBase->eta();
238  float phi = matches[j].candBase->phi();
239  if (hasMatch[j]) {
240  if (!matchesInEtaRange.empty() && j == matchesInEtaRange[0])
241  elements_[pre + "MaxPt1" + post]->Fill(pt);
242  if (matchesInEtaRange.size() >= 2 && j == matchesInEtaRange[1])
243  elements_[pre + "MaxPt2" + post]->Fill(pt);
244  if (pt > cutMinPt_) {
245  elements_[pre + "Eta" + post]->Fill(eta);
246  if (fabs(eta) < cutMaxEta_)
247  elements_[pre + "Phi" + post]->Fill(phi);
248  }
249  }
250  }
251  }
252 
253  } // End loop over sources
254 }
255 
256 std::tuple<edm::EDGetTokenT<trigger::TriggerEventWithRefs>,
261  iC.consumes<TriggerEventWithRefs>(edm::InputTag("hltTriggerSummaryRAW"));
263  iC.consumes<GenParticleCollection>(pset.getParameter<string>("genParticleLabel"));
265  iC.consumes<MuonCollection>(pset.getParameter<string>("recMuonLabel"));
266 
267  std::tuple<edm::EDGetTokenT<trigger::TriggerEventWithRefs>,
270  myTuple(_hltTriggerSummaryRAW, _genParticleLabel, _recMuonLabel);
271 
272  return (myTuple);
273 }
274 
275 void HLTMuonPlotter::findMatches(vector<MatchStruct> &matches,
276  const l1t::MuonVectorRef &candsL1,
277  const std::vector<vector<const RecoChargedCandidate *>> &candsHlt) {
278  set<size_t>::iterator it;
279 
280  set<size_t> indicesL1;
281  for (size_t i = 0; i < candsL1.size(); i++)
282  indicesL1.insert(i);
283 
284  vector<set<size_t>> indicesHlt(candsHlt.size());
285  for (size_t i = 0; i < candsHlt.size(); i++)
286  for (size_t j = 0; j < candsHlt[i].size(); j++)
287  indicesHlt[i].insert(j);
288 
289  for (size_t i = 0; i < matches.size(); i++) {
290  const Candidate *cand = matches[i].candBase;
291 
292  double bestDeltaR = cutsDr_[0];
293  size_t bestMatch = kNull;
294  for (it = indicesL1.begin(); it != indicesL1.end(); it++) {
295  if (candsL1[*it].isAvailable()) {
296  double dR = deltaR(cand->eta(), cand->phi(), candsL1[*it]->eta(), candsL1[*it]->phi());
297  if (dR < bestDeltaR) {
298  bestMatch = *it;
299  bestDeltaR = dR;
300  }
301  // TrajectoryStateOnSurface propagated;
302  // float dR = 999., dPhi = 999.;
303  // bool isValid = l1Matcher_.match(* cand, * candsL1[*it],
304  // dR, dPhi, propagated);
305  // if (isValid && dR < bestDeltaR) {
306  // bestMatch = *it;
307  // bestDeltaR = dR;
308  // }
309  } else {
310  LogWarning("HLTMuonPlotter") << "Ref candsL1[*it]: product not available " << *it;
311  }
312  }
313 
314  if (bestMatch != kNull)
315  matches[i].candL1 = &*candsL1[bestMatch];
316  indicesL1.erase(bestMatch);
317 
318  matches[i].candHlt.assign(candsHlt.size(), nullptr);
319  for (size_t j = 0; j < candsHlt.size(); j++) {
320  size_t level = (candsHlt.size() == 4) ? (j < 2) ? 2 : 3 : (candsHlt.size() == 2) ? (j < 1) ? 2 : 3 : 2;
321  bestDeltaR = cutsDr_[level - 2];
322  bestMatch = kNull;
323  for (it = indicesHlt[j].begin(); it != indicesHlt[j].end(); it++) {
324  double dR = deltaR(cand->eta(), cand->phi(), candsHlt[j][*it]->eta(), candsHlt[j][*it]->phi());
325  if (dR < bestDeltaR) {
326  bestMatch = *it;
327  bestDeltaR = dR;
328  }
329  }
330  if (bestMatch != kNull)
331  matches[i].candHlt[j] = candsHlt[j][bestMatch];
332  indicesHlt[j].erase(bestMatch);
333  }
334 
335  // cout << " Muon: " << cand->eta() << ", ";
336  // if (matches[i].candL1) cout << matches[i].candL1->eta() << ", ";
337  // else cout << "none, ";
338  // for (size_t j = 0; j < candsHlt.size(); j++)
339  // if (matches[i].candHlt[j]) cout << matches[i].candHlt[j]->eta() <<
340  // ", "; else cout << "none, ";
341  // cout << endl;
342  }
343 }
344 
345 void HLTMuonPlotter::bookHist(DQMStore::IBooker &iBooker, string path, string label, string source, string type) {
346  string sourceUpper = source;
347  sourceUpper[0] = toupper(sourceUpper[0]);
348  string name = source + "Pass" + type + "_" + label;
349  TH1F *h;
350 
351  if (type.find("MaxPt") != string::npos) {
352  string desc = (type == "MaxPt1") ? "Leading" : "Next-to-Leading";
353  string title = "pT of " + desc + " " + sourceUpper + " Muon " + "matched to " + label;
354  const size_t nBins = parametersTurnOn_.size() - 1;
355  float *edges = new float[nBins + 1];
356  for (size_t i = 0; i < nBins + 1; i++)
358  h = new TH1F(name.c_str(), title.c_str(), nBins, edges);
359  }
360 
361  else {
362  string symbol = (type == "Eta") ? "#eta" : "#phi";
363  string title = symbol + " of " + sourceUpper + " Muons " + "matched to " + label;
364  vector<double> params = (type == "Eta") ? parametersEta_ : parametersPhi_;
365  int nBins = (int)params[0];
366  double min = params[1];
367  double max = params[2];
368  h = new TH1F(name.c_str(), title.c_str(), nBins, min, max);
369  }
370 
371  h->Sumw2();
372  elements_[name] = iBooker.book1D(name, h);
373  delete h;
374 }
personalPlayback.level
level
Definition: personalPlayback.py:22
HLTMuonPlotter::parametersEta_
std::vector< double > parametersEta_
Definition: HLTMuonPlotter.h:119
trigger::TriggerEventWithRefs
Definition: TriggerEventWithRefs.h:27
HLTMuonPlotter::HLTMuonPlotter
HLTMuonPlotter(const edm::ParameterSet &, std::string, const std::vector< std::string > &, const std::vector< std::string > &, const std::tuple< edm::EDGetTokenT< trigger::TriggerEventWithRefs >, edm::EDGetTokenT< reco::GenParticleCollection >, edm::EDGetTokenT< reco::MuonCollection >> &)
Definition: HLTMuonPlotter.cc:27
Handle.h
runGCPTkAlMap.title
string title
Definition: runGCPTkAlMap.py:94
mps_fire.i
i
Definition: mps_fire.py:428
Muon.h
MessageLogger.h
genParticles2HepMC_cfi.genParticles
genParticles
Definition: genParticles2HepMC_cfi.py:4
dqm::implementation::IBooker::bookFloat
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
Definition: DQMStore.h:80
L3MuonTrajectorySeedCollection.h
HLTMuonPlotter::cutMinPt_
double cutMinPt_
Definition: HLTMuonPlotter.h:123
step
step
Definition: StallMonitor.cc:94
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
kNull
const unsigned int kNull
Definition: HLTHiggsPlotter.h:42
edm::Run
Definition: Run.h:45
min
T min(T a, T b)
Definition: MathUtil.h:58
deltaPhi.h
HLTMuonPlotter::matchesByDescendingPt
Definition: HLTMuonPlotter.h:95
edm::EDGetTokenT< trigger::TriggerEventWithRefs >
edm
HLT enums.
Definition: AlignableModifier.h:19
HLTMuonPlotter::moduleLabels_
std::vector< std::string > moduleLabels_
Definition: HLTMuonPlotter.h:112
HLTMuonPlotter::cutMaxEta_
double cutMaxEta_
Definition: HLTMuonPlotter.h:124
TriggerAnalyzer.hltPath
hltPath
Definition: TriggerAnalyzer.py:62
oniaPATMuonsWithTrigger_cff.matches
matches
Definition: oniaPATMuonsWithTrigger_cff.py:77
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89301
reco::GenParticleCollection
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
Definition: GenParticleFwd.h:13
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
trigger::TriggerEventWithRefs::getObjects
void getObjects(size_type filter, Vids &ids, VRphoton &photons) const
extract Ref<C>s for a specific filter and of specific physics type
Definition: TriggerEventWithRefs.h:399
CalibrationSummaryClient_cfi.sources
sources
Definition: CalibrationSummaryClient_cfi.py:23
ALCARECODTCalibSynchDQM_cff.baseDir
baseDir
Definition: ALCARECODTCalibSynchDQM_cff.py:16
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:46
h
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
HLTMuonPlotter::hltTriggerSummaryRAW_
edm::EDGetTokenT< trigger::TriggerEventWithRefs > hltTriggerSummaryRAW_
Definition: HLTMuonPlotter.h:115
spr::find
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:19
deltar.bestMatch
def bestMatch(object, matchCollection)
Definition: deltar.py:138
edm::Handle
Definition: AssociativeIterator.h:50
HLTMuonPlotter::MatchStruct
Definition: HLTMuonPlotter.h:80
edm::LogWarning
Log< level::Warning, false > LogWarning
Definition: MessageLogger.h:122
CandMatchMap.h
HLTMuonPlotter::recMuonCut_
std::string recMuonCut_
Definition: HLTMuonPlotter.h:128
L2MuonTrajectorySeedCollection.h
HLTMuonPlotter::getTokens
static std::tuple< edm::EDGetTokenT< trigger::TriggerEventWithRefs >, edm::EDGetTokenT< reco::GenParticleCollection >, edm::EDGetTokenT< reco::MuonCollection > > getTokens(const edm::ParameterSet &, edm::ConsumesCollector &&)
Definition: HLTMuonPlotter.cc:259
h
HLTMuonPlotter::genMuonCut_
std::string genMuonCut_
Definition: HLTMuonPlotter.h:127
reco::ceil
constexpr int32_t ceil(float num)
Definition: constexpr_cmath.h:7
Service.h
PVValHelper::eta
Definition: PVValidationHelpers.h:70
MuonFwd.h
reco::MuonCollection
std::vector< Muon > MuonCollection
collection of Muon objects
Definition: MuonFwd.h:9
trigger::TriggerMuon
Definition: TriggerTypeDefs.h:79
source
static const std::string source
Definition: EdmProvDump.cc:47
HLTMuonPlotter::stepLabels_
std::vector< std::string > stepLabels_
Definition: HLTMuonPlotter.h:113
submitPVResolutionJobs.count
count
Definition: submitPVResolutionJobs.py:352
seedmultiplicitymonitor_newtracking_cfi.nBins
nBins
Definition: seedmultiplicitymonitor_newtracking_cfi.py:8
L3MuonTrajectorySeed.h
trigger::TriggerEventWithRefs::filterIndex
size_type filterIndex(const edm::InputTag &filterTag) const
index from tag
Definition: TriggerEventWithRefs.h:223
PbPb_ZMuSkimMuonDPG_cff.deltaR
deltaR
Definition: PbPb_ZMuSkimMuonDPG_cff.py:63
HLTMuonPlotter::beginRun
void beginRun(DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &)
Definition: HLTMuonPlotter.cc:62
edm::HandleBase::failedToGet
bool failedToGet() const
Definition: HandleBase.h:72
HLTMuonPlotter.h
edm::ParameterSet
Definition: ParameterSet.h:47
deltaR.h
makeGlobalPositionRcd_cfg.tag
tag
Definition: makeGlobalPositionRcd_cfg.py:6
SiStripPI::max
Definition: SiStripPayloadInspectorHelper.h:169
HLTMuonPlotter::hltProcessName_
std::string hltProcessName_
Definition: HLTMuonPlotter.h:110
type
type
Definition: SiPixelVCal_PayloadInspector.cc:39
trigger::TriggerL1Mu
enum start value shifted to 81 so as to avoid clashes with PDG codes
Definition: TriggerTypeDefs.h:30
jetUpdater_cfi.sort
sort
Definition: jetUpdater_cfi.py:29
cand
Definition: decayParser.h:32
HLTMuonPlotter::recMuonSelector_
StringCutObjectSelector< reco::Muon > * recMuonSelector_
Definition: HLTMuonPlotter.h:131
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
HLTMuonPlotter::genMuonSelector_
StringCutObjectSelector< reco::GenParticle > * genMuonSelector_
Definition: HLTMuonPlotter.h:130
trackerHitRTTI::vector
Definition: trackerHitRTTI.h:21
edm::EventSetup
Definition: EventSetup.h:58
edm::LogError
Log< level::Error, false > LogError
Definition: MessageLogger.h:123
HLTMuonPlotter::genParticleLabel_
edm::EDGetTokenT< reco::GenParticleCollection > genParticleLabel_
Definition: HLTMuonPlotter.h:116
HLTMuonPlotter::recMuonLabel_
edm::EDGetTokenT< reco::MuonCollection > recMuonLabel_
Definition: HLTMuonPlotter.h:117
SelectiveReadoutTask_cfi.edges
edges
Definition: SelectiveReadoutTask_cfi.py:107
HcalObjRepresent::Fill
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:1053
reco::Candidate
Definition: Candidate.h:27
DDAxes::phi
HLTMuonPlotter::l1Matcher_
L1MuonMatcherAlgo l1Matcher_
Definition: HLTMuonPlotter.h:133
submitPVResolutionJobs.desc
string desc
Definition: submitPVResolutionJobs.py:251
std
Definition: JetResolutionObject.h:76
HLTMuonPlotter::beginJob
void beginJob()
Definition: HLTMuonPlotter.cc:60
HLTMuonPlotter::cutsDr_
std::vector< double > cutsDr_
Definition: HLTMuonPlotter.h:126
StringCutObjectSelector< reco::GenParticle >
HLTMuonPlotter::elements_
std::map< std::string, MonitorElement * > elements_
Definition: HLTMuonPlotter.h:135
edm::eventsetup::heterocontainer::insert
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
l1t::MuonVectorRef
std::vector< MuonRef > MuonVectorRef
Definition: Muon.h:15
dqm::implementation::IBooker
Definition: DQMStore.h:43
HLTMuonPlotter::analyze
void analyze(const edm::Event &, const edm::EventSetup &)
Definition: HLTMuonPlotter.cc:107
trigger
Definition: HLTPrescaleTableCond.h:8
HLTMuonPlotter::bookHist
void bookHist(DQMStore::IBooker &, std::string, std::string, std::string, std::string)
Definition: HLTMuonPlotter.cc:345
HLTMuonPlotter::findMatches
void findMatches(std::vector< MatchStruct > &, const l1t::MuonVectorRef &candsL1, const std::vector< std::vector< const reco::RecoChargedCandidate * >> &)
Definition: HLTMuonPlotter.cc:275
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
LogTrace
#define LogTrace(id)
Definition: MessageLogger.h:234
HGC3DClusterGenMatchSelector_cfi.dR
dR
Definition: HGC3DClusterGenMatchSelector_cfi.py:7
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
remoteMonitoring_LED_IterMethod_cfg.threshold
threshold
Definition: remoteMonitoring_LED_IterMethod_cfg.py:430
L2MuonTrajectorySeed.h
edm::Event
Definition: Event.h:73
Parameters
vector< ParameterSet > Parameters
Definition: HLTMuonPlotter.cc:25
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
label
const char * label
Definition: PFTauDecayModeTools.cc:11
HLTMuonPlotter::hltPath_
std::string hltPath_
Definition: HLTMuonPlotter.h:109
L1MuonMatcherAlgo::init
void init(const edm::EventSetup &iSetup)
Definition: L1MuonMatcherAlgo.cc:16
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
HLTMuonPlotter::parametersPhi_
std::vector< double > parametersPhi_
Definition: HLTMuonPlotter.h:120
findQualityFiles.size
size
Write out results.
Definition: findQualityFiles.py:443
HLTMuonPlotter::parametersTurnOn_
std::vector< double > parametersTurnOn_
Definition: HLTMuonPlotter.h:121