File indexing completed on 2024-09-07 04:37:22
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #include "FWCore/Framework/interface/global/EDProducer.h"
0015 #include "FWCore/Framework/interface/Event.h"
0016 #include "FWCore/Framework/interface/EventSetup.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018 #include "FWCore/Utilities/interface/InputTag.h"
0019
0020 #include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h"
0021 #include <set>
0022
0023 namespace pat {
0024
0025 class PATTriggerObjectStandAloneSlimmer : public edm::global::EDProducer<> {
0026 public:
0027 explicit PATTriggerObjectStandAloneSlimmer(const edm::ParameterSet& iConfig);
0028 ~PATTriggerObjectStandAloneSlimmer() override {}
0029
0030 private:
0031 void produce(edm::StreamID, edm::Event& iEvent, const edm::EventSetup& iSetup) const override;
0032
0033 const edm::EDGetTokenT<TriggerObjectStandAloneCollection> srcToken_;
0034 const edm::EDGetTokenT<edm::TriggerResults> triggerResultsToken_;
0035
0036 bool packFilterLabels_, packP4_;
0037 };
0038
0039 }
0040
0041 using namespace pat;
0042
0043 PATTriggerObjectStandAloneSlimmer::PATTriggerObjectStandAloneSlimmer(const edm::ParameterSet& iConfig)
0044 : srcToken_(consumes<TriggerObjectStandAloneCollection>(iConfig.getParameter<edm::InputTag>("src"))),
0045 triggerResultsToken_(consumes<edm::TriggerResults>(iConfig.getParameter<edm::InputTag>("triggerResults"))),
0046 packFilterLabels_(iConfig.getParameter<bool>("packFilterLabels")),
0047 packP4_(iConfig.getParameter<bool>("packP4")) {
0048 produces<TriggerObjectStandAloneCollection>();
0049 if (packFilterLabels_) {
0050 produces<std::vector<std::string>>("filterLabels");
0051 }
0052 }
0053
0054 void PATTriggerObjectStandAloneSlimmer::produce(edm::StreamID,
0055 edm::Event& iEvent,
0056 const edm::EventSetup& iSetup) const {
0057 edm::Handle<TriggerObjectStandAloneCollection> src;
0058 iEvent.getByToken(srcToken_, src);
0059 edm::Handle<edm::TriggerResults> triggerResults;
0060 iEvent.getByToken(triggerResultsToken_, triggerResults);
0061
0062 auto slimmed = std::make_unique<TriggerObjectStandAloneCollection>(*src);
0063
0064 if (packFilterLabels_) {
0065 std::set<std::string> allLabels;
0066 for (auto& obj : *slimmed) {
0067 obj.packFilterLabels(iEvent, *triggerResults);
0068 }
0069 }
0070 if (packP4_) {
0071 for (TriggerObjectStandAlone& obj : *slimmed) {
0072 obj.packP4();
0073 }
0074 }
0075 iEvent.put(std::move(slimmed));
0076 }
0077
0078 #include "FWCore/Framework/interface/MakerMacros.h"
0079 DEFINE_FWK_MODULE(PATTriggerObjectStandAloneSlimmer);