CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
HLTConfigData.cc
Go to the documentation of this file.
1 
12 
13 #include <iostream>
14 
15 //Using this function with the 'const static within s_dummyPSet'
16 // guarantees that even if multiple threads call s_dummyPSet at the
17 // same time, only the 'first' one registers the dummy PSet.
19  edm::ParameterSet dummy;
20  dummy.registerIt();
21  return dummy;
22 }
23 
24 static const edm::ParameterSet* s_dummyPSet() {
25  static const edm::ParameterSet dummyPSet{initializeDummyPSet()};
26  return &dummyPSet;
27 }
28 
30  : processPSet_(s_dummyPSet()),
31  processName_(""),
32  globalTag_(""),
33  tableName_(),
34  triggerNames_(),
35  moduleLabels_(),
36  saveTagsModules_(),
37  triggerIndex_(),
38  moduleIndex_(),
39  l1tType_(0),
40  hltL1GTSeeds_(),
41  hltL1TSeeds_(),
42  streamNames_(),
43  streamIndex_(),
44  streamContents_(),
45  datasetNames_(),
46  datasetIndex_(),
47  datasetContents_(),
48  hltPrescaleTable_() {
49  if (processPSet_->id().isValid()) {
50  extract();
51  }
52 }
53 
55  : processPSet_(iPSet),
56  processName_(""),
57  globalTag_(""),
58  tableName_(),
59  triggerNames_(),
60  moduleLabels_(),
61  saveTagsModules_(),
62  triggerIndex_(),
63  moduleIndex_(),
64  l1tType_(0),
65  hltL1GTSeeds_(),
66  hltL1TSeeds_(),
67  streamNames_(),
68  streamIndex_(),
69  streamContents_(),
70  datasetNames_(),
71  datasetIndex_(),
72  datasetContents_(),
73  hltPrescaleTable_() {
74  if (processPSet_->id().isValid()) {
75  extract();
76  }
77 }
78 
80  using namespace std;
81  using namespace edm;
82  using namespace trigger;
83 
84  // Extract process name
85  if (processPSet_->existsAs<string>("@process_name", true)) {
86  processName_ = processPSet_->getParameter<string>("@process_name");
87  }
88 
89  // Extract globaltag
90  globalTag_ = "";
91  const ParameterSet* GlobalTagPSet(nullptr);
92  if (processPSet_->exists("GlobalTag")) {
93  GlobalTagPSet = &(processPSet_->getParameterSet("GlobalTag"));
94  } else if (processPSet_->exists("PoolDBESSource@GlobalTag")) {
95  GlobalTagPSet = &(processPSet_->getParameterSet("PoolDBESSource@GlobalTag"));
96  }
97  if (GlobalTagPSet && GlobalTagPSet->existsAs<std::string>("globaltag", true)) {
98  globalTag_ = GlobalTagPSet->getParameter<std::string>("globaltag");
99  }
100 
101  // Obtain PSet containing table name (available only in 2_1_10++ files)
102  if (processPSet_->existsAs<ParameterSet>("HLTConfigVersion", true)) {
103  const ParameterSet& HLTPSet(processPSet_->getParameterSet("HLTConfigVersion"));
104  if (HLTPSet.existsAs<string>("tableName", true)) {
105  tableName_ = HLTPSet.getParameter<string>("tableName");
106  }
107  }
108 
109  // Extract trigger paths (= paths - end_paths)
110  if (processPSet_->existsAs<ParameterSet>("@trigger_paths", true)) {
111  const ParameterSet& HLTPSet(processPSet_->getParameterSet("@trigger_paths"));
112  if (HLTPSet.existsAs<vector<string>>("@trigger_paths", true)) {
113  triggerNames_ = HLTPSet.getParameter<vector<string>>("@trigger_paths");
114  }
115  }
116 
117  // Obtain module labels of all modules on all trigger paths
118  const unsigned int n(size());
119  moduleLabels_.reserve(n);
120  for (unsigned int i = 0; i != n; ++i) {
121  if (processPSet_->existsAs<vector<string>>(triggerNames_[i], true)) {
122  moduleLabels_.push_back(processPSet_->getParameter<vector<string>>(triggerNames_[i]));
123  }
124  }
125  saveTagsModules_.reserve(n);
126  vector<string> labels;
127  for (unsigned int i = 0; i != n; ++i) {
128  labels.clear();
129  const vector<string>& modules(moduleLabels(i));
130  const unsigned int m(modules.size());
131  labels.reserve(m);
132  for (unsigned int j = 0; j != m; ++j) {
133  const string& label(modules[j]);
134  if (saveTags(label))
135  labels.push_back(label);
136  }
137  saveTagsModules_.push_back(labels);
138  }
139 
140  // Fill index maps for fast lookup
141  moduleIndex_.resize(n);
142  for (unsigned int i = 0; i != n; ++i) {
144  moduleIndex_[i].clear();
145  const unsigned int m(size(i));
146  for (unsigned int j = 0; j != m; ++j) {
148  }
149  }
150 
151  // Extract and fill HLTLevel1GTSeed information for each trigger path
152  hltL1GTSeeds_.resize(n);
153  for (unsigned int i = 0; i != n; ++i) {
154  hltL1GTSeeds_[i].clear();
155  const unsigned int m(size(i));
156  for (unsigned int j = 0; j != m; ++j) {
157  const string& label(moduleLabels_[i][j]);
158  //HLTConfigProvider sees ignored modules as "-modname"
159  //if the HLTLevel1GTSeed is ignored in the config, it shouldnt
160  //count to the number of active HLTLevel1GTSeeds so we now check
161  //for the module being ignored
162  if (label.front() != '-' && moduleType(label) == "HLTLevel1GTSeed") {
163  const ParameterSet& pset(modulePSet(label));
164  if (pset != ParameterSet()) {
165  const bool l1Tech(pset.getParameter<bool>("L1TechTriggerSeeding"));
166  const string l1Seed(pset.getParameter<string>("L1SeedsLogicalExpression"));
167  hltL1GTSeeds_[i].push_back(pair<bool, string>(l1Tech, l1Seed));
168  }
169  }
170  }
171  }
172 
173  // Extract and fill HLTL1TSeed information for each trigger path
174  hltL1TSeeds_.resize(n);
175  for (unsigned int i = 0; i != n; ++i) {
176  hltL1TSeeds_[i].clear();
177  const unsigned int m(size(i));
178  for (unsigned int j = 0; j != m; ++j) {
179  const string& label(moduleLabels_[i][j]);
180  //HLTConfigProvider sees ignored modules as "-modname"
181  //if the HLTL1TSeed is ignored in the config, it shouldnt
182  //count to the number of active HLTL1TSeeds so we now check
183  //for the module being ignored
184  if (label.front() != '-' && moduleType(label) == "HLTL1TSeed") {
185  const ParameterSet& pset(modulePSet(label));
186  if (pset != ParameterSet()) {
187  const string l1Gtag(pset.getParameter<edm::InputTag>("L1GlobalInputTag").label());
188  // Emulator output is used to ignore L1T prescales
189  if (l1Gtag != "hltGtStage2ObjectMap") {
190  const string l1Seed(pset.getParameter<string>("L1SeedsLogicalExpression"));
191  hltL1TSeeds_[i].push_back(l1Seed);
192  }
193  }
194  }
195  }
196  }
197 
198  // Extract and fill streams information
199  if (processPSet_->existsAs<ParameterSet>("streams", true)) {
200  const ParameterSet& streams(processPSet_->getParameterSet("streams"));
201  streamNames_ = streams.getParameterNamesForType<vector<string>>();
202  sort(streamNames_.begin(), streamNames_.end());
203  const unsigned int n(streamNames_.size());
204  streamContents_.resize(n);
205  for (unsigned int i = 0; i != n; ++i) {
206  streamIndex_[streamNames_[i]] = i;
207  streamContents_[i] = streams.getParameter<vector<string>>(streamNames_[i]);
209  }
210  }
211 
212  // Extract and fill datasets information
213  if (processPSet_->existsAs<ParameterSet>("datasets", true)) {
214  const ParameterSet& datasets(processPSet_->getParameterSet("datasets"));
215  datasetNames_ = datasets.getParameterNamesForType<vector<string>>();
216  sort(datasetNames_.begin(), datasetNames_.end());
217  const unsigned int n(datasetNames_.size());
218  datasetContents_.resize(n);
219  for (unsigned int i = 0; i != n; ++i) {
220  datasetIndex_[datasetNames_[i]] = i;
221  datasetContents_[i] = datasets.getParameter<vector<string>>(datasetNames_[i]);
223  }
224  }
225 
226  // Extract and fill Prescale information
227 
228  // Check various possibilities to get the HLT prescale sets:
229  string prescaleName("");
230  const string preS("PrescaleService");
231  const string preT("PrescaleTable");
232  if (processPSet_->existsAs<ParameterSet>(preS, true)) {
233  prescaleName = preS;
234  } else if (processPSet_->existsAs<ParameterSet>(preT, true)) {
235  prescaleName = preT;
236  }
237  if (prescaleName.empty()) {
239  } else {
240  const ParameterSet& iPS(processPSet_->getParameterSet(prescaleName));
241  string defaultLabel("default");
242  if (iPS.existsAs<string>("lvl1DefaultLabel", true)) {
243  defaultLabel = iPS.getParameter<string>("lvl1DefaultLabel");
244  }
245  vector<string> labels;
246  if (iPS.existsAs<vector<string>>("lvl1Labels", true)) {
247  labels = iPS.getParameter<vector<string>>("lvl1Labels");
248  }
249  unsigned int set(0);
250  const unsigned int n(labels.size());
251  for (unsigned int i = 0; i != n; ++i) {
252  if (labels[i] == defaultLabel)
253  set = i;
254  }
255  map<string, vector<unsigned int>> table;
256  if (iPS.existsAs<vector<ParameterSet>>("prescaleTable", true)) {
257  const vector<ParameterSet>& vpTable(iPS.getParameterSetVector("prescaleTable"));
258  const unsigned int m(vpTable.size());
259  for (unsigned int i = 0; i != m; ++i) {
260  table[vpTable[i].getParameter<std::string>("pathName")] =
261  vpTable[i].getParameter<std::vector<unsigned int>>("prescales");
262  }
263  }
264  if (n > 0) {
265  hltPrescaleTable_ = HLTPrescaleTable(set, labels, table);
266  } else {
268  }
269  }
270 
271  // Determine L1T Type (0=unknown, 1=legacy/stage-1 or 2=stage-2)
272  l1tType_ = 0;
273  unsigned int stage1(0), stage2(0);
274  if (processPSet_->existsAs<std::vector<std::string>>("@all_modules")) {
275  const std::vector<std::string>& allModules(processPSet_->getParameter<std::vector<std::string>>("@all_modules"));
276  for (auto const& allModule : allModules) {
277  if ((moduleType(allModule) == "HLTLevel1GTSeed") or (moduleType(allModule) == "L1GlobalTrigger")) {
278  stage1 += 1;
279  } else if ((moduleType(allModule) == "HLTL1TSeed") or (moduleType(allModule) == "L1TGlobalProducer")) {
280  stage2 += 1;
281  }
282  }
283  }
284  if ((stage1 + stage2) == 0) {
285  l1tType_ = 0;
286  // edm::LogError("HLTConfigData") << " Can't identify l1tType: Process '" << processName_ << "' does not contain any identifying instances!";
287  } else if ((stage1 * stage2) != 0) {
288  l1tType_ = 0;
289  // edm::LogError("HLTConfigData") << " Can't identify l1tType: Process '" << processName_ << "' contains both legacy/stage-1/stage-2 instances!";
290  } else if (stage1 > 0) {
291  l1tType_ = 1;
292  // edm::LogError("HLTConfigData") << " Identified Process '" << processName_ << "' as legacy/stage-1 L1T!";
293  } else {
294  l1tType_ = 2;
295  // edm::LogError("HLTConfigData") << " Identified Process '" << processName_ << "' as stage-2 L1T!";
296  }
297 
298  LogVerbatim("HLTConfigData") << "HLTConfigData: ProcessPSet with name/GT/table/l1tType: '" << processName_ << "' '"
299  << globalTag_ << "' '" << tableName_ << "' " << l1tType_;
300 
301  return;
302 }
303 
304 void HLTConfigData::dump(const std::string& what) const {
305  using namespace std;
306  using namespace edm;
307 
308  if (what == "ProcessPSet") {
309  cout << "HLTConfigData::dump: ProcessPSet = " << endl << *processPSet_ << endl;
310  } else if (what == "ProcessName") {
311  cout << "HLTConfigData::dump: ProcessName = " << processName_ << endl;
312  } else if (what == "GlobalTag") {
313  cout << "HLTConfigData::dump: GlobalTag = " << globalTag_ << endl;
314  } else if (what == "TableName") {
315  cout << "HLTConfigData::dump: TableName = " << tableName_ << endl;
316  } else if (what == "Triggers") {
317  const unsigned int n(size());
318  cout << "HLTConfigData::dump: Triggers: " << n << endl;
319  for (unsigned int i = 0; i != n; ++i) {
320  cout << " " << i << " " << triggerNames_[i] << endl;
321  }
322  } else if (what == "TriggerSeeds") {
323  const unsigned int n(size());
324  cout << "HLTConfigData::dump: TriggerSeeds: " << n << endl;
325  for (unsigned int i = 0; i != n; ++i) {
326  const unsigned int m1(hltL1GTSeeds_[i].size());
327  const unsigned int m2(hltL1TSeeds_[i].size());
328  cout << " " << i << " " << triggerNames_[i] << " " << m1 << "/" << m2 << endl;
329  if (m1 > 0) {
330  for (unsigned int j1 = 0; j1 != m1; ++j1) {
331  cout << " HLTLevel1GTSeed: " << j1 << " " << hltL1GTSeeds_[i][j1].first << "/"
332  << hltL1GTSeeds_[i][j1].second;
333  }
334  cout << endl;
335  }
336  if (m2 > 0) {
337  for (unsigned int j2 = 0; j2 != m2; ++j2) {
338  cout << " HLTL1TSeed: " << j2 << " " << hltL1TSeeds_[i][j2];
339  }
340  cout << endl;
341  }
342  }
343  } else if (what == "Modules") {
344  const unsigned int n(size());
345  cout << "HLTConfigData::dump Triggers and Modules: " << n << endl;
346  for (unsigned int i = 0; i != n; ++i) {
347  const unsigned int m(size(i));
348  cout << i << " " << triggerNames_[i] << " " << m << endl;
349  cout << " - Modules: ";
350  unsigned int nHLTPrescalers(0);
351  unsigned int nHLTLevel1GTSeed(0);
352  unsigned int nHLTL1TSeed(0);
353  for (unsigned int j = 0; j != m; ++j) {
354  const string& label(moduleLabels_[i][j]);
355  const string type(moduleType(label));
356  const string edmtype(moduleEDMType(label));
357  const bool tags(saveTags(label));
358  cout << " " << j << ":" << label << "/" << type << "/" << edmtype << "/" << tags;
359  if (type == "HLTPrescaler")
360  nHLTPrescalers++;
361  if (type == "HLTLevel1GTSeed")
362  nHLTLevel1GTSeed++;
363  if (type == "HLTL1TSeed")
364  nHLTL1TSeed++;
365  }
366  cout << endl;
367  cout << " - Number of HLTPrescaler/HLTLevel1GTSeed/HLTL1TSeed modules: " << nHLTPrescalers << "/"
368  << nHLTLevel1GTSeed << "/" << nHLTL1TSeed << endl;
369  }
370  } else if (what == "StreamNames") {
371  const unsigned int n(streamNames_.size());
372  cout << "HLTConfigData::dump: StreamNames: " << n << endl;
373  for (unsigned int i = 0; i != n; ++i) {
374  cout << " " << i << " " << streamNames_[i] << endl;
375  }
376  } else if (what == "Streams") {
377  const unsigned int n(streamNames_.size());
378  cout << "HLTConfigData::dump: Streams: " << n << endl;
379  for (unsigned int i = 0; i != n; ++i) {
380  const unsigned int m(streamContents_[i].size());
381  cout << " " << i << " " << streamNames_[i] << " " << m << endl;
382  for (unsigned int j = 0; j != m; ++j) {
383  cout << " " << j << " " << streamContents_[i][j] << endl;
384  }
385  }
386  } else if (what == "DatasetNames") {
387  const unsigned int n(datasetNames_.size());
388  cout << "HLTConfigData::dump: DatasetNames: " << n << endl;
389  for (unsigned int i = 0; i != n; ++i) {
390  cout << " " << i << " " << datasetNames_[i] << endl;
391  }
392  } else if (what == "Datasets") {
393  const unsigned int n(datasetNames_.size());
394  cout << "HLTConfigData::dump: Datasets: " << n << endl;
395  for (unsigned int i = 0; i != n; ++i) {
396  const unsigned int m(datasetContents_[i].size());
397  cout << " " << i << " " << datasetNames_[i] << " " << m << endl;
398  for (unsigned int j = 0; j != m; ++j) {
399  cout << " " << j << " " << datasetContents_[i][j] << endl;
400  }
401  }
402  } else if (what == "PrescaleTable") {
403  const unsigned int n(hltPrescaleTable_.size());
404  cout << "HLTConfigData::dump: PrescaleTable: # of sets : " << n << endl;
405  const vector<string>& labels(hltPrescaleTable_.labels());
406  for (unsigned int i = 0; i != n; ++i) {
407  cout << " " << i << "/'" << labels.at(i) << "'";
408  }
409  if (n > 0)
410  cout << endl;
411  const map<string, vector<unsigned int>>& table(hltPrescaleTable_.table());
412  cout << "HLTConfigData::dump: PrescaleTable: # of paths: " << table.size() << endl;
413  const map<string, vector<unsigned int>>::const_iterator tb(table.begin());
414  const map<string, vector<unsigned int>>::const_iterator te(table.end());
415  for (map<string, vector<unsigned int>>::const_iterator ti = tb; ti != te; ++ti) {
416  for (unsigned int i = 0; i != n; ++i) {
417  cout << " " << ti->second.at(i);
418  }
419  cout << " " << ti->first << endl;
420  }
421  } else {
422  cout << "HLTConfigData::dump: Unkown dump request: " << what << endl;
423  }
424  return;
425 }
426 
428 
430 
431 unsigned int HLTConfigData::size() const { return triggerNames_.size(); }
432 unsigned int HLTConfigData::size(unsigned int trigger) const { return moduleLabels_.at(trigger).size(); }
433 unsigned int HLTConfigData::size(const std::string& trigger) const { return size(triggerIndex(trigger)); }
434 
436 const std::vector<std::string>& HLTConfigData::triggerNames() const { return triggerNames_; }
437 const std::string& HLTConfigData::triggerName(unsigned int trigger) const { return triggerNames_.at(trigger); }
438 unsigned int HLTConfigData::triggerIndex(const std::string& trigger) const {
439  const std::map<std::string, unsigned int>::const_iterator index(triggerIndex_.find(trigger));
440  if (index == triggerIndex_.end()) {
441  return size();
442  } else {
443  return index->second;
444  }
445 }
446 
447 const std::vector<std::string>& HLTConfigData::moduleLabels(unsigned int trigger) const {
448  return moduleLabels_.at(trigger);
449 }
450 const std::vector<std::string>& HLTConfigData::moduleLabels(const std::string& trigger) const {
451  return moduleLabels_.at(triggerIndex(trigger));
452 }
453 
454 const std::vector<std::string>& HLTConfigData::saveTagsModules(unsigned int trigger) const {
455  return saveTagsModules_.at(trigger);
456 }
457 const std::vector<std::string>& HLTConfigData::saveTagsModules(const std::string& trigger) const {
458  return saveTagsModules_.at(triggerIndex(trigger));
459 }
460 
461 const std::string& HLTConfigData::moduleLabel(unsigned int trigger, unsigned int module) const {
462  return moduleLabels_.at(trigger).at(module);
463 }
464 const std::string& HLTConfigData::moduleLabel(const std::string& trigger, unsigned int module) const {
465  return moduleLabels_.at(triggerIndex(trigger)).at(module);
466 }
467 
468 unsigned int HLTConfigData::moduleIndex(unsigned int trigger, const std::string& module) const {
469  const std::map<std::string, unsigned int>::const_iterator index(moduleIndex_.at(trigger).find(module));
470  if (index == moduleIndex_.at(trigger).end()) {
471  return size(trigger);
472  } else {
473  return index->second;
474  }
475 }
476 unsigned int HLTConfigData::moduleIndex(const std::string& trigger, const std::string& module) const {
477  return moduleIndex(triggerIndex(trigger), module);
478 }
479 
481  const edm::ParameterSet& pset(modulePSet(module));
482  if (pset.existsAs<std::string>("@module_type", true)) {
483  return pset.getParameter<std::string>("@module_type");
484  } else {
485  return "";
486  }
487 }
488 
490  const edm::ParameterSet& pset(modulePSet(module));
491  if (pset.existsAs<std::string>("@module_edm_type", true)) {
492  return pset.getParameter<std::string>("@module_edm_type");
493  } else {
494  return "";
495  }
496 }
497 
499 
501  //HLTConfigProvider sees ignored modules as "-modname"
502  //but in the PSet, the module is named "modname"
503  //so if it starts with "-", you need to remove the "-" from the
504  //module name to be able to retreive it from the PSet
505  if (processPSet_->exists(module.front() != '-' ? module : module.substr(1))) {
506  return processPSet_->getParameterSet(module.front() != '-' ? module : module.substr(1));
507  } else {
508  return *s_dummyPSet();
509  }
510 }
511 
513  const edm::ParameterSet& pset(modulePSet(module));
514  if (pset.existsAs<bool>("saveTags", true)) {
515  return pset.getParameter<bool>("saveTags");
516  } else {
517  return false;
518  }
519 }
520 
521 unsigned int HLTConfigData::l1tType() const { return l1tType_; }
522 
523 const std::vector<std::vector<std::pair<bool, std::string>>>& HLTConfigData::hltL1GTSeeds() const {
524  return hltL1GTSeeds_;
525 }
526 
527 const std::vector<std::pair<bool, std::string>>& HLTConfigData::hltL1GTSeeds(const std::string& trigger) const {
528  return hltL1GTSeeds(triggerIndex(trigger));
529 }
530 
531 const std::vector<std::pair<bool, std::string>>& HLTConfigData::hltL1GTSeeds(unsigned int trigger) const {
532  return hltL1GTSeeds_.at(trigger);
533 }
534 
535 const std::vector<std::vector<std::string>>& HLTConfigData::hltL1TSeeds() const { return hltL1TSeeds_; }
536 
537 const std::vector<std::string>& HLTConfigData::hltL1TSeeds(const std::string& trigger) const {
538  return hltL1TSeeds(triggerIndex(trigger));
539 }
540 
541 const std::vector<std::string>& HLTConfigData::hltL1TSeeds(unsigned int trigger) const {
542  return hltL1TSeeds_.at(trigger);
543 }
544 
546 const std::vector<std::string>& HLTConfigData::streamNames() const { return streamNames_; }
547 
548 const std::string& HLTConfigData::streamName(unsigned int stream) const { return streamNames_.at(stream); }
549 
550 unsigned int HLTConfigData::streamIndex(const std::string& stream) const {
551  const std::map<std::string, unsigned int>::const_iterator index(streamIndex_.find(stream));
552  if (index == streamIndex_.end()) {
553  return streamNames_.size();
554  } else {
555  return index->second;
556  }
557 }
558 
559 const std::vector<std::vector<std::string>>& HLTConfigData::streamContents() const { return streamContents_; }
560 
561 const std::vector<std::string>& HLTConfigData::streamContent(unsigned int stream) const {
562  return streamContents_.at(stream);
563 }
564 
565 const std::vector<std::string>& HLTConfigData::streamContent(const std::string& stream) const {
566  return streamContent(streamIndex(stream));
567 }
568 
570 const std::vector<std::string>& HLTConfigData::datasetNames() const { return datasetNames_; }
571 
572 const std::string& HLTConfigData::datasetName(unsigned int dataset) const { return datasetNames_.at(dataset); }
573 
574 unsigned int HLTConfigData::datasetIndex(const std::string& dataset) const {
575  const std::map<std::string, unsigned int>::const_iterator index(datasetIndex_.find(dataset));
576  if (index == datasetIndex_.end()) {
577  return datasetNames_.size();
578  } else {
579  return index->second;
580  }
581 }
582 
583 const std::vector<std::vector<std::string>>& HLTConfigData::datasetContents() const { return datasetContents_; }
584 
585 const std::vector<std::string>& HLTConfigData::datasetContent(unsigned int dataset) const {
586  return datasetContents_.at(dataset);
587 }
588 
589 const std::vector<std::string>& HLTConfigData::datasetContent(const std::string& dataset) const {
590  return datasetContent(datasetIndex(dataset));
591 }
592 
593 unsigned int HLTConfigData::prescaleSize() const { return hltPrescaleTable_.size(); }
594 unsigned int HLTConfigData::prescaleValue(unsigned int set, const std::string& trigger) const {
595  return hltPrescaleTable_.prescale(set, trigger);
596 }
597 
598 const std::vector<std::string>& HLTConfigData::prescaleLabels() const { return hltPrescaleTable_.labels(); }
599 const std::map<std::string, std::vector<unsigned int>>& HLTConfigData::prescaleTable() const {
600  return hltPrescaleTable_.table();
601 }
602 
Log< level::Info, true > LogVerbatim
bool existsAs(std::string const &parameterName, bool trackiness=true) const
checks if a parameter exists as a given type
Definition: ParameterSet.h:171
std::map< std::string, unsigned int > triggerIndex_
const std::string & datasetName(unsigned int dataset) const
name of dataset with index i
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
const std::string & streamName(unsigned int stream) const
name of stream with index i
ParameterSetID id() const
The single EDProduct containing the HLT Prescale Table.
const std::vector< std::string > & triggerNames() const
names of trigger paths
const std::vector< std::vector< std::pair< bool, std::string > > > & hltL1GTSeeds() const
bool exists(std::string const &parameterName) const
checks if a parameter exists
bool saveTags(const std::string &module) const
Is module an L3 filter (ie, tracked saveTags=true)
const edm::ParameterSet & modulePSet(const std::string &module) const
ParameterSet of module.
std::vector< std::string > datasetNames_
unsigned int size() const
number of trigger paths in trigger table
unsigned int prescaleValue(unsigned int set, const std::string &trigger) const
HLT prescale value in specific prescale set for a specific trigger path.
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
const std::vector< std::string > & datasetNames() const
Datasets.
std::vector< std::vector< std::string > > saveTagsModules_
tuple m2
Definition: callgraph.py:57
const std::vector< std::string > & streamNames() const
Streams.
char const * label
std::vector< std::map< std::string, unsigned int > > moduleIndex_
std::string globalTag_
const std::vector< std::string > & datasetContent(unsigned int dataset) const
names of trigger paths in dataset with index i
std::vector< std::vector< std::string > > streamContents_
std::vector< std::string > triggerNames_
const std::vector< std::string > & labels() const
std::vector< std::vector< std::string > > datasetContents_
const std::vector< std::string > & saveTagsModules(unsigned int trigger) const
const std::vector< std::vector< std::string > > & datasetContents() const
names of trigger paths for all datasets
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
std::string tableName_
trigger::HLTPrescaleTable hltPrescaleTable_
std::vector< std::vector< std::string > > moduleLabels_
static const edm::ParameterSet initializeDummyPSet()
std::map< std::string, unsigned int > streamIndex_
const std::string moduleType(const std::string &module) const
C++ class name of module.
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 - size-1)
void extract()
extract information into data members - called by init() methods
unsigned int moduleIndex(unsigned int trigger, const std::string &module) const
slot position of module on trigger path (0 - size-1)
std::vector< std::vector< std::string > > hltL1TSeeds_
const std::string & processName() const
Accessors (const methods)
std::map< std::string, unsigned int > datasetIndex_
unsigned int prescale(const std::string &trigger) const
high-level user access method: prescale for given trigger path
unsigned int streamIndex(const std::string &stream) const
index of stream with name
const std::string & tableName() const
HLT ConfDB table name.
const std::map< std::string, std::vector< unsigned int > > & prescaleTable() const
const edm::ParameterSet * processPSet_
const edm::ParameterSet & processPSet() const
ParameterSet of process.
ParameterSet const & getParameterSet(std::string const &) const
std::vector< std::vector< std::pair< bool, std::string > > > hltL1GTSeeds_
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
unsigned int prescaleSize() const
const std::string moduleEDMType(const std::string &module) const
C++ base class name of module.
std::string const & label() const
Definition: InputTag.h:36
const std::vector< std::vector< std::string > > & hltL1TSeeds() const
bool isValid() const
Definition: Hash.h:141
unsigned int datasetIndex(const std::string &dataset) const
index of dataset with name
const std::vector< std::string > & prescaleLabels() const
low-level data member access
string end
Definition: dataset.py:937
std::vector< std::string > streamNames_
const std::vector< std::vector< std::string > > & streamContents() const
names of datasets for all streams
const std::string & moduleLabel(unsigned int trigger, unsigned int module) const
tuple cout
Definition: gather_cfg.py:144
unsigned int size() const
consistency condition: all vectors must have the same length
const std::string & triggerName(unsigned int triggerIndex) const
const std::vector< std::string > & streamContent(unsigned int stream) const
names of datasets in stream with index i
edm::ParameterSetID id() const
technical: id() function needed for use with ThreadSafeRegistry
unsigned int l1tType() const
L1T type (0=unknown, 1=legacy/stage-1 or 2=stage-2)
const std::map< std::string, std::vector< unsigned int > > & table() const
ParameterSet const & registerIt()
static const edm::ParameterSet * s_dummyPSet()
std::string processName_
void dump(const std::string &what) const
Dumping config info to cout.
const std::string & globalTag() const
GlobalTag.globaltag.
tuple module
Definition: callgraph.py:69
unsigned int l1tType_