Back to home page

Project CMSSW displayed by LXR

 
 

    


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);