CMS 3D CMS Logo

HLTPathSelector.cc
Go to the documentation of this file.
1 #include <cassert>
2 
7 
8 using namespace std;
9 using namespace edm;
10 
12  : verbose_(ps.getUntrackedParameter<bool>("verbose", false)),
13  processName_(ps.getParameter<std::string>("processName")),
14  hltPathsOfInterest_(ps.getParameter<std::vector<std::string> >("hltPathsOfInterest")),
15  triggerResultsTag_(
16  ps.getUntrackedParameter<edm::InputTag>("triggerResults", edm::InputTag("TriggerResults", "", "HLT"))),
17  triggerEventTag_(
18  ps.getUntrackedParameter<edm::InputTag>("triggerEvent", edm::InputTag("hltTriggerSummaryAOD", "", "HLT"))),
19  triggerResultsToken_(consumes<edm::TriggerResults>(triggerResultsTag_)),
20  triggerEventToken_(consumes<trigger::TriggerEvent>(triggerEventTag_)) {}
21 void HLTPathSelector::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
22  bool changed(true);
23  if (hltConfig_.init(iRun, iSetup, processName_, changed)) {
24  if (changed) {
25  edm::LogInfo("HLTPathSelector") << "HLT initialised";
26  hltConfig_.dump("PrescaleTable");
27  }
28  hltPathsMap_.clear();
29  const unsigned int n(hltConfig_.size());
30  const std::vector<std::string>& pathList = hltConfig_.triggerNames();
31  for (auto path : pathList) {
32  if (!hltPathsOfInterest_.empty()) {
33  int nmatch = 0;
34  for (auto kt : hltPathsOfInterest_)
35  nmatch += TPRegexp(kt).Match(path);
36  if (!nmatch)
37  continue;
38  }
39  const unsigned int triggerIndex(hltConfig_.triggerIndex(path));
40  // abort on invalid trigger name
41  if (triggerIndex >= n) {
42  edm::LogError("HLTPathSelector") << "path: " << path << " - not found!";
43  continue;
44  }
45  hltPathsMap_[path] = triggerIndex;
46  }
47  } else
48  edm::LogError("HLTPathSelector") << " config extraction failure with process name " << processName_;
49 }
51  // get event products
52  edm::Handle<edm::TriggerResults> triggerResultsHandle_;
53  iEvent.getByToken(triggerResultsToken_, triggerResultsHandle_);
54  if (!triggerResultsHandle_.isValid()) {
55  edm::LogError("HLTPathSelector") << "Error in getting TriggerResults product from Event!";
56  return false;
57  }
58 
59  edm::Handle<trigger::TriggerEvent> triggerEventHandle_;
60  iEvent.getByToken(triggerEventToken_, triggerEventHandle_);
61  if (!triggerEventHandle_.isValid()) {
62  edm::LogError("HLTPathSelector") << "Error in getting TriggerEvent product from Event!";
63  return false;
64  }
65  // sanity check
66  assert(triggerResultsHandle_->size() == hltConfig_.size());
67 
68  int flag = 0;
69  for (auto const& it : hltPathsMap_) {
70  const std::string path(it.first);
71  const unsigned int triggerIndex(it.second);
72  assert(triggerIndex == iEvent.triggerNames(*triggerResultsHandle_).triggerIndex(path));
73 
74  // Results from TriggerResults product
75  if (verbose_)
76  edm::LogInfo("HLTPathSelector") << " Trigger path <" << path << "> status:"
77  << " WasRun=" << triggerResultsHandle_->wasrun(triggerIndex)
78  << " Accept=" << triggerResultsHandle_->accept(triggerIndex)
79  << " Error=" << triggerResultsHandle_->error(triggerIndex);
80 
81  if (triggerResultsHandle_->wasrun(triggerIndex) && triggerResultsHandle_->accept(triggerIndex)) {
82  ++flag;
83  if (tmap_.find(path) == tmap_.end())
84  tmap_[path] = 1;
85  else
86  tmap_[path]++;
87  }
88  }
89  if (flag > 0)
90  return true;
91  return false;
92 }
94  edm::LogInfo("HLTPathSelector") << setw(32) << "HLT Path" << setw(9) << "ACCEPT";
95  for (auto const& jt : tmap_)
96  edm::LogInfo("HLTPathSelector") << setw(9) << jt.second;
97 }
98 // Define this as a plug-in
HLTPathSelector::filter
bool filter(edm::Event &, edm::EventSetup const &) override
Definition: HLTPathSelector.cc:50
electrons_cff.bool
bool
Definition: electrons_cff.py:372
HLTPathSelector::triggerEventToken_
const edm::EDGetTokenT< trigger::TriggerEvent > triggerEventToken_
Definition: HLTPathSelector.h:33
MessageLogger.h
funct::false
false
Definition: Factorize.h:34
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
HLTPathSelector::triggerResultsToken_
const edm::EDGetTokenT< edm::TriggerResults > triggerResultsToken_
Definition: HLTPathSelector.h:32
edm::Run
Definition: Run.h:45
edm
HLT enums.
Definition: AlignableModifier.h:19
HLTPathSelector::verbose_
bool verbose_
Definition: HLTPathSelector.h:27
HLTPathSelector::endJob
void endJob()
Definition: HLTPathSelector.cc:93
edm::LogInfo
Definition: MessageLogger.h:254
edm::HLTGlobalStatus::wasrun
bool wasrun() const
Was at least one path run?
Definition: HLTGlobalStatus.h:47
cms::cuda::assert
assert(be >=bs)
edm::HLTGlobalStatus::error
bool error() const
Has any path encountered an error (exception)
Definition: HLTGlobalStatus.h:51
HLTConfigProvider::dump
void dump(const std::string &what) const
Dumping config info to cout.
Definition: HLTConfigProvider.h:43
HLTPathSelector::processName_
std::string processName_
Definition: HLTPathSelector.h:28
edm::Handle< edm::TriggerResults >
HLTPathSelector::hltPathsOfInterest_
const std::vector< std::string > hltPathsOfInterest_
Definition: HLTPathSelector.h:29
MakerMacros.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::HLTGlobalStatus::size
unsigned int size() const
Get number of paths stored.
Definition: HLTGlobalStatus.h:35
HLTPathSelector
Definition: HLTPathSelector.h:16
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
HLTConfigProvider::size
unsigned int size() const
number of trigger paths in trigger table
Definition: HLTConfigProvider.h:62
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
HLTPathSelector::hltPathsMap_
std::map< std::string, unsigned int > hltPathsMap_
Definition: HLTPathSelector.h:37
HLTPathSelector.h
TriggerNames.h
iEvent
int iEvent
Definition: GenABIO.cc:224
HLTPathSelector::HLTPathSelector
HLTPathSelector(const edm::ParameterSet &)
Definition: HLTPathSelector.cc:11
edm::EventSetup
Definition: EventSetup.h:57
HLTConfigProvider::triggerIndex
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
Definition: HLTConfigProvider.h:72
std
Definition: JetResolutionObject.h:76
HLTPathSelector::beginRun
void beginRun(edm::Run const &, edm::EventSetup const &) override
Definition: HLTPathSelector.cc:21
HLTConfigProvider::init
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
Definition: HLTConfigProvider.cc:36
edm::HLTGlobalStatus::accept
bool accept() const
Has at least one path accepted the event?
Definition: HLTGlobalStatus.h:49
trigger
Definition: HLTPrescaleTableCond.h:8
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
HLTConfigProvider::triggerNames
const std::vector< std::string > & triggerNames() const
names of trigger paths
Definition: HLTConfigProvider.h:68
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
HLTPathSelector::hltConfig_
HLTConfigProvider hltConfig_
Definition: HLTPathSelector.h:35
HLTPathSelector::tmap_
std::map< std::string, int > tmap_
Definition: HLTPathSelector.h:38
edm::Event
Definition: Event.h:73
TriggerResultsByName.h
edm::InputTag
Definition: InputTag.h:15
edm::TriggerResults
Definition: TriggerResults.h:35
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
ZCounting_cff.TriggerEvent
TriggerEvent
Definition: ZCounting_cff.py:5