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 00049 // --------------------- 00050 // -- Class Interface -- 00051 // --------------------- 00052 00053 class L1MuDTEtaProcessor { 00054 00055 public: 00056 00058 L1MuDTEtaProcessor(const L1MuDTTrackFinder&, int id ); 00059 00061 virtual ~L1MuDTEtaProcessor(); 00062 00064 inline int id() const { return m_epid; } 00065 00067 virtual void run(int bx, const edm::Event& e, const edm::EventSetup& c); 00068 00070 virtual void reset(); 00071 00073 void print() const; 00074 00076 inline const L1MuDTTrackFinder& tf() const { return m_tf; } 00077 00079 inline int eta(int id) const { return m_eta[id]; } 00080 00082 inline bool fineBit(int id) const { return m_fine[id]; } 00083 00084 private: 00085 00087 void receiveData(int bx, const edm::Event& e); 00088 00090 void receiveAddresses(); 00091 00093 void runEtaTrackFinder(const edm::EventSetup& c); 00094 00096 void runEtaMatchingUnit(const edm::EventSetup& c); 00097 00099 void assign(); 00100 00102 static int quality(int id, int stat); 00103 00104 private: 00105 00106 const L1MuDTTrackFinder& m_tf; 00107 int m_epid; 00108 00109 int m_eta[12]; 00110 bool m_fine[12]; 00111 00112 std::vector<int> m_foundPattern; 00113 int m_pattern[12]; 00114 00115 int m_address[12]; 00116 L1MuDTTrack* m_TrackCand[12]; 00117 L1MuDTTrack* m_TracKCand[12]; 00118 std::vector<const L1MuDTTrackSegEta*> m_tseta; 00119 00120 edm::ESHandle< L1MuDTEtaPatternLut > theEtaPatternLUT; // ETF look-up table 00121 edm::ESHandle< L1MuDTQualPatternLut > theQualPatternLUT; // EMU look-up tables 00122 00123 }; 00124 00125 #endif