00001 //------------------------------------------------- 00002 // 00020 // 00021 //-------------------------------------------------- 00022 #ifndef L1MUDT_TRACK_FINDER_H 00023 #define L1MUDT_TRACK_FINDER_H 00024 00025 //--------------- 00026 // C++ Headers -- 00027 //--------------- 00028 00029 #include <vector> 00030 00031 //---------------------- 00032 // Base Class Headers -- 00033 //---------------------- 00034 00035 00036 //------------------------------------ 00037 // Collaborating Class Declarations -- 00038 //------------------------------------ 00039 00040 #include <FWCore/Framework/interface/Event.h> 00041 #include <FWCore/ParameterSet/interface/ParameterSet.h> 00042 class L1MuDTTFConfig; 00043 class L1MuDTSecProcMap; 00044 class L1MuDTSecProcId; 00045 class L1MuDTSectorProcessor; 00046 class L1MuDTEtaProcessor; 00047 class L1MuDTWedgeSorter; 00048 class L1MuDTMuonSorter; 00049 class L1MuDTTrackCand; 00050 class L1MuRegionalCand; 00051 00052 // --------------------- 00053 // -- Class Interface -- 00054 // --------------------- 00055 00056 00057 class L1MuDTTrackFinder { 00058 00059 public: 00060 00062 typedef std::vector<L1MuRegionalCand>::const_iterator TFtracks_const_iter; 00063 typedef std::vector<L1MuRegionalCand>::iterator TFtracks_iter; 00064 00066 L1MuDTTrackFinder(const edm::ParameterSet & ps); 00067 00069 virtual ~L1MuDTTrackFinder(); 00070 00072 void setup(); 00073 00075 void run(const edm::Event& e, const edm::EventSetup& c); 00076 00078 void reset(); 00079 00081 const L1MuDTSectorProcessor* sp(const L1MuDTSecProcId&) const; 00082 00084 inline const L1MuDTEtaProcessor* ep(int id) const { return m_epvec[id]; } 00085 00087 inline const L1MuDTWedgeSorter* ws(int id) const { return m_wsvec[id]; } 00088 00090 inline const L1MuDTMuonSorter* ms() const { return m_ms; } 00091 00093 int numberOfTracks(); 00094 00095 TFtracks_const_iter begin(); 00096 00097 TFtracks_const_iter end(); 00098 00099 void clear(); 00100 00102 int numberOfTracks(int bx); 00103 00105 static L1MuDTTFConfig* config() { return m_config; } 00106 00107 std::vector<L1MuDTTrackCand>& getcache0() { return _cache0; } 00108 00109 std::vector<L1MuRegionalCand>& getcache() { return _cache; } 00110 00111 private: 00112 00114 virtual void reconstruct(const edm::Event& e, const edm::EventSetup& c) { reset(); run(e,c); } 00115 00116 private: 00117 00118 std::vector<L1MuDTTrackCand> _cache0; 00119 std::vector<L1MuRegionalCand> _cache; 00120 L1MuDTSecProcMap* m_spmap; 00121 std::vector<L1MuDTEtaProcessor*> m_epvec; 00122 std::vector<L1MuDTWedgeSorter*> m_wsvec; 00123 L1MuDTMuonSorter* m_ms; 00124 00125 static L1MuDTTFConfig* m_config; 00126 00127 }; 00128 00129 #endif