00001 #ifndef EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h 00002 #define EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h 00003 00021 // system include files 00022 #include <memory> 00023 #include <iostream> 00024 00025 // user include files 00026 #include "FWCore/Framework/interface/Frameworkfwd.h" 00027 #include "FWCore/Framework/interface/EDProducer.h" 00028 00029 #include "FWCore/Framework/interface/Event.h" 00030 #include "FWCore/Framework/interface/MakerMacros.h" 00031 00032 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00033 #include "FWCore/Utilities/interface/InputTag.h" 00034 00035 // forward declarations 00036 class L1GtfeWord; 00037 class L1GtFdlWord; 00038 class L1GtPsbWord; 00039 00040 class L1MuGMTReadoutCollection; 00041 00042 class FEDHeader; 00043 class FEDTrailer; 00044 00045 class L1MuTriggerScales; 00046 class L1MuTriggerPtScale; 00047 00048 00049 // class declaration 00050 class L1GlobalTriggerRawToDigi : public edm::EDProducer 00051 { 00052 00053 public: 00054 00056 explicit L1GlobalTriggerRawToDigi(const edm::ParameterSet&); 00057 00059 virtual ~L1GlobalTriggerRawToDigi(); 00060 00061 private: 00062 00063 virtual void beginJob(); 00064 00065 virtual void produce(edm::Event&, const edm::EventSetup&); 00066 00068 00070 void unpackHeader(const unsigned char*, FEDHeader&); 00071 00076 void unpackPSB(const edm::EventSetup&, const unsigned char*, L1GtPsbWord&); 00077 00079 void unpackGMT(const unsigned char*, std::auto_ptr<L1MuGMTReadoutCollection>&,edm::Event&); 00080 00082 void unpackTrailer(const unsigned char*, FEDTrailer&); 00083 00084 00086 void produceEmptyProducts(edm::Event&); 00087 00088 00090 void dumpFedRawData(const unsigned char*, int, std::ostream&); 00091 00093 virtual void endJob(); 00094 00095 private: 00096 00097 L1GtfeWord* m_gtfeWord; 00098 L1GtPsbWord* m_gtPsbWord; 00099 L1GtFdlWord* m_gtFdlWord; 00100 00102 edm::InputTag m_daqGtInputTag; 00103 00106 int m_daqGtFedId; 00107 00109 boost::uint16_t m_activeBoardsMaskGt; 00110 00111 // number of bunch crossing to be unpacked 00112 int m_unpackBxInEvent; 00113 00116 int m_lowSkipBxInEvent; 00117 00120 int m_uppSkipBxInEvent; 00121 00123 // 00125 int m_recordLength0; 00126 00128 int m_recordLength1; 00129 00131 int m_totalBxInEvent; 00132 00133 00135 const L1MuTriggerScales* m_TriggerScales; 00136 const L1MuTriggerPtScale* m_TriggerPtScale; 00137 00138 private: 00139 00141 int m_verbosity; 00142 bool m_isDebugEnabled; 00143 00144 00145 }; 00146 00147 #endif // EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h