00001 #ifndef PFTauVertexSelector_H 00002 #define PFTauVertexSelector_H 00003 00004 #include "FWCore/Framework/interface/Event.h" 00005 #include "FWCore/Framework/interface/MakerMacros.h" 00006 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00007 #include "FWCore/Framework/interface/EDFilter.h" 00008 00009 #include "DataFormats/TauReco/interface/PFTau.h" 00010 #include "DataFormats/VertexReco/interface/Vertex.h" 00011 #include "DataFormats/TrackReco/interface/Track.h" 00012 #include "DataFormats/RecoCandidate/interface/RecoCandidate.h" 00013 #include "DataFormats/Math/interface/Point3D.h" 00014 #include "DataFormats/Math/interface/Error.h" 00015 00016 /* 00017 * class PFTauVertexSelector 00018 * created : January 26 2012, 00019 * revised : Wed Jan 26 11:13:04 PDT 2012 00020 * Authors : Andreas Hinzmann (CERN) 00021 */ 00022 00023 class PFTauVertexSelector : public edm::EDFilter { 00024 public: 00025 explicit PFTauVertexSelector(const edm::ParameterSet& iConfig){ 00026 tauSrc_ = iConfig.getParameter<edm::InputTag>("tauSrc"); 00027 useVertex_ = iConfig.getParameter<bool>("useVertex"); 00028 vertexSrc_ = iConfig.getParameter<edm::InputTag>("vertexSrc"); 00029 useBeamSpot_ = iConfig.getParameter<bool>("useBeamSpot"); 00030 beamSpotSrc_ = iConfig.getParameter<edm::InputTag>("beamSpotSrc"); 00031 useLeadingTrack_ = iConfig.getParameter<bool>("useLeadingTrack"); 00032 trackSrc_ = iConfig.getParameter<std::vector<edm::InputTag> >("trackSrc"); 00033 useLeadingRecoCandidate_ = iConfig.getParameter<bool>("useLeadingRecoCandidate"); 00034 recoCandidateSrc_ = iConfig.getParameter<std::vector<edm::InputTag> >("recoCandidateSrc"); 00035 useTriggerFilterElectrons_ = iConfig.getParameter<bool>("useTriggerFilterElectrons"); 00036 triggerFilterElectronsSrc_ = iConfig.getParameter<edm::InputTag>("triggerFilterElectronsSrc"); 00037 useTriggerFilterMuons_ = iConfig.getParameter<bool>("useTriggerFilterMuons"); 00038 triggerFilterMuonsSrc_ = iConfig.getParameter<edm::InputTag>("triggerFilterMuonsSrc"); 00039 dZ_ = iConfig.getParameter<double>("dZ"); 00040 filterOnNTaus_ = iConfig.getParameter<uint32_t>("filterOnNTaus"); 00041 produces<reco::PFTauCollection>(); 00042 } 00043 ~PFTauVertexSelector(){} 00044 private: 00045 virtual bool filter(edm::Event&, const edm::EventSetup&) override; 00046 edm::InputTag tauSrc_; 00047 bool useVertex_; 00048 edm::InputTag vertexSrc_; 00049 bool useBeamSpot_; 00050 edm::InputTag beamSpotSrc_; 00051 bool useLeadingTrack_; 00052 std::vector<edm::InputTag> trackSrc_; 00053 bool useLeadingRecoCandidate_; 00054 std::vector<edm::InputTag> recoCandidateSrc_; 00055 bool useTriggerFilterElectrons_; 00056 edm::InputTag triggerFilterElectronsSrc_; 00057 bool useTriggerFilterMuons_; 00058 edm::InputTag triggerFilterMuonsSrc_; 00059 double dZ_; 00060 uint32_t filterOnNTaus_; 00061 }; 00062 00063 #endif