CMS 3D CMS Logo

HLTConfigData.cc
Go to the documentation of this file.
1 
14 
15 #include <iostream>
16 
17 //Using this function with the 'const static within s_dummyPSet'
18 // guarantees that even if multiple threads call s_dummyPSet at the
19 // same time, only the 'first' one registers the dummy PSet.
22  dummy.registerIt();
23  return dummy;
24 }
25 
26 static const edm::ParameterSet* s_dummyPSet() {
27  static const edm::ParameterSet dummyPSet{initializeDummyPSet()};
28  return &dummyPSet;
29 }
30 
32  : processPSet_(s_dummyPSet()),
33  processName_(""),
34  globalTag_(""),
35  tableName_(),
36  triggerNames_(),
37  moduleLabels_(),
38  saveTagsModules_(),
39  triggerIndex_(),
40  moduleIndex_(),
41  l1tType_(0),
42  hltL1GTSeeds_(),
43  hltL1TSeeds_(),
44  streamNames_(),
45  streamIndex_(),
46  streamContents_(),
47  datasetNames_(),
48  datasetIndex_(),
49  datasetContents_(),
50  hltPrescaleTable_(),
51  hltPrescaleTableValuesDouble_{},
52  hltPrescaleTableValuesFractional_{} {
53  if (processPSet_->id().isValid()) {
54  extract();
55  }
56 }
57 
59  : processPSet_(iPSet),
60  processName_(""),
61  globalTag_(""),
62  tableName_(),
63  triggerNames_(),
64  moduleLabels_(),
65  saveTagsModules_(),
66  triggerIndex_(),
67  moduleIndex_(),
68  l1tType_(0),
69  hltL1GTSeeds_(),
70  hltL1TSeeds_(),
71  streamNames_(),
72  streamIndex_(),
73  streamContents_(),
74  datasetNames_(),
75  datasetIndex_(),
76  datasetContents_(),
77  hltPrescaleTable_(),
78  hltPrescaleTableValuesDouble_{},
79  hltPrescaleTableValuesFractional_{} {
80  if (processPSet_->id().isValid()) {
81  extract();
82  }
83 }
84 
86  using namespace std;
87  using namespace edm;
88  using namespace trigger;
89 
90  // Extract process name
91  if (processPSet_->existsAs<string>("@process_name", true)) {
92  processName_ = processPSet_->getParameter<string>("@process_name");
93  }
94 
95  // Extract globaltag
96  globalTag_ = "";
97  const ParameterSet* GlobalTagPSet(nullptr);
98  if (processPSet_->exists("GlobalTag")) {
99  GlobalTagPSet = &(processPSet_->getParameterSet("GlobalTag"));
100  } else if (processPSet_->exists("PoolDBESSource@GlobalTag")) {
101  GlobalTagPSet = &(processPSet_->getParameterSet("PoolDBESSource@GlobalTag"));
102  }
103  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  if (processPSet_->existsAs<ParameterSet>("HLTConfigVersion", true)) {
109  const ParameterSet& HLTPSet(processPSet_->getParameterSet("HLTConfigVersion"));
110  if (HLTPSet.existsAs<string>("tableName", true)) {
111  tableName_ = HLTPSet.getParameter<string>("tableName");
112  }
113  }
114 
115  // Extract trigger paths (= paths - end_paths)
116  if (processPSet_->existsAs<ParameterSet>("@trigger_paths", true)) {
117  const ParameterSet& HLTPSet(processPSet_->getParameterSet("@trigger_paths"));
118  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  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  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]);
215  sort(streamContents_[i].begin(), streamContents_[i].end());
216  }
217  }
218 
219  // Extract and fill datasets information
220  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  if (processPSet_->existsAs<ParameterSet>(preS, true)) {
240  prescaleName = preS;
241  } else if (processPSet_->existsAs<ParameterSet>(preT, true)) {
242  prescaleName = preT;
243  }
244  if (prescaleName.empty()) {
246  } else {
247  const ParameterSet& iPS(processPSet_->getParameterSet(prescaleName));
248  string defaultLabel("default");
249  if (iPS.existsAs<string>("lvl1DefaultLabel", true)) {
250  defaultLabel = iPS.getParameter<string>("lvl1DefaultLabel");
251  }
252  vector<string> labels;
253  if (iPS.existsAs<vector<string>>("lvl1Labels", true)) {
254  labels = iPS.getParameter<vector<string>>("lvl1Labels");
255  }
256  unsigned int set(0);
257  const unsigned int n(labels.size());
258  for (unsigned int i = 0; i != n; ++i) {
259  if (labels[i] == defaultLabel)
260  set = i;
261  }
262  map<string, vector<unsigned int>> table;
263  if (iPS.existsAs<vector<ParameterSet>>("prescaleTable", true)) {
264  const vector<ParameterSet>& vpTable(iPS.getParameterSetVector("prescaleTable"));
265  const unsigned int m(vpTable.size());
266  for (unsigned int i = 0; i != m; ++i) {
267  table[vpTable[i].getParameter<std::string>("pathName")] =
268  vpTable[i].getParameter<std::vector<unsigned int>>("prescales");
269  }
270  }
271  if (n > 0) {
273  } else {
275  }
276  }
277 
278  // fill maps to return prescales values with allowed types (double, FractionalPrescale)
279  for (auto const& [key, psVals] : hltPrescaleTable_.table()) {
281  {key, edm::vector_transform(psVals, [](auto const ps) -> double { return ps; })});
283  {key, edm::vector_transform(psVals, [](auto const ps) -> FractionalPrescale { return ps; })});
284  }
285 
286  // Determine L1T Type (0=unknown, 1=legacy/stage-1 or 2=stage-2)
287  l1tType_ = 0;
288  unsigned int stage1(0), stage2(0);
289  if (processPSet_->existsAs<std::vector<std::string>>("@all_modules")) {
290  const std::vector<std::string>& allModules(processPSet_->getParameter<std::vector<std::string>>("@all_modules"));
291  for (auto const& allModule : allModules) {
292  if ((moduleType(allModule) == "HLTLevel1GTSeed") or (moduleType(allModule) == "L1GlobalTrigger")) {
293  stage1 += 1;
294  } else if ((moduleType(allModule) == "HLTL1TSeed") or (moduleType(allModule) == "L1TGlobalProducer")) {
295  stage2 += 1;
296  }
297  }
298  }
299  if ((stage1 + stage2) == 0) {
300  l1tType_ = 0;
301  // edm::LogError("HLTConfigData") << " Can't identify l1tType: Process '" << processName_ << "' does not contain any identifying instances!";
302  } else if ((stage1 * stage2) != 0) {
303  l1tType_ = 0;
304  // edm::LogError("HLTConfigData") << " Can't identify l1tType: Process '" << processName_ << "' contains both legacy/stage-1/stage-2 instances!";
305  } else if (stage1 > 0) {
306  l1tType_ = 1;
307  // edm::LogError("HLTConfigData") << " Identified Process '" << processName_ << "' as legacy/stage-1 L1T!";
308  } else {
309  l1tType_ = 2;
310  // edm::LogError("HLTConfigData") << " Identified Process '" << processName_ << "' as stage-2 L1T!";
311  }
312 
313  LogVerbatim("HLTConfigData") << "HLTConfigData: ProcessPSet with name/GT/table/l1tType: '" << processName_ << "' '"
314  << globalTag_ << "' '" << tableName_ << "' " << l1tType_;
315 
316  return;
317 }
318 
319 void HLTConfigData::dump(const std::string& what) const {
320  using namespace std;
321  using namespace edm;
322 
323  if (what == "ProcessPSet") {
324  cout << "HLTConfigData::dump: ProcessPSet = " << endl << *processPSet_ << endl;
325  } else if (what == "ProcessName") {
326  cout << "HLTConfigData::dump: ProcessName = " << processName_ << endl;
327  } else if (what == "GlobalTag") {
328  cout << "HLTConfigData::dump: GlobalTag = " << globalTag_ << endl;
329  } else if (what == "TableName") {
330  cout << "HLTConfigData::dump: TableName = " << tableName_ << endl;
331  } else if (what == "Triggers") {
332  const unsigned int n(size());
333  cout << "HLTConfigData::dump: Triggers: " << n << endl;
334  for (unsigned int i = 0; i != n; ++i) {
335  cout << " " << i << " " << triggerNames_[i] << endl;
336  }
337  } else if (what == "TriggerSeeds") {
338  const unsigned int n(size());
339  cout << "HLTConfigData::dump: TriggerSeeds: " << n << endl;
340  for (unsigned int i = 0; i != n; ++i) {
341  const unsigned int m1(hltL1GTSeeds_[i].size());
342  const unsigned int m2(hltL1TSeeds_[i].size());
343  cout << " " << i << " " << triggerNames_[i] << " " << m1 << "/" << m2 << endl;
344  if (m1 > 0) {
345  for (unsigned int j1 = 0; j1 != m1; ++j1) {
346  cout << " HLTLevel1GTSeed: " << j1 << " " << hltL1GTSeeds_[i][j1].first << "/"
347  << hltL1GTSeeds_[i][j1].second;
348  }
349  cout << endl;
350  }
351  if (m2 > 0) {
352  for (unsigned int j2 = 0; j2 != m2; ++j2) {
353  cout << " HLTL1TSeed: " << j2 << " " << hltL1TSeeds_[i][j2];
354  }
355  cout << endl;
356  }
357  }
358  } else if (what == "Modules") {
359  const unsigned int n(size());
360  cout << "HLTConfigData::dump Triggers and Modules: " << n << endl;
361  for (unsigned int i = 0; i != n; ++i) {
362  const unsigned int m(size(i));
363  cout << i << " " << triggerNames_[i] << " " << m << endl;
364  cout << " - Modules: ";
365  unsigned int nHLTPrescalers(0);
366  unsigned int nHLTLevel1GTSeed(0);
367  unsigned int nHLTL1TSeed(0);
368  for (unsigned int j = 0; j != m; ++j) {
369  const string& label(moduleLabels_[i][j]);
370  const string type(moduleType(label));
371  const string edmtype(moduleEDMType(label));
372  const bool tags(saveTags(label));
373  cout << " " << j << ":" << label << "/" << type << "/" << edmtype << "/" << tags;
374  if (type == "HLTPrescaler")
375  nHLTPrescalers++;
376  if (type == "HLTLevel1GTSeed")
377  nHLTLevel1GTSeed++;
378  if (type == "HLTL1TSeed")
379  nHLTL1TSeed++;
380  }
381  cout << endl;
382  cout << " - Number of HLTPrescaler/HLTLevel1GTSeed/HLTL1TSeed modules: " << nHLTPrescalers << "/"
383  << nHLTLevel1GTSeed << "/" << nHLTL1TSeed << endl;
384  }
385  } else if (what == "StreamNames") {
386  const unsigned int n(streamNames_.size());
387  cout << "HLTConfigData::dump: StreamNames: " << n << endl;
388  for (unsigned int i = 0; i != n; ++i) {
389  cout << " " << i << " " << streamNames_[i] << endl;
390  }
391  } else if (what == "Streams") {
392  const unsigned int n(streamNames_.size());
393  cout << "HLTConfigData::dump: Streams: " << n << endl;
394  for (unsigned int i = 0; i != n; ++i) {
395  const unsigned int m(streamContents_[i].size());
396  cout << " " << i << " " << streamNames_[i] << " " << m << endl;
397  for (unsigned int j = 0; j != m; ++j) {
398  cout << " " << j << " " << streamContents_[i][j] << endl;
399  }
400  }
401  } else if (what == "DatasetNames") {
402  const unsigned int n(datasetNames_.size());
403  cout << "HLTConfigData::dump: DatasetNames: " << n << endl;
404  for (unsigned int i = 0; i != n; ++i) {
405  cout << " " << i << " " << datasetNames_[i] << endl;
406  }
407  } else if (what == "Datasets") {
408  const unsigned int n(datasetNames_.size());
409  cout << "HLTConfigData::dump: Datasets: " << n << endl;
410  for (unsigned int i = 0; i != n; ++i) {
411  const unsigned int m(datasetContents_[i].size());
412  cout << " " << i << " " << datasetNames_[i] << " " << m << endl;
413  for (unsigned int j = 0; j != m; ++j) {
414  cout << " " << j << " " << datasetContents_[i][j] << endl;
415  }
416  }
417  } else if (what == "PrescaleTable") {
418  const unsigned int n(hltPrescaleTable_.size());
419  cout << "HLTConfigData::dump: PrescaleTable: # of sets : " << n << endl;
420  const vector<string>& labels(hltPrescaleTable_.labels());
421  for (unsigned int i = 0; i != n; ++i) {
422  cout << " " << i << "/'" << labels.at(i) << "'";
423  }
424  if (n > 0)
425  cout << endl;
426  auto const& table = hltPrescaleTable_.table();
427  cout << "HLTConfigData::dump: PrescaleTable: # of paths: " << table.size() << endl;
428  for (auto const& [key, val] : table) {
429  for (unsigned int i = 0; i != n; ++i) {
430  cout << " " << val.at(i);
431  }
432  cout << " " << key << endl;
433  }
434  } else {
435  cout << "HLTConfigData::dump: Unkown dump request: " << what << endl;
436  }
437  return;
438 }
439 
441 
443 
444 unsigned int HLTConfigData::size() const { return triggerNames_.size(); }
445 unsigned int HLTConfigData::size(unsigned int trigger) const { return moduleLabels_.at(trigger).size(); }
446 unsigned int HLTConfigData::size(const std::string& trigger) const { return size(triggerIndex(trigger)); }
447 
449 const std::vector<std::string>& HLTConfigData::triggerNames() const { return triggerNames_; }
450 const std::string& HLTConfigData::triggerName(unsigned int trigger) const { return triggerNames_.at(trigger); }
451 unsigned int HLTConfigData::triggerIndex(const std::string& trigger) const {
452  const std::map<std::string, unsigned int>::const_iterator index(triggerIndex_.find(trigger));
453  if (index == triggerIndex_.end()) {
454  return size();
455  } else {
456  return index->second;
457  }
458 }
459 
460 const std::vector<std::string>& HLTConfigData::moduleLabels(unsigned int trigger) const {
461  return moduleLabels_.at(trigger);
462 }
463 const std::vector<std::string>& HLTConfigData::moduleLabels(const std::string& trigger) const {
464  return moduleLabels_.at(triggerIndex(trigger));
465 }
466 
467 const std::vector<std::string>& HLTConfigData::saveTagsModules(unsigned int trigger) const {
468  return saveTagsModules_.at(trigger);
469 }
470 const std::vector<std::string>& HLTConfigData::saveTagsModules(const std::string& trigger) const {
472 }
473 
474 const std::string& HLTConfigData::moduleLabel(unsigned int trigger, unsigned int module) const {
475  return moduleLabels_.at(trigger).at(module);
476 }
478  return moduleLabels_.at(triggerIndex(trigger)).at(module);
479 }
480 
481 unsigned int HLTConfigData::moduleIndex(unsigned int trigger, const std::string& module) const {
482  const std::map<std::string, unsigned int>::const_iterator index(moduleIndex_.at(trigger).find(module));
483  if (index == moduleIndex_.at(trigger).end()) {
484  return size(trigger);
485  } else {
486  return index->second;
487  }
488 }
491 }
492 
495  if (pset.existsAs<std::string>("@module_type", true)) {
496  return pset.getParameter<std::string>("@module_type");
497  } else {
498  return "";
499  }
500 }
501 
504  if (pset.existsAs<std::string>("@module_edm_type", true)) {
505  return pset.getParameter<std::string>("@module_edm_type");
506  } else {
507  return "";
508  }
509 }
510 
512 
514  //HLTConfigProvider sees ignored modules as "-modname"
515  //but in the PSet, the module is named "modname"
516  //so if it starts with "-", you need to remove the "-" from the
517  //module name to be able to retreive it from the PSet
518  if (processPSet_->exists(module.front() != '-' ? module : module.substr(1))) {
519  return processPSet_->getParameterSet(module.front() != '-' ? module : module.substr(1));
520  } else {
521  return *s_dummyPSet();
522  }
523 }
524 
527  if (pset.existsAs<bool>("saveTags", true)) {
528  return pset.getParameter<bool>("saveTags");
529  } else {
530  return false;
531  }
532 }
533 
534 unsigned int HLTConfigData::l1tType() const { return l1tType_; }
535 
536 const std::vector<std::vector<std::pair<bool, std::string>>>& HLTConfigData::hltL1GTSeeds() const {
537  return hltL1GTSeeds_;
538 }
539 
540 const std::vector<std::pair<bool, std::string>>& HLTConfigData::hltL1GTSeeds(const std::string& trigger) const {
542 }
543 
544 const std::vector<std::pair<bool, std::string>>& HLTConfigData::hltL1GTSeeds(unsigned int trigger) const {
545  return hltL1GTSeeds_.at(trigger);
546 }
547 
548 const std::vector<std::vector<std::string>>& HLTConfigData::hltL1TSeeds() const { return hltL1TSeeds_; }
549 
550 const std::vector<std::string>& HLTConfigData::hltL1TSeeds(const std::string& trigger) const {
552 }
553 
554 const std::vector<std::string>& HLTConfigData::hltL1TSeeds(unsigned int trigger) const {
555  return hltL1TSeeds_.at(trigger);
556 }
557 
559 const std::vector<std::string>& HLTConfigData::streamNames() const { return streamNames_; }
560 
561 const std::string& HLTConfigData::streamName(unsigned int stream) const { return streamNames_.at(stream); }
562 
563 unsigned int HLTConfigData::streamIndex(const std::string& stream) const {
564  const std::map<std::string, unsigned int>::const_iterator index(streamIndex_.find(stream));
565  if (index == streamIndex_.end()) {
566  return streamNames_.size();
567  } else {
568  return index->second;
569  }
570 }
571 
572 const std::vector<std::vector<std::string>>& HLTConfigData::streamContents() const { return streamContents_; }
573 
574 const std::vector<std::string>& HLTConfigData::streamContent(unsigned int stream) const {
575  return streamContents_.at(stream);
576 }
577 
578 const std::vector<std::string>& HLTConfigData::streamContent(const std::string& stream) const {
580 }
581 
583 const std::vector<std::string>& HLTConfigData::datasetNames() const { return datasetNames_; }
584 
585 const std::string& HLTConfigData::datasetName(unsigned int dataset) const { return datasetNames_.at(dataset); }
586 
587 unsigned int HLTConfigData::datasetIndex(const std::string& dataset) const {
588  const std::map<std::string, unsigned int>::const_iterator index(datasetIndex_.find(dataset));
589  if (index == datasetIndex_.end()) {
590  return datasetNames_.size();
591  } else {
592  return index->second;
593  }
594 }
595 
596 const std::vector<std::vector<std::string>>& HLTConfigData::datasetContents() const { return datasetContents_; }
597 
598 const std::vector<std::string>& HLTConfigData::datasetContent(unsigned int dataset) const {
599  return datasetContents_.at(dataset);
600 }
601 
602 const std::vector<std::string>& HLTConfigData::datasetContent(const std::string& dataset) const {
604 }
605 
606 unsigned int HLTConfigData::prescaleSize() const { return hltPrescaleTable_.size(); }
607 
608 template <>
609 std::map<std::string, std::vector<double>> const& HLTConfigData::prescaleTable() const {
611 }
612 
613 template <>
614 std::map<std::string, std::vector<FractionalPrescale>> const& HLTConfigData::prescaleTable() const {
616 }
617 
618 const std::vector<std::string>& HLTConfigData::prescaleLabels() const { return hltPrescaleTable_.labels(); }
619 
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:303
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
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:171
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
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_
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)
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_
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.
const std::string moduleType(const std::string &module) const
C++ class name of module.
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
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 std::string moduleEDMType(const std::string &module) const
C++ base class name of module.
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