CMS 3D CMS Logo

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