CMS 3D CMS Logo

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
24 FWHLTValidator::fillOptions(const char* iBegin, const char* iEnd,
25  std::vector<std::pair<std::shared_ptr<std::string>, std::string> >& oOptions) const
26 {
27  oOptions.clear();
28  std::string part(iBegin,iEnd);
29  part = boost::regex_replace(part,boost::regex(".*?(\\&\\&|\\|\\||\\s)+"),"");
30 
31  if (m_triggerNames.empty()){
32  edm::Handle<edm::TriggerResults> hTriggerResults;
33  edm::TriggerNames const* triggerNames(nullptr);
34  try
35  {
36  edm::InputTag tag("TriggerResults", "", m_process.c_str());
38  event->getByLabel(tag, hTriggerResults);
39  triggerNames = & event->triggerNames(*hTriggerResults);
40  } catch (...){
41  fwLog(fwlog::kWarning) << " no trigger results with process name "<< m_process <<" is available" << std::endl;
42  return;
43  }
44  for(unsigned int i=0; i<triggerNames->size(); ++i)
45  m_triggerNames.push_back(triggerNames->triggerName(i));
46  std::sort(m_triggerNames.begin(),m_triggerNames.end());
47  }
48 
49  //only use add items which begin with the part of the member we are trying to match
50  unsigned int part_size = part.size();
51  for(std::vector<std::string>::const_iterator trigger = m_triggerNames.begin();
52  trigger != m_triggerNames.end(); ++trigger)
53  if(part == trigger->substr(0,part_size) ) {
54  oOptions.push_back(std::make_pair(std::make_shared<std::string>(*trigger),
55  trigger->substr(part_size,trigger->size()-part_size)));
56  }
57 }
58 
59 //
60 // static member functions
61 //
void fillOptions(const char *iBegin, const char *iEnd, std::vector< std::pair< std::shared_ptr< std::string >, std::string > > &oOptions) const override
Strings::size_type size() const
Definition: TriggerNames.cc:31
Strings const & triggerNames() const
Definition: TriggerNames.cc:20
std::string m_process
std::vector< std::string > m_triggerNames
const edm::EventBase * getCurrentEvent() const
static FWGUIManager * getGUIManager()
#define fwLog(_level_)
Definition: fwLog.h:50
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:22
part
Definition: HCALResponse.h:20
bool getByLabel(InputTag const &, Handle< T > &) const
Definition: EventBase.h:92