Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-12-25 02:13:47

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 "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 }  // namespace edm
0033 
0034 //              ---------------------
0035 //              -- Class Interface --
0036 //              ---------------------
0037 
0038 class TrackerSeedCleaner {
0039 public:
0040   typedef std::vector<TrajectorySeed> tkSeeds;
0041   /// constructor
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   ///intizialization
0054   virtual void init(const MuonServiceProxy* service);
0055 
0056   /// destructor
0057   virtual ~TrackerSeedCleaner() {}
0058   /// the cleaner
0059   virtual void clean(const reco::TrackRef&, const RectangularEtaPhiTrackingRegion& region, tkSeeds&);
0060   /// setEvent
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;  //beam spot
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