00001 #ifndef PhysicsTools_PFCandProducer_PFPileUp_ 00002 #define PhysicsTools_PFCandProducer_PFPileUp_ 00003 00004 // system include files 00005 #include <memory> 00006 #include <string> 00007 00008 // user include files 00009 #include "FWCore/Framework/interface/Frameworkfwd.h" 00010 #include "FWCore/Framework/interface/EDProducer.h" 00011 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00012 00013 #include "FWCore/Framework/interface/Event.h" 00014 #include "FWCore/Framework/interface/MakerMacros.h" 00015 00016 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h" 00017 #include "DataFormats/VertexReco/interface/VertexFwd.h" 00018 00019 00031 class PFPileUp : public edm::EDProducer { 00032 public: 00033 00034 explicit PFPileUp(const edm::ParameterSet&); 00035 00036 ~PFPileUp(); 00037 00038 virtual void produce(edm::Event&, const edm::EventSetup&); 00039 00040 virtual void beginJob(); 00041 00042 private: 00043 00044 reco::VertexRef 00045 chargedHadronVertex(const edm::Handle<reco::VertexCollection>& vertices, 00046 const reco::PFCandidate& pfcand ) const; 00047 00048 00050 edm::InputTag inputTagPFCandidates_; 00051 00053 edm::InputTag inputTagVertices_; 00054 00056 bool enable_; 00057 00059 bool verbose_; 00060 00062 bool checkClosestZVertex_; 00063 00064 }; 00065 00066 #endif