Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:58

0001 #ifndef RecoMuon_L3TrackFinder_L3MuonTrajectoryBuilder_H
0002 #define RecoMuon_L3TrackFinder_L3MuonTrajectoryBuilder_H
0003 
0004 /** \class L3MuonTrajectoryBuilder
0005  *  class to build muon trajectory
0006  *
0007  *  \author N. Neumeister   Purdue University
0008  *  \author C. Liu          Purdue University
0009  *  \author A. Everett      Purdue University
0010  */
0011 
0012 #include "DataFormats/TrackCandidate/interface/TrackCandidateCollection.h"
0013 #include "RecoMuon/GlobalTrackingTools/interface/GlobalTrajectoryBuilderBase.h"
0014 #include "TrackingTools/PatternTools/interface/TrajectoryBuilder.h"
0015 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0016 #include "TrackingTools/DetLayers/interface/NavigationSchool.h"
0017 #include "FWCore/Framework/interface/ConsumesCollector.h"
0018 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0019 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0020 
0021 #include "DataFormats/TrackReco/interface/Track.h"
0022 #include "DataFormats/VertexReco/interface/Vertex.h"
0023 #include "DataFormats/VertexReco/interface/VertexFwd.h"
0024 
0025 #include <memory>
0026 
0027 namespace edm {
0028   class ParameterSet;
0029   class Event;
0030   class EventSetup;
0031 }  // namespace edm
0032 
0033 class MuonServiceProxy;
0034 class Trajectory;
0035 class TrajectoryCleaner;
0036 
0037 class L3MuonTrajectoryBuilder : public GlobalTrajectoryBuilderBase {
0038 public:
0039   /// Constructor with Parameter Set and MuonServiceProxy
0040   L3MuonTrajectoryBuilder(const edm::ParameterSet&, const MuonServiceProxy*, edm::ConsumesCollector&);
0041 
0042   /// Destructor
0043   ~L3MuonTrajectoryBuilder() override;
0044 
0045   /// Reconstruct trajectories from standalone and tracker only Tracks
0046   using GlobalTrajectoryBuilderBase::trajectories;
0047   MuonTrajectoryBuilder::CandidateContainer trajectories(const TrackCand&) override;
0048 
0049   /// Pass the Event to the algo at each event
0050   void setEvent(const edm::Event&) override;
0051 
0052   /// Add default values for fillDescriptions
0053   static void fillDescriptions(edm::ParameterSetDescription& descriptions);
0054 
0055 private:
0056   /// Make a TrackCand collection using tracker Track, Trajectory information
0057   std::vector<TrackCand> makeTkCandCollection(const TrackCand&) override;
0058 
0059   std::unique_ptr<TrajectoryCleaner> theTrajectoryCleaner;
0060   edm::InputTag theTkCollName;
0061   edm::Handle<reco::TrackCollection> allTrackerTracks;
0062   reco::BeamSpot beamSpot;
0063   edm::Handle<reco::BeamSpot> beamSpotHandle;
0064   edm::InputTag theBeamSpotInputTag;
0065   reco::Vertex vtx;
0066   edm::Handle<reco::VertexCollection> pvHandle;
0067   edm::InputTag theVertexCollInputTag;
0068   bool theUseVertex;
0069   double theMaxChi2;
0070   double theDXYBeamSpot;
0071   edm::EDGetTokenT<reco::TrackCollection> theTrackToken;
0072 };
0073 #endif