Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoMuon_GlobalMuonProducer_GlobalMuonProducer_H
0002 #define RecoMuon_GlobalMuonProducer_GlobalMuonProducer_H
0003 
0004 /**  \class GlobalMuonProducer
0005  * 
0006  *   Global muon reconstructor:
0007  *   reconstructs muons using DT, CSC, RPC and tracker
0008  *   information,<BR>
0009  *   starting from a standalone reonstructed muon.
0010  *
0011  *
0012  *
0013  *   \author  R.Bellan - INFN TO
0014  */
0015 
0016 #include "FWCore/Framework/interface/stream/EDProducer.h"
0017 
0018 // Input and output collection
0019 #include "DataFormats/TrackReco/interface/Track.h"
0020 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0021 
0022 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0023 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0024 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0025 #include "DataFormats/TrackReco/interface/TrackToTrackMap.h"
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 GlobalMuonProducer : public edm::stream::EDProducer<> {
0037 public:
0038   /// constructor with config
0039   GlobalMuonProducer(const edm::ParameterSet&);
0040 
0041   /// destructor
0042   ~GlobalMuonProducer() override;
0043 
0044   /// reconstruct muons
0045   void produce(edm::Event&, const edm::EventSetup&) override;
0046 
0047 private:
0048   edm::InputTag theSTACollectionLabel;
0049   /// STA Tokens
0050   edm::EDGetTokenT<reco::TrackCollection> staMuonsToken;
0051   edm::EDGetTokenT<std::vector<Trajectory> > staMuonsTrajToken;
0052   edm::EDGetTokenT<TrajTrackAssociationCollection> staAssoMapToken;
0053   edm::EDGetTokenT<reco::TrackToTrackMap> updatedStaAssoMapToken;
0054 
0055   std::unique_ptr<MuonTrackFinder> theTrackFinder;
0056 
0057   /// the event setup proxy, it takes care the services update
0058   MuonServiceProxy* theService;
0059 
0060   std::string theAlias;
0061 
0062   void setAlias(std::string alias) {
0063     alias.erase(alias.size() - 1, alias.size());
0064     theAlias = alias;
0065   }
0066 };
0067 
0068 #endif