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 #include "FWCore/Utilities/interface/typedefs.h" 00035 00036 // forward declarations 00037 class L1GtfeWord; 00038 class L1GtFdlWord; 00039 class L1GtPsbWord; 00040 00041 class L1MuGMTReadoutCollection; 00042 00043 class FEDHeader; 00044 class FEDTrailer; 00045 00046 class L1MuTriggerScales; 00047 class L1MuTriggerPtScale; 00048 00049 00050 // class declaration 00051 class L1GlobalTriggerRawToDigi : public edm::EDProducer 00052 { 00053 00054 public: 00055 00057 explicit L1GlobalTriggerRawToDigi(const edm::ParameterSet&); 00058 00060 virtual ~L1GlobalTriggerRawToDigi(); 00061 00062 private: 00063 00064 virtual void beginJob(); 00065 00066 virtual void produce(edm::Event&, const edm::EventSetup&); 00067 00069 00071 void unpackHeader(const unsigned char*, FEDHeader&); 00072 00077 void unpackPSB(const edm::EventSetup&, const unsigned char*, L1GtPsbWord&); 00078 00080 void unpackGMT(const unsigned char*, std::auto_ptr<L1MuGMTReadoutCollection>&,edm::Event&); 00081 00083 void unpackTrailer(const unsigned char*, FEDTrailer&); 00084 00085 00087 void produceEmptyProducts(edm::Event&); 00088 00089 00091 void dumpFedRawData(const unsigned char*, int, std::ostream&); 00092 00094 virtual void endJob(); 00095 00096 private: 00097 00098 L1GtfeWord* m_gtfeWord; 00099 L1GtPsbWord* m_gtPsbWord; 00100 L1GtFdlWord* m_gtFdlWord; 00101 00103 edm::InputTag m_daqGtInputTag; 00104 00107 int m_daqGtFedId; 00108 00110 cms_uint16_t m_activeBoardsMaskGt; 00111 00112 // number of bunch crossing to be unpacked 00113 int m_unpackBxInEvent; 00114 00117 int m_lowSkipBxInEvent; 00118 00121 int m_uppSkipBxInEvent; 00122 00124 // 00126 int m_recordLength0; 00127 00129 int m_recordLength1; 00130 00132 int m_totalBxInEvent; 00133 00134 00136 const L1MuTriggerScales* m_TriggerScales; 00137 const L1MuTriggerPtScale* m_TriggerPtScale; 00138 00139 private: 00140 00142 int m_verbosity; 00143 bool m_isDebugEnabled; 00144 00145 00146 }; 00147 00148 #endif // EventFilter_L1GlobalTriggerRawToDigi_L1GlobalTriggerRawToDigi_h