00001 //------------------------------------------------- 00002 // 00019 // 00020 //-------------------------------------------------- 00021 #ifndef L1MUDT_ETA_PROCESSOR_H 00022 #define L1MUDT_ETA_PROCESSOR_H 00023 00024 //--------------- 00025 // C++ Headers -- 00026 //--------------- 00027 00028 #include <vector> 00029 00030 //---------------------- 00031 // Base Class Headers -- 00032 //---------------------- 00033 00034 //------------------------------------ 00035 // Collaborating Class Declarations -- 00036 //------------------------------------ 00037 00038 #include <DataFormats/Common/interface/Handle.h> 00039 #include <FWCore/Framework/interface/Event.h> 00040 #include <FWCore/Framework/interface/ESHandle.h> 00041 #include <FWCore/Framework/interface/EventSetup.h> 00042 #include "L1Trigger/DTTrackFinder/src/L1MuDTAddressArray.h" 00043 class L1MuDTTrackSegEta; 00044 class L1MuDTTrackFinder; 00045 class L1MuDTTrack; 00046 class L1MuDTEtaPatternLut; 00047 class L1MuDTQualPatternLut; 00048 class L1MuDTTFMasks; 00049 00050 // --------------------- 00051 // -- Class Interface -- 00052 // --------------------- 00053 00054 class L1MuDTEtaProcessor { 00055 00056 public: 00057 00059 L1MuDTEtaProcessor(const L1MuDTTrackFinder&, int id ); 00060 00062 virtual ~L1MuDTEtaProcessor(); 00063 00065 inline int id() const { return m_epid; } 00066 00068 virtual void run(int bx, const edm::Event& e, const edm::EventSetup& c); 00069 00071 virtual void reset(); 00072 00074 void print() const; 00075 00077 inline const L1MuDTTrackFinder& tf() const { return m_tf; } 00078 00080 inline int eta(int id) const { return m_eta[id]; } 00081 00083 inline bool fineBit(int id) const { return m_fine[id]; } 00084 00085 private: 00086 00088 void receiveData(int bx, const edm::Event& e, const edm::EventSetup& c); 00089 00091 void receiveAddresses(); 00092 00094 void runEtaTrackFinder(const edm::EventSetup& c); 00095 00097 void runEtaMatchingUnit(const edm::EventSetup& c); 00098 00100 void assign(); 00101 00103 static int quality(int id, int stat); 00104 00105 private: 00106 00107 const L1MuDTTrackFinder& m_tf; 00108 int m_epid; 00109 00110 int m_mask; 00111 00112 int m_eta[12]; 00113 bool m_fine[12]; 00114 00115 std::vector<int> m_foundPattern; 00116 int m_pattern[12]; 00117 00118 int m_address[12]; 00119 L1MuDTTrack* m_TrackCand[12]; 00120 L1MuDTTrack* m_TracKCand[12]; 00121 std::vector<const L1MuDTTrackSegEta*> m_tseta; 00122 00123 edm::ESHandle< L1MuDTEtaPatternLut > theEtaPatternLUT; // ETF look-up table 00124 edm::ESHandle< L1MuDTQualPatternLut > theQualPatternLUT; // EMU look-up tables 00125 edm::ESHandle< L1MuDTTFMasks > msks; 00126 00127 }; 00128 00129 #endif