File indexing completed on 2024-04-06 12:18:25
0001 #include <string>
0002
0003 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Framework/interface/MakerMacros.h"
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0008 #include "HLTrigger/HLTcore/interface/HLTPrescaleProvider.h"
0009
0010 class HLTPrescaleExample : public edm::one::EDAnalyzer<edm::one::WatchRuns> {
0011 public:
0012 HLTPrescaleExample(edm::ParameterSet const& iPSet);
0013
0014 void beginJob() override {}
0015 void beginRun(edm::Run const& iEvent, edm::EventSetup const&) override;
0016 void analyze(edm::Event const& iEvent, edm::EventSetup const&) override;
0017 void endRun(edm::Run const& iEvent, edm::EventSetup const&) override {}
0018 void endJob() override {}
0019
0020 private:
0021 HLTPrescaleProvider hltPSProvider_;
0022 std::string const hltProcess_;
0023 std::string const hltPath_;
0024 };
0025
0026 HLTPrescaleExample::HLTPrescaleExample(edm::ParameterSet const& iPSet)
0027 : hltPSProvider_(iPSet.getParameter<edm::ParameterSet>("hltPSProvCfg"), consumesCollector(), *this),
0028 hltProcess_(iPSet.getParameter<std::string>("hltProcess")),
0029 hltPath_(iPSet.getParameter<std::string>("hltPath")) {}
0030
0031 void HLTPrescaleExample::beginRun(edm::Run const& iRun, edm::EventSetup const& iSetup) {
0032 bool changed = false;
0033 hltPSProvider_.init(iRun, iSetup, hltProcess_, changed);
0034 }
0035
0036 void HLTPrescaleExample::analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) {
0037 auto const hltPSDouble = hltPSProvider_.prescaleValue<double>(iEvent, iSetup, hltPath_);
0038 auto const hltPSFrac = hltPSProvider_.prescaleValue<FractionalPrescale>(iEvent, iSetup, hltPath_);
0039
0040 auto const l1HLTPSDouble = hltPSProvider_.prescaleValues<double>(iEvent, iSetup, hltPath_);
0041 auto const l1HLTPSFrac = hltPSProvider_.prescaleValues<FractionalPrescale>(iEvent, iSetup, hltPath_);
0042 auto const l1HLTPSDoubleFrac = hltPSProvider_.prescaleValues<double, FractionalPrescale>(iEvent, iSetup, hltPath_);
0043
0044 auto const l1HLTDetailPSDouble = hltPSProvider_.prescaleValuesInDetail<double>(iEvent, iSetup, hltPath_);
0045 auto const l1HLTDetailPSFrac = hltPSProvider_.prescaleValuesInDetail<FractionalPrescale>(iEvent, iSetup, hltPath_);
0046
0047 edm::LogPrint log("");
0048
0049 log << "---------Begin Event--------\n";
0050 log << "hltDouble " << hltPSDouble << " hltFrac " << hltPSFrac << "\n";
0051 log << " l1HLTDouble " << l1HLTPSDouble.first << " " << l1HLTPSDouble.second << " l1HLTFrac " << l1HLTPSFrac.first
0052 << " " << l1HLTPSFrac.second << " l1HLTDoubleFrac " << l1HLTPSDoubleFrac.first << " " << l1HLTPSDoubleFrac.second
0053 << "\n";
0054 auto printL1HLTDetail = [&log](const std::string& text, const auto& val) {
0055 log << text;
0056 for (const auto& entry : val.first) {
0057 log << entry.first << ":" << entry.second << " ";
0058 }
0059 log << " HLT : " << val.second << "\n";
0060 };
0061
0062 printL1HLTDetail("l1HLTDetailDouble ", l1HLTDetailPSDouble);
0063 printL1HLTDetail("l1HLTDetailFrac ", l1HLTDetailPSFrac);
0064 log << "---------End Event--------\n\n";
0065 }
0066
0067 DEFINE_FWK_MODULE(HLTPrescaleExample);