Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoMuon_L3MuonProducer_L3MuonProducer_H
0002 #define RecoMuon_L3MuonProducer_L3MuonProducer_H
0003 
0004 /**  \class L3MuonProducer
0005  * 
0006  *   L3 muon reconstructor:
0007  *   reconstructs muons using DT, CSC, RPC and tracker
0008  *   information,<BR>
0009  *   starting from a L2 reonstructed muon.
0010  *
0011  *   \author  A. Everett - Purdue University
0012  */
0013 
0014 #include "FWCore/Framework/interface/stream/EDProducer.h"
0015 
0016 // Input and output collection
0017 #include "DataFormats/TrackReco/interface/Track.h"
0018 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0019 #include "DataFormats/TrackReco/interface/TrackToTrackMap.h"
0020 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0021 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0022 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0023 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0024 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0025 #include <memory>
0026 
0027 namespace edm {
0028   class ParameterSet;
0029   class Event;
0030   class EventSetup;
0031 }  // namespace edm
0032 
0033 class MuonTrackFinder;
0034 class MuonServiceProxy;
0035 
0036 class L3MuonProducer : public edm::stream::EDProducer<> {
0037 public:
0038   /// constructor with config
0039   L3MuonProducer(const edm::ParameterSet&);
0040 
0041   /// destructor
0042   ~L3MuonProducer() override;
0043 
0044   /// reconstruct muons
0045   void produce(edm::Event&, const edm::EventSetup&) override;
0046   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0047 
0048 private:
0049   /// Seed STA Label
0050   edm::InputTag theL2CollectionLabel;
0051 
0052   /// Label for L2SeededTracks
0053   std::string theL2SeededTkLabel;
0054 
0055   edm::EDGetTokenT<reco::TrackCollection> l2MuonToken_;
0056   edm::EDGetTokenT<std::vector<Trajectory> > l2MuonTrajToken_;
0057   edm::EDGetTokenT<TrajTrackAssociationCollection> l2AssoMapToken_;
0058   edm::EDGetTokenT<reco::TrackToTrackMap> updatedL2AssoMapToken_;
0059 
0060   std::unique_ptr<MuonTrackFinder> theTrackFinder;
0061 
0062   /// the event setup proxy, it takes care the services update
0063   std::unique_ptr<MuonServiceProxy> theService;
0064 };
0065 
0066 #endif