Back to home page

Project CMSSW displayed by LXR

 
 

    


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

0001 #ifndef RecoMuon_GlobalMuonProducer_TevMuonProducer_H
0002 #define RecoMuon_GlobalMuonProducer_TevMuonProducer_H
0003 
0004 /**  \class TevMuonProducer
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 #include "FWCore/Framework/interface/FrameworkfwdMostUsed.h"
0018 #include "RecoMuon/GlobalTrackingTools/interface/GlobalMuonRefitter.h"
0019 #include "RecoMuon/TrackingTools/interface/MuonTrackLoader.h"
0020 
0021 #include "DataFormats/TrackReco/interface/Track.h"
0022 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0023 // Input and output collection
0024 
0025 #include "DataFormats/MuonReco/interface/MuonTrackLinks.h"
0026 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0027 #include "TrackingTools/PatternTools/interface/TrajTrackAssociation.h"
0028 #include "DataFormats/TrackReco/interface/TrackToTrackMap.h"
0029 #include "DataFormats/TrackerCommon/interface/TrackerTopology.h"
0030 #include "Geometry/Records/interface/IdealGeometryRecord.h"
0031 #include "DataFormats/Common/interface/ValueMap.h"
0032 
0033 typedef edm::ValueMap<reco::DYTInfo> DYTestimators;
0034 
0035 class MuonTrackFinder;
0036 class MuonServiceProxy;
0037 class TrackerTopologyRcd;
0038 
0039 class TevMuonProducer : public edm::stream::EDProducer<> {
0040 public:
0041   /// constructor with config
0042   TevMuonProducer(const edm::ParameterSet&);
0043 
0044   /// destructor
0045   ~TevMuonProducer() override;
0046 
0047   /// reconstruct muons
0048   void produce(edm::Event&, const edm::EventSetup&) override;
0049 
0050 private:
0051   /// STA Label
0052   edm::InputTag theGLBCollectionLabel;
0053   edm::EDGetTokenT<reco::TrackCollection> glbMuonsToken;
0054   edm::EDGetTokenT<std::vector<Trajectory> > glbMuonsTrajToken;
0055   const edm::ESGetToken<TrackerTopology, TrackerTopologyRcd> tTopoToken;
0056 
0057   /// the event setup proxy, it takes care the services update
0058   std::unique_ptr<MuonServiceProxy> theService;
0059 
0060   std::unique_ptr<GlobalMuonRefitter> theRefitter;
0061 
0062   std::unique_ptr<MuonTrackLoader> theTrackLoader;
0063 
0064   std::string theAlias;
0065   std::vector<std::string> theRefits;
0066   std::vector<int> theRefitIndex;
0067 
0068   void setAlias(std::string alias) {
0069     alias.erase(alias.size() - 1, alias.size());
0070     theAlias = alias;
0071   }
0072 };
0073 
0074 #endif