CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
FWHLTValidator.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Core
4 // Class : FWHLTValidator
5 //
6 
7 // system include files
8 #include <algorithm>
9 #include <cstring>
10 #include <boost/regex.hpp>
11 
12 // user include files
16 
19 
22 
23 void FWHLTValidator::fillOptions(const char* iBegin,
24  const char* iEnd,
25  std::vector<std::pair<std::shared_ptr<std::string>, std::string> >& oOptions) const {
26  oOptions.clear();
27  std::string part(iBegin, iEnd);
28  part = boost::regex_replace(part, boost::regex(".*?(\\&\\&|\\|\\||\\s)+"), "");
29 
30  if (m_triggerNames.empty()) {
31  edm::Handle<edm::TriggerResults> hTriggerResults;
32  edm::TriggerNames const* triggerNames(nullptr);
33  try {
34  edm::InputTag tag("TriggerResults", "", m_process.c_str());
36  event->getByLabel(tag, hTriggerResults);
37  triggerNames = &event->triggerNames(*hTriggerResults);
38  } catch (...) {
39  fwLog(fwlog::kWarning) << " no trigger results with process name " << m_process << " is available" << std::endl;
40  return;
41  }
42  for (unsigned int i = 0; i < triggerNames->size(); ++i)
43  m_triggerNames.push_back(triggerNames->triggerName(i));
44  std::sort(m_triggerNames.begin(), m_triggerNames.end());
45  }
46 
47  //only use add items which begin with the part of the member we are trying to match
48  unsigned int part_size = part.size();
49  for (std::vector<std::string>::const_iterator trigger = m_triggerNames.begin(); trigger != m_triggerNames.end();
50  ++trigger)
51  if (part == trigger->substr(0, part_size)) {
52  oOptions.push_back(std::make_pair(std::make_shared<std::string>(*trigger),
53  trigger->substr(part_size, trigger->size() - part_size)));
54  }
55 }
56 
57 //
58 // static member functions
59 //
std::size_t size() const
Definition: TriggerNames.cc:59
void fillOptions(const char *iBegin, const char *iEnd, std::vector< std::pair< std::shared_ptr< std::string >, std::string > > &oOptions) const override
Strings const & triggerNames() const
Definition: TriggerNames.cc:48
std::string m_process
std::vector< std::string > m_triggerNames
const edm::EventBase * getCurrentEvent() const
static FWGUIManager * getGUIManager()
#define fwLog(_level_)
Definition: fwLog.h:45
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:50
part
Definition: HCALResponse.h:20
bool getByLabel(InputTag const &, Handle< T > &) const
Definition: EventBase.h:92