CMS 3D CMS Logo

HLTConfigData.h
Go to the documentation of this file.
1 #ifndef HLTrigger_HLTcore_HLTConfigData_h
2 #define HLTrigger_HLTcore_HLTConfigData_h
3 
17 
18 #include <map>
19 #include <string>
20 #include <vector>
21 #include <type_traits>
22 #include <oneapi/tbb/concurrent_unordered_map.h>
23 
24 //
25 // class declaration
26 //
27 
29 public:
30  HLTConfigData();
31  HLTConfigData(const edm::ParameterSet* iID);
32 
33 private:
35  void extract();
36 
37 public:
39  void dump(const std::string& what) const;
40 
42 
44  const std::string& processName() const;
45 
47  const std::string& globalTag() const;
48 
50  const std::string& tableName() const;
51 
53  unsigned int size() const;
55  unsigned int size(unsigned int trigger) const;
56  unsigned int size(const std::string& trigger) const;
57 
59  const std::vector<std::string>& triggerNames() const;
60  const std::string& triggerName(unsigned int triggerIndex) const;
61 
63  unsigned int triggerIndex(const std::string& triggerName) const;
64 
66  const std::vector<std::string>& moduleLabels(unsigned int trigger) const;
67  const std::vector<std::string>& moduleLabels(const std::string& trigger) const;
68  const std::vector<std::string>& saveTagsModules(unsigned int trigger) const;
69  const std::vector<std::string>& saveTagsModules(const std::string& trigger) const;
70  const std::string& moduleLabel(unsigned int trigger, unsigned int module) const;
71  const std::string& moduleLabel(const std::string& trigger, unsigned int module) const;
72 
74  unsigned int moduleIndex(unsigned int trigger, const std::string& module) const;
75  unsigned int moduleIndex(const std::string& trigger, const std::string& module) const;
76 
78  const std::string& moduleType(const std::string& module) const;
79 
81  const std::string& moduleEDMType(const std::string& module) const;
82 
84  const edm::ParameterSet& processPSet() const;
85 
87  const edm::ParameterSet& modulePSet(const std::string& module) const;
88 
90  bool saveTags(const std::string& module) const;
91 
93  unsigned int l1tType() const;
94 
97  const std::vector<std::vector<std::pair<bool, std::string>>>& hltL1GTSeeds() const;
99  const std::vector<std::pair<bool, std::string>>& hltL1GTSeeds(const std::string& trigger) const;
101  const std::vector<std::pair<bool, std::string>>& hltL1GTSeeds(unsigned int trigger) const;
102 
105  const std::vector<std::vector<std::string>>& hltL1TSeeds() const;
107  const std::vector<std::string>& hltL1TSeeds(const std::string& trigger) const;
109  const std::vector<std::string>& hltL1TSeeds(unsigned int trigger) const;
110 
113  const std::vector<std::string>& streamNames() const;
115  const std::string& streamName(unsigned int stream) const;
117  unsigned int streamIndex(const std::string& stream) const;
119  const std::vector<std::vector<std::string>>& streamContents() const;
121  const std::vector<std::string>& streamContent(unsigned int stream) const;
123  const std::vector<std::string>& streamContent(const std::string& stream) const;
124 
127  const std::vector<std::string>& datasetNames() const;
129  const std::string& datasetName(unsigned int dataset) const;
131  unsigned int datasetIndex(const std::string& dataset) const;
133  const std::vector<std::vector<std::string>>& datasetContents() const;
135  const std::vector<std::string>& datasetContent(unsigned int dataset) const;
137  const std::vector<std::string>& datasetContent(const std::string& dataset) const;
138 
141  unsigned int prescaleSize() const;
143  template <typename T = unsigned int>
144  T prescaleValue(unsigned int set, const std::string& trigger) const;
146  const std::vector<std::string>& prescaleLabels() const;
148  template <typename T = unsigned int>
149  std::map<std::string, std::vector<T>> const& prescaleTable() const;
150 
152  edm::ParameterSetID id() const;
153 
154 private:
156  return module.front() != '-' ? module : module.substr(1);
157  }
158 
160 
164  std::vector<std::string> triggerNames_;
165  std::vector<std::vector<std::string>> moduleLabels_;
166  std::vector<std::vector<std::string>> saveTagsModules_;
167 
168  std::map<std::string, unsigned int> triggerIndex_;
169  std::vector<std::map<std::string, unsigned int>> moduleIndex_;
170 
171  unsigned int l1tType_;
172  std::vector<std::vector<std::pair<bool, std::string>>> hltL1GTSeeds_;
173  std::vector<std::vector<std::string>> hltL1TSeeds_;
174 
175  std::vector<std::string> streamNames_;
176  std::map<std::string, unsigned int> streamIndex_;
177  std::vector<std::vector<std::string>> streamContents_;
178 
179  std::vector<std::string> datasetNames_;
180  std::map<std::string, unsigned int> datasetIndex_;
181  std::vector<std::vector<std::string>> datasetContents_;
182 
184  std::map<std::string, std::vector<double>> hltPrescaleTableValuesDouble_;
185  std::map<std::string, std::vector<FractionalPrescale>> hltPrescaleTableValuesFractional_;
186  struct ModuleInfo {
187  ModuleInfo(edm::ParameterSet const* iPSet, const std::string& iClass, const std::string& iType)
188  : pset_(iPSet), class_(iClass), edmType_(iType) {}
189 
190  edm::ParameterSet const* pset_ = nullptr;
193  };
194 
195  const ModuleInfo& moduleInfoFor(const std::string& iModule) const;
196  mutable oneapi::tbb::concurrent_unordered_map<std::string, ModuleInfo> modulesInfo_;
197 };
198 
199 template <typename T>
200 T HLTConfigData::prescaleValue(unsigned int set, const std::string& trigger) const {
201  static_assert(std::is_same_v<T, double> or std::is_same_v<T, FractionalPrescale>,
202  "\n\tPlease use prescaleValue<double> or prescaleValue<FractionalPrescale>"
203  "\n\t(other types for HLT prescales are not supported anymore by HLTConfigData)");
204  return hltPrescaleTable_.prescale(set, trigger);
205 }
206 
207 template <typename T>
208 std::map<std::string, std::vector<T>> const& HLTConfigData::prescaleTable() const {
209  static_assert(std::is_same_v<T, double> or std::is_same_v<T, FractionalPrescale>,
210  "\n\tPlease use prescaleTable<double> or prescaleTable<FractionalPrescale>"
211  "\n\t(other types for HLT prescales are not supported anymore by HLTConfigData)");
212  return hltPrescaleTable_.table();
213 }
214 
215 template <>
216 std::map<std::string, std::vector<double>> const& HLTConfigData::prescaleTable() const;
217 
218 template <>
219 std::map<std::string, std::vector<FractionalPrescale>> const& HLTConfigData::prescaleTable() const;
220 
221 #endif // HLTrigger_HLTcore_HLTConfigData_h
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::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)
The single EDProduct containing the HLT Prescale Table.
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
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.
std::vector< std::map< std::string, unsigned int > > moduleIndex_
std::string globalTag_
unsigned int prescale(const std::string &trigger) const
high-level user access method: prescale for given trigger path
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_
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_
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
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
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)
long double T
const edm::ParameterSet & processPSet() const
ParameterSet of process.
unsigned int datasetIndex(const std::string &dataset) const
index of dataset with name
const std::string & moduleLabel(unsigned int trigger, unsigned int module) const
ModuleInfo(edm::ParameterSet const *iPSet, const std::string &iClass, const std::string &iType)
std::string processName_
unsigned int l1tType_
const std::string & triggerName(unsigned int triggerIndex) const
T prescaleValue(unsigned int set, const std::string &trigger) const
HLT prescale value in specific prescale set for a specific trigger path.