File indexing completed on 2024-04-06 12:18:23
0001 #ifndef HLTrigReport_h
0002 #define HLTrigReport_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015 #include <string>
0016 #include <vector>
0017
0018 #include "DataFormats/Common/interface/TriggerResults.h"
0019 #include "FWCore/Common/interface/TriggerNames.h"
0020 #include "FWCore/Framework/interface/Event.h"
0021 #include "FWCore/Framework/interface/one/EDAnalyzer.h"
0022 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0023 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0025 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
0026
0027
0028
0029
0030
0031 namespace hltrigreport {
0032 struct Accumulate {
0033 Accumulate();
0034 Accumulate(size_t numHLNames,
0035 std::vector<std::vector<unsigned int>> const& hlIndex,
0036 std::vector<std::vector<unsigned int>> const& dsIndex);
0037
0038 unsigned int nEvents_;
0039 unsigned int nWasRun_;
0040 unsigned int nAccept_;
0041 unsigned int nErrors_;
0042
0043 std::vector<unsigned int> hlWasRun_;
0044 std::vector<unsigned int> hltL1s_;
0045 std::vector<unsigned int> hltPre_;
0046 std::vector<unsigned int> hlAccept_;
0047 std::vector<unsigned int> hlAccTot_;
0048 std::vector<unsigned int> hlErrors_;
0049
0050 std::vector<std::vector<unsigned int>>
0051 hlAccTotDS_;
0052 std::vector<unsigned int> hlAllTotDS_;
0053 std::vector<std::vector<unsigned int>>
0054 dsAccTotS_;
0055 std::vector<unsigned int> dsAllTotS_;
0056
0057 void accumulate(Accumulate const&);
0058 void reset();
0059 };
0060
0061 }
0062
0063 class HLTrigReport
0064 : public edm::one::EDAnalyzer<edm::one::WatchRuns, edm::LuminosityBlockCache<hltrigreport::Accumulate>> {
0065 private:
0066 enum ReportEvery { NEVER = 0, EVERY_EVENT = 1, EVERY_LUMI = 2, EVERY_RUN = 3, EVERY_JOB = 4 };
0067
0068 public:
0069 using Accumulate = hltrigreport::Accumulate;
0070
0071 explicit HLTrigReport(const edm::ParameterSet&);
0072 ~HLTrigReport() override;
0073 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0074
0075 static ReportEvery decode(const std::string& value);
0076
0077 void beginJob() override;
0078 void endJob() override;
0079
0080 void beginRun(edm::Run const&, edm::EventSetup const&) override;
0081 void endRun(edm::Run const&, edm::EventSetup const&) override;
0082
0083 std::shared_ptr<Accumulate> globalBeginLuminosityBlock(edm::LuminosityBlock const&,
0084 edm::EventSetup const&) const override;
0085 void globalEndLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
0086
0087 void analyze(const edm::Event&, const edm::EventSetup&) override;
0088
0089
0090 const std::vector<std::string>& streamNames() const;
0091 const std::vector<std::string>& datasetNames() const;
0092
0093 private:
0094 void reset();
0095
0096 hltrigreport::Accumulate& chooseAccumulate(edm::LuminosityBlockIndex index) {
0097 if (useLumiCache()) {
0098 return *luminosityBlockCache(index);
0099 }
0100 return accumulate_;
0101 }
0102 bool useLumiCache() const { return reportBy_ == EVERY_LUMI or serviceBy_ == EVERY_LUMI or resetBy_ == EVERY_LUMI; }
0103 bool readAfterLumi() const {
0104 return (reportBy_ == EVERY_RUN or reportBy_ == EVERY_JOB or serviceBy_ == EVERY_RUN or serviceBy_ == EVERY_JOB);
0105 }
0106
0107 void updateConfigCache();
0108
0109 void dumpReport(hltrigreport::Accumulate const& accumulate, std::string const& header = std::string()) const;
0110 void updateService(Accumulate const& accumulate) const;
0111
0112 const edm::InputTag hlTriggerResults_;
0113 const edm::EDGetTokenT<edm::TriggerResults> hlTriggerResultsToken_;
0114 bool configured_;
0115
0116 std::vector<std::string> hlNames_;
0117
0118 std::vector<std::vector<unsigned int>>
0119 hlIndex_;
0120
0121 std::vector<int> posL1s_;
0122 std::vector<int> posPre_;
0123
0124 std::vector<std::string> datasetNames_;
0125 std::vector<std::vector<std::string>> datasetContents_;
0126 bool isCustomDatasets_;
0127 std::vector<std::vector<unsigned int>>
0128 dsIndex_;
0129 std::vector<std::string> streamNames_;
0130 std::vector<std::vector<std::string>> streamContents_;
0131 bool isCustomStreams_;
0132 std::string refPath_;
0133 unsigned int refIndex_;
0134 const double refRate_;
0135
0136 const ReportEvery reportBy_;
0137 const ReportEvery resetBy_;
0138 const ReportEvery serviceBy_;
0139 HLTConfigProvider hltConfig_;
0140
0141 hltrigreport::Accumulate accumulate_;
0142 };
0143
0144 #endif