File indexing completed on 2024-04-06 12:12:16
0001
0002
0003
0004
0005
0006
0007
0008 #include "FWCore/Framework/interface/TriggerNamesService.h"
0009 #include "DataFormats/Common/interface/TriggerResults.h"
0010 #include "FWCore/ParameterSet/interface/Registry.h"
0011 #include "FWCore/Utilities/interface/Exception.h"
0012 #include "FWCore/Utilities/interface/EDMException.h"
0013 #include "FWCore/Utilities/interface/Algorithms.h"
0014 #include "FWCore/Utilities/interface/path_configuration.h"
0015
0016 namespace edm {
0017 namespace service {
0018
0019 TriggerNamesService::TriggerNamesService(const ParameterSet& pset) {
0020 trigger_pset_ = pset.getParameterSet("@trigger_paths");
0021
0022 trignames_ = trigger_pset_.getParameter<Strings>("@trigger_paths");
0023 end_names_ = pset.getParameter<Strings>("@end_paths");
0024
0025 ParameterSet defopts;
0026 ParameterSet const& opts = pset.getUntrackedParameterSet("options", defopts);
0027 wantSummary_ = opts.getUntrackedParameter("wantSummary", false);
0028
0029 process_name_ = pset.getParameter<std::string>("@process_name");
0030
0031 loadPosMap(trigpos_, trignames_);
0032 loadPosMap(end_pos_, end_names_);
0033
0034 const unsigned int n(trignames_.size());
0035 for (unsigned int i = 0; i != n; ++i) {
0036 modulenames_.push_back(
0037 path_configuration::configurationToModuleBitPosition(pset.getParameter<Strings>(trignames_[i])));
0038 }
0039 for (unsigned int i = 0; i != end_names_.size(); ++i) {
0040 end_modulenames_.push_back(
0041 path_configuration::configurationToModuleBitPosition(pset.getParameter<Strings>(end_names_[i])));
0042 }
0043 }
0044
0045 bool TriggerNamesService::getTrigPaths(TriggerResults const& triggerResults,
0046 Strings& trigPaths,
0047 bool& fromPSetRegistry) {
0048
0049
0050 ParameterSet const* pset = nullptr;
0051 pset::Registry const* psetRegistry = pset::Registry::instance();
0052 if (nullptr != (pset = psetRegistry->getMapped(triggerResults.parameterSetID()))) {
0053
0054
0055
0056
0057 Strings const& psetNames = pset->getParameterNamesForType<Strings>();
0058 std::string name("@trigger_paths");
0059 if (search_all(psetNames, name)) {
0060
0061 trigPaths = pset->getParameter<Strings>("@trigger_paths");
0062
0063
0064 if (trigPaths.size() != triggerResults.size()) {
0065 throw edm::Exception(edm::errors::Unknown)
0066 << "TriggerNamesService::getTrigPaths, Trigger names vector and\n"
0067 "TriggerResults are different sizes. This should be impossible,\n"
0068 "please send information to reproduce this problem to\n"
0069 "the edm developers.\n";
0070 }
0071
0072 fromPSetRegistry = true;
0073 return true;
0074 }
0075 }
0076
0077 fromPSetRegistry = false;
0078
0079
0080
0081
0082 if (triggerResults.size() == triggerResults.getTriggerNames().size()) {
0083 trigPaths = triggerResults.getTriggerNames();
0084 return true;
0085 }
0086
0087 return false;
0088 }
0089
0090 bool TriggerNamesService::getTrigPaths(TriggerResults const& triggerResults, Strings& trigPaths) {
0091 bool dummy;
0092 return getTrigPaths(triggerResults, trigPaths, dummy);
0093 }
0094 }
0095 }