Back to home page

Project CMSSW displayed by LXR

 
 

    


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