00001 #ifndef EventFilter_L1GlobalTriggerRawToDigi_L1GTEvmDigiToRaw_h
00002 #define EventFilter_L1GlobalTriggerRawToDigi_L1GTEvmDigiToRaw_h
00003
00020
00021 #include <memory>
00022
00023 #include <boost/cstdint.hpp>
00024
00025
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/ParameterSet/interface/InputTag.h"
00034
00035
00036 class FEDRawDataCollection;
00037
00038 class L1GtfeWord;
00039 class L1GtfeExtWord;
00040 class L1TcsWord;
00041 class L1GtFdlWord;
00042
00043
00044 class L1GTEvmDigiToRaw : public edm::EDProducer
00045 {
00046
00047 public:
00048
00050 explicit L1GTEvmDigiToRaw(const edm::ParameterSet&);
00051
00053 virtual ~L1GTEvmDigiToRaw();
00054
00055 private:
00056
00058 virtual void beginJob(const edm::EventSetup&);
00059
00061 virtual void produce(edm::Event&, const edm::EventSetup&);
00062
00064
00066 void packHeader(unsigned char*, edm::Event&);
00067
00071 void packGTFE(const edm::EventSetup&, unsigned char*, L1GtfeExtWord&,
00072 boost::uint16_t activeBoardsGtValue);
00073
00075 void packTCS(const edm::EventSetup& evSetup, unsigned char* ptrGt,
00076 L1TcsWord& tcsBlock);
00077
00079 void packFDL(const edm::EventSetup&, unsigned char*, L1GtFdlWord&);
00080
00082 void packTrailer(unsigned char*, unsigned char*, int);
00083
00085 virtual void endJob();
00086
00087 private:
00088
00091 int m_evmGtFedId;
00092
00094 edm::InputTag m_evmGtInputTag;
00095
00097 boost::uint16_t m_activeBoardsMaskGt;
00098
00100 int m_totalBxInEvent;
00101
00104 int m_minBxInEvent;
00105
00108 int m_maxBxInEvent;
00109
00111 int m_bstLengthBytes;
00112
00113 private:
00114
00116 int m_verbosity;
00117 bool m_isDebugEnabled;
00118
00119 };
00120
00121 #endif // EventFilter_L1GlobalTriggerRawToDigi_L1GTEvmDigiToRaw_h