File indexing completed on 2024-12-25 02:13:47
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 "DataFormats/BeamSpot/interface/BeamSpot.h"
0022 #include "FWCore/Framework/interface/ConsumesCollector.h"
0023
0024 class MuonServiceProxy;
0025 class TSGFromL2Muon;
0026 class MuonTrackingRegionBuilder;
0027
0028 namespace edm {
0029 class ParameterSet;
0030 class Event;
0031 class EventSetup;
0032 }
0033
0034
0035
0036
0037
0038 class TrackerSeedCleaner {
0039 public:
0040 typedef std::vector<TrajectorySeed> tkSeeds;
0041
0042 TrackerSeedCleaner(const edm::ParameterSet& pset, edm::ConsumesCollector& iC)
0043 : theProxyService(nullptr), theEvent(nullptr) {
0044 builderName_ = pset.getParameter<std::string>("TTRHBuilder");
0045 theBeamSpotTag = pset.getParameter<edm::InputTag>("beamSpot");
0046 useDirection_Cleaner = pset.getParameter<bool>("directionCleaner");
0047 usePt_Cleaner = pset.getParameter<bool>("ptCleaner");
0048 cleanBySharedHits = pset.getParameter<bool>("cleanerFromSharedHits");
0049 beamspotToken_ = iC.consumes<reco::BeamSpot>(theBeamSpotTag);
0050 theTTRHBuilderToken = iC.esConsumes(edm::ESInputTag("", builderName_));
0051 }
0052
0053
0054 virtual void init(const MuonServiceProxy* service);
0055
0056
0057 virtual ~TrackerSeedCleaner() {}
0058
0059 virtual void clean(const reco::TrackRef&, const RectangularEtaPhiTrackingRegion& region, tkSeeds&);
0060
0061 virtual void setEvent(const edm::Event&);
0062
0063 tkSeeds nonRedundantSeeds(tkSeeds const&) const;
0064
0065 private:
0066 bool seedIsNotRedundant(std::vector<TrajectorySeed> const& seeds,
0067 TrajectorySeed const& s1,
0068 std::vector<uint> const& tripletsIdx) const;
0069
0070 const MuonServiceProxy* theProxyService;
0071 const edm::Event* theEvent;
0072
0073 edm::InputTag theBeamSpotTag;
0074 edm::Handle<reco::BeamSpot> bsHandle_;
0075 edm::EDGetTokenT<reco::BeamSpot> beamspotToken_;
0076
0077 std::string builderName_;
0078 edm::ESHandle<TransientTrackingRecHitBuilder> theTTRHBuilder;
0079 edm::ESGetToken<TransientTrackingRecHitBuilder, TransientRecHitRecord> theTTRHBuilderToken;
0080 bool useDirection_Cleaner, usePt_Cleaner, cleanBySharedHits;
0081 };
0082
0083 #endif