File indexing completed on 2024-04-06 12:03:58
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018 #include "DataFormats/Common/interface/HLTGlobalStatus.h"
0019 #include "DataFormats/Common/interface/TriggerResults.h"
0020 #include "DataFormats/Provenance/interface/ParameterSetID.h"
0021 #include "FWCore/Framework/interface/global/EDProducer.h"
0022 #include "FWCore/Framework/interface/Event.h"
0023 #include "FWCore/Framework/interface/Frameworkfwd.h"
0024 #include "FWCore/Framework/interface/MakerMacros.h"
0025 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0026 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0027 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0028 #include "FWCore/Utilities/interface/EDPutToken.h"
0029
0030 #include <cassert>
0031 #include <memory>
0032 #include <string>
0033 #include <vector>
0034
0035 namespace edmtest {
0036
0037 class TestWriteTriggerResults : public edm::global::EDProducer<> {
0038 public:
0039 TestWriteTriggerResults(edm::ParameterSet const&);
0040 void produce(edm::StreamID, edm::Event&, edm::EventSetup const&) const override;
0041 static void fillDescriptions(edm::ConfigurationDescriptions&);
0042
0043 private:
0044 std::string parameterSetID_;
0045 std::vector<std::string> names_;
0046 std::vector<unsigned int> hltStates_;
0047 std::vector<unsigned int> moduleIndexes_;
0048 edm::EDPutTokenT<edm::TriggerResults> triggerResultsPutToken_;
0049 };
0050
0051 TestWriteTriggerResults::TestWriteTriggerResults(edm::ParameterSet const& iPSet)
0052 : parameterSetID_(iPSet.getParameter<std::string>("parameterSetID")),
0053 names_(iPSet.getParameter<std::vector<std::string>>("names")),
0054 hltStates_(iPSet.getParameter<std::vector<unsigned int>>("hltStates")),
0055 moduleIndexes_(iPSet.getParameter<std::vector<unsigned int>>("moduleIndexes")),
0056 triggerResultsPutToken_(produces()) {}
0057
0058 void TestWriteTriggerResults::produce(edm::StreamID, edm::Event& iEvent, edm::EventSetup const&) const {
0059 edm::HLTGlobalStatus hltGlobalStatus(hltStates_.size());
0060 for (unsigned int i = 0; i < hltStates_.size(); ++i) {
0061 assert(i < moduleIndexes_.size());
0062 hltGlobalStatus[i] = edm::HLTPathStatus(static_cast<edm::hlt::HLTState>(hltStates_[i]), moduleIndexes_[i]);
0063 }
0064 edm::ParameterSetID parameterSetID(parameterSetID_);
0065 std::unique_ptr<edm::TriggerResults> result;
0066 if (names_.empty()) {
0067
0068 result = std::make_unique<edm::TriggerResults>(hltGlobalStatus, parameterSetID);
0069 } else {
0070
0071 result = std::make_unique<edm::TriggerResults>(hltGlobalStatus, names_);
0072 }
0073 iEvent.put(triggerResultsPutToken_, std::move(result));
0074 }
0075
0076 void TestWriteTriggerResults::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0077 edm::ParameterSetDescription desc;
0078 desc.add<std::string>("parameterSetID");
0079 desc.add<std::vector<std::string>>("names");
0080 desc.add<std::vector<unsigned int>>("hltStates");
0081 desc.add<std::vector<unsigned int>>("moduleIndexes");
0082 descriptions.addDefault(desc);
0083 }
0084 }
0085
0086 using edmtest::TestWriteTriggerResults;
0087 DEFINE_FWK_MODULE(TestWriteTriggerResults);