00001 #ifndef RecoMuon_TrackerSeedCleaner_H 00002 #define RecoMuon_TrackerSeedCleaner_H 00003 00011 #include "DataFormats/Common/interface/Handle.h" 00012 #include "FWCore/Framework/interface/ESHandle.h" 00013 00014 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" 00015 #include "DataFormats/TrackReco/interface/Track.h" 00016 #include "DataFormats/TrackReco/interface/TrackFwd.h" 00017 #include "FWCore/Utilities/interface/InputTag.h" 00018 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00019 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h" 00020 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h" 00021 #include "RecoTracker/TkTrackingRegions/interface/RectangularEtaPhiTrackingRegion.h" 00022 #include "RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h" 00023 #include "DataFormats/BeamSpot/interface/BeamSpot.h" 00024 00025 class MuonServiceProxy; 00026 class TSGFromL2Muon; 00027 class MuonTrackingRegionBuilder; 00028 00029 namespace edm {class ParameterSet; class Event; class EventSetup;} 00030 00031 // --------------------- 00032 // -- Class Interface -- 00033 // --------------------- 00034 00035 class TrackerSeedCleaner{ 00036 00037 public: 00038 00039 typedef std::vector<TrajectorySeed> tkSeeds; 00041 TrackerSeedCleaner(const edm::ParameterSet& pset) : theProxyService(0),theEvent(0) { 00042 builderName_ = pset.getParameter<std::string>("TTRHBuilder"); 00043 theBeamSpotTag = pset.getParameter<edm::InputTag>("beamSpot"); 00044 useDirection_Cleaner = pset.getParameter<bool>("directionCleaner"); 00045 usePt_Cleaner = pset.getParameter<bool>("ptCleaner"); 00046 cleanBySharedHits = pset.getParameter<bool>("cleanerFromSharedHits"); 00047 } 00048 00050 virtual void init(const MuonServiceProxy *service); 00051 00053 virtual ~TrackerSeedCleaner() {} 00055 virtual void clean(const reco::TrackRef& , const RectangularEtaPhiTrackingRegion& region, tkSeeds&); 00057 virtual void setEvent(const edm::Event&); 00058 00059 private: 00060 00061 const MuonServiceProxy * theProxyService; 00062 const edm::Event * theEvent; 00063 00064 edm::InputTag theBeamSpotTag; //beam spot 00065 edm::Handle<reco::BeamSpot> bsHandle_; 00066 00067 RedundantSeedCleaner * theRedundantCleaner; 00068 00069 std::string builderName_; 00070 edm::ESHandle<TransientTrackingRecHitBuilder> theTTRHBuilder; 00071 bool useDirection_Cleaner,usePt_Cleaner,cleanBySharedHits; 00072 }; 00073 00074 #endif 00075