Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:15

0001 #ifndef RecoMuon_TrackerSeedCleaner_H
0002 #define RecoMuon_TrackerSeedCleaner_H
0003 
0004 /** \class TrackerSeedCleaner
0005  *  Seeds Cleaner based on direction
0006     \author A. Grelli -  Purdue University, Pavia University
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 }  // namespace edm
0034 
0035 //              ---------------------
0036 //              -- Class Interface --
0037 //              ---------------------
0038 
0039 class TrackerSeedCleaner {
0040 public:
0041   typedef std::vector<TrajectorySeed> tkSeeds;
0042   /// constructor
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   ///intizialization
0055   virtual void init(const MuonServiceProxy* service);
0056 
0057   /// destructor
0058   virtual ~TrackerSeedCleaner() {}
0059   /// the cleaner
0060   virtual void clean(const reco::TrackRef&, const RectangularEtaPhiTrackingRegion& region, tkSeeds&);
0061   /// setEvent
0062   virtual void setEvent(const edm::Event&);
0063 
0064 private:
0065   const MuonServiceProxy* theProxyService;
0066   const edm::Event* theEvent;
0067 
0068   edm::InputTag theBeamSpotTag;  //beam spot
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