00001 //--------------------------------------------- 00002 // 00003 // \class L1MuGlobalMuonTrigger 00004 // 00005 // Description: L1 Global Muon Trigger 00006 // 00007 // 00008 // $Date: 2010/02/12 12:07:37 $ 00009 // $Revision: 1.7 $ 00010 // 00011 // Author : 00012 // Ivan Mikulec HEPHY Vienna 00013 // 00014 //-------------------------------------------------- 00015 #ifndef L1TriggerGlobalMuonTrigger_L1MuGlobalMuonTrigger_h 00016 #define L1TriggerGlobalMuonTrigger_L1MuGlobalMuonTrigger_h 00017 00018 //--------------- 00019 // C++ Headers -- 00020 //--------------- 00021 00022 //---------------------- 00023 // Base Class Headers -- 00024 //---------------------- 00025 #include "FWCore/Framework/interface/EDProducer.h" 00026 00027 //------------------------------------ 00028 // Collaborating Class Declarations -- 00029 //------------------------------------ 00030 #include "FWCore/Framework/interface/Event.h" 00031 #include "DataFormats/Common/interface/Handle.h" 00032 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00033 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuRegionalCand.h" 00034 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutRecord.h" 00035 #include "DataFormats/L1GlobalMuonTrigger/interface/L1MuGMTReadoutCollection.h" 00036 00037 class L1MuGMTConfig; 00038 class L1MuGMTPSB; 00039 class L1MuGMTMatcher; 00040 class L1MuGMTCancelOutUnit; 00041 class L1MuGMTMipIsoAU; 00042 class L1MuGMTMerger; 00043 class L1MuGMTSorter; 00044 00045 class L1MuGMTExtendedCand; 00046 00047 class L1MuGMTDebugBlock; 00048 00049 //--------------------- 00050 //-- Class Interface -- 00051 //--------------------- 00052 class L1MuGlobalMuonTrigger : public edm::EDProducer { 00053 00054 public: 00055 00056 explicit L1MuGlobalMuonTrigger(const edm::ParameterSet&); 00057 ~L1MuGlobalMuonTrigger(); 00058 virtual void beginJob(); 00059 00060 virtual void produce(edm::Event&, const edm::EventSetup&); 00061 00062 void reset(); 00063 00065 inline const L1MuGMTPSB* Data() const { return m_PSB; } 00066 00068 inline const L1MuGMTMatcher* Matcher(int id) const { return m_Matcher[id]; } 00069 00071 inline const L1MuGMTCancelOutUnit* CancelOutUnit(int id) const { return m_CancelOutUnit[id]; } 00072 00074 inline const L1MuGMTMipIsoAU* MipIsoAU(int id) const { return m_MipIsoAU[id]; } 00075 00077 inline const L1MuGMTMerger* Merger(int id) const { return m_Merger[id]; } 00078 00080 inline const L1MuGMTSorter* Sorter() const { return m_Sorter; } 00081 00082 00086 std::auto_ptr<L1MuGMTReadoutCollection> getReadoutCollection(); 00087 00089 L1MuGMTReadoutRecord* currentReadoutRecord () const { return m_ReadoutRingbuffer.back(); }; 00090 00091 00093 L1MuGMTDebugBlock* DebugBlockForFill() const { return m_db; }; 00094 00095 private: 00096 00097 L1MuGMTPSB* m_PSB; 00098 L1MuGMTMatcher* m_Matcher[2]; 00099 L1MuGMTCancelOutUnit* m_CancelOutUnit[4]; 00100 L1MuGMTMipIsoAU* m_MipIsoAU[2]; 00101 L1MuGMTMerger* m_Merger[2]; 00102 L1MuGMTSorter* m_Sorter; 00103 00104 std::vector<L1MuGMTExtendedCand> m_ExtendedCands; 00105 std::vector<L1MuGMTReadoutRecord*> m_ReadoutRingbuffer; 00106 00107 bool m_writeLUTsAndRegs; 00108 bool m_sendMipIso; 00109 00110 static L1MuGMTConfig* m_config; 00111 00112 static L1MuGMTDebugBlock* m_db; 00113 00114 unsigned long long m_L1MuGMTScalesCacheID; 00115 unsigned long long m_L1MuTriggerScalesCacheID; 00116 unsigned long long m_L1MuTriggerPtScaleCacheID; 00117 unsigned long long m_L1MuGMTParametersCacheID; 00118 unsigned long long m_L1MuGMTChannelMaskCacheID; 00119 unsigned long long m_L1CaloGeometryCacheID; 00120 }; 00121 00122 #endif // L1TriggerGlobalMuonTrigger_L1MuGlobalMuonTrigger_h