CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_1/src/L1Trigger/GlobalMuonTrigger/interface/L1MuGlobalMuonTrigger.h

Go to the documentation of this file.
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