File indexing completed on 2025-01-08 03:36:27
0001 #include "DataFormats/Common/interface/View.h"
0002 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
0003 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Framework/interface/Frameworkfwd.h"
0006 #include "FWCore/Framework/interface/MakerMacros.h"
0007 #include "FWCore/Framework/interface/stream/EDProducer.h"
0008 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0011 #include "fastjet/tools/GridMedianBackgroundEstimator.hh"
0012
0013 class FixedGridRhoProducerFastjet : public edm::stream::EDProducer<> {
0014 public:
0015 explicit FixedGridRhoProducerFastjet(const edm::ParameterSet& iConfig);
0016 ~FixedGridRhoProducerFastjet() override = default;
0017 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0018
0019 private:
0020 void produce(edm::Event&, const edm::EventSetup&) override;
0021
0022 fastjet::GridMedianBackgroundEstimator bge_;
0023 const edm::InputTag pfCandidatesTag_;
0024 const edm::EDGetTokenT<edm::View<reco::Candidate> > input_pfcoll_token_;
0025 };
0026
0027 using namespace std;
0028
0029 FixedGridRhoProducerFastjet::FixedGridRhoProducerFastjet(const edm::ParameterSet& iConfig)
0030 : bge_(iConfig.getParameter<double>("maxRapidity"), iConfig.getParameter<double>("gridSpacing")),
0031 pfCandidatesTag_{iConfig.getParameter<edm::InputTag>("pfCandidatesTag")},
0032 input_pfcoll_token_{consumes<edm::View<reco::Candidate> >(pfCandidatesTag_)} {
0033 produces<double>();
0034 }
0035
0036 void FixedGridRhoProducerFastjet::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
0037 edm::Handle<edm::View<reco::Candidate> > pfColl;
0038 iEvent.getByToken(input_pfcoll_token_, pfColl);
0039 std::vector<fastjet::PseudoJet> inputs;
0040 for (edm::View<reco::Candidate>::const_iterator ibegin = pfColl->begin(), iend = pfColl->end(), i = ibegin; i != iend;
0041 ++i) {
0042 inputs.push_back(fastjet::PseudoJet(i->px(), i->py(), i->pz(), i->energy()));
0043 }
0044 bge_.set_particles(inputs);
0045 iEvent.put(std::make_unique<double>(bge_.rho()));
0046 }
0047
0048 void FixedGridRhoProducerFastjet::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0049 edm::ParameterSetDescription desc;
0050 desc.add<double>("maxRapidity", 5.0);
0051 desc.add<double>("gridSpacing", 0.55);
0052 desc.add<edm::InputTag>("pfCandidatesTag", edm::InputTag(""));
0053 descriptions.add("default_FixedGridRhoProducerFastjet", desc);
0054 }
0055
0056 DEFINE_FWK_MODULE(FixedGridRhoProducerFastjet);