File indexing completed on 2023-03-17 11:20:52
0001 #ifndef RecoMuon_TrackerSeedCleaner_H
0002 #define RecoMuon_TrackerSeedCleaner_H
0003
0004
0005
0006
0007
0008
0009 #include "DataFormats/Common/interface/Handle.h"
0010 #include "FWCore/Framework/interface/ESHandle.h"
0011
0012 #include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h"
0013 #include "DataFormats/TrackReco/interface/Track.h"
0014 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0015 #include "FWCore/Utilities/interface/InputTag.h"
0016 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0017 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHitBuilder.h"
0018 #include "RecoTracker/TransientTrackingRecHit/interface/TkTransientTrackingRecHitBuilder.h"
0019 #include "TrackingTools/Records/interface/TransientRecHitRecord.h"
0020 #include "RecoTracker/TkTrackingRegions/interface/RectangularEtaPhiTrackingRegion.h"
0021 #include "RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h"
0022 #include "DataFormats/BeamSpot/interface/BeamSpot.h"
0023 #include "FWCore/Framework/interface/ConsumesCollector.h"
0024
0025 class MuonServiceProxy;
0026 class TSGFromL2Muon;
0027 class MuonTrackingRegionBuilder;
0028
0029 namespace edm {
0030 class ParameterSet;
0031 class Event;
0032 class EventSetup;
0033 }
0034
0035
0036
0037
0038
0039 class TrackerSeedCleaner {
0040 public:
0041 typedef std::vector<TrajectorySeed> tkSeeds;
0042
0043 TrackerSeedCleaner(const edm::ParameterSet& pset, edm::ConsumesCollector& iC)
0044 : theProxyService(nullptr), theEvent(nullptr) {
0045 builderName_ = pset.getParameter<std::string>("TTRHBuilder");
0046 theBeamSpotTag = pset.getParameter<edm::InputTag>("beamSpot");
0047 useDirection_Cleaner = pset.getParameter<bool>("directionCleaner");
0048 usePt_Cleaner = pset.getParameter<bool>("ptCleaner");
0049 cleanBySharedHits = pset.getParameter<bool>("cleanerFromSharedHits");
0050 beamspotToken_ = iC.consumes<reco::BeamSpot>(theBeamSpotTag);
0051 theTTRHBuilderToken = iC.esConsumes(edm::ESInputTag("", builderName_));
0052 }
0053
0054
0055 virtual void init(const MuonServiceProxy* service);
0056
0057
0058 virtual ~TrackerSeedCleaner() {}
0059
0060 virtual void clean(const reco::TrackRef&, const RectangularEtaPhiTrackingRegion& region, tkSeeds&);
0061
0062 virtual void setEvent(const edm::Event&);
0063
0064 private:
0065 const MuonServiceProxy* theProxyService;
0066 const edm::Event* theEvent;
0067
0068 edm::InputTag theBeamSpotTag;
0069 edm::Handle<reco::BeamSpot> bsHandle_;
0070 edm::EDGetTokenT<reco::BeamSpot> beamspotToken_;
0071 RedundantSeedCleaner* theRedundantCleaner;
0072
0073 std::string builderName_;
0074 edm::ESHandle<TransientTrackingRecHitBuilder> theTTRHBuilder;
0075 edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> theTTRHBuilderToken;
0076 bool useDirection_Cleaner, usePt_Cleaner, cleanBySharedHits;
0077 };
0078
0079 #endif