![]() |
![]() |
00001 #ifndef CommonTools_PFCandProducer_PFPileUpAlgo_ 00002 #define CommonTools_PFCandProducer_PFPileUpAlgo_ 00003 00004 #include "FWCore/Framework/interface/Frameworkfwd.h" 00005 #include "FWCore/Framework/interface/EDProducer.h" 00006 00007 #include "FWCore/Framework/interface/Event.h" 00008 00009 #include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h" 00010 #include "DataFormats/VertexReco/interface/VertexFwd.h" 00011 00012 class PFPileUpAlgo { 00013 public: 00014 PFPileUpAlgo():checkClosestZVertex_(true), verbose_(false) {;} 00015 00016 PFPileUpAlgo( bool checkClosestZVertex, bool verbose=false): 00017 checkClosestZVertex_(checkClosestZVertex), verbose_(verbose) {;} 00018 00019 ~PFPileUpAlgo(){;} 00020 00021 // the last parameter is needed if you want to use the sourceCandidatePtr 00022 void process(const reco::PFCandidateCollection & pfCandidates, 00023 const reco::VertexCollection & vertices, 00024 const edm::Handle<reco::PFCandidateCollection> * handle=0) ; 00025 00026 inline void setVerbose(bool verbose) { verbose_ = verbose; } 00027 00028 inline void setCheckClosestZVertex(bool val) { checkClosestZVertex_ = val;} 00029 00030 const reco::PFCandidateCollection & getPFCandidatesFromPU() const {return pfCandidatesFromPU_;} 00031 00032 const reco::PFCandidateCollection & getPFCandidatesFromVtx() const {return pfCandidatesFromVtx_;} 00033 00034 int chargedHadronVertex(const reco::VertexCollection& vertices, 00035 const reco::PFCandidate& pfcand ) const; 00036 00037 00038 private : 00039 00041 bool checkClosestZVertex_; 00042 00043 00045 bool verbose_; 00046 00047 reco::PFCandidateCollection pfCandidatesFromVtx_; 00048 reco::PFCandidateCollection pfCandidatesFromPU_; 00049 00050 }; 00051 00052 #endif