00001 #ifndef EventFilter_L1GlobalTriggerRawToDigi_L1GTDigiToRaw_h
00002 #define EventFilter_L1GlobalTriggerRawToDigi_L1GTDigiToRaw_h
00003
00021
00022 #include <memory>
00023
00024 #include <boost/cstdint.hpp>
00025
00026
00027 #include "FWCore/Framework/interface/Frameworkfwd.h"
00028 #include "FWCore/Framework/interface/EDProducer.h"
00029
00030 #include "FWCore/Framework/interface/Event.h"
00031 #include "FWCore/Framework/interface/MakerMacros.h"
00032
00033 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00034 #include "FWCore/ParameterSet/interface/InputTag.h"
00035
00036
00037 class FEDRawDataCollection;
00038 class L1MuGMTReadoutRecord;
00039 class L1MuGMTReadoutCollection;
00040
00041 class L1GtfeWord;
00042 class L1GtFdlWord;
00043 class L1GtPsbWord;
00044
00045
00046 class L1GTDigiToRaw : public edm::EDProducer
00047 {
00048
00049 public:
00050
00052 explicit L1GTDigiToRaw(const edm::ParameterSet&);
00053
00055 virtual ~L1GTDigiToRaw();
00056
00057 private:
00058
00060 virtual void beginJob(const edm::EventSetup&);
00061
00063 virtual void produce(edm::Event&, const edm::EventSetup&);
00064
00066
00068 void packHeader(unsigned char*, edm::Event&);
00069
00073 void packGTFE(const edm::EventSetup&, unsigned char*, L1GtfeWord&,
00074 boost::uint16_t activeBoardsGtValue);
00075
00077 void packFDL(const edm::EventSetup&, unsigned char*, L1GtFdlWord&);
00078
00081 void packPSB(const edm::EventSetup&, unsigned char*, L1GtPsbWord&);
00082
00084 unsigned int packGmtCollection(
00085 unsigned char* ptrGt,
00086 L1MuGMTReadoutCollection const* digis);
00087
00089 unsigned int packGMT(L1MuGMTReadoutRecord const&, unsigned char*);
00090 unsigned int flipPtQ(unsigned int);
00091
00093 void packTrailer(unsigned char*, unsigned char*, int);
00094
00096 virtual void endJob();
00097
00098 private:
00099
00102 int m_daqGtFedId;
00103
00105 edm::InputTag m_daqGtInputTag;
00106
00108 edm::InputTag m_muGmtInputTag;
00109
00111 boost::uint16_t m_activeBoardsMaskGt;
00112
00114 int m_totalBxInEvent;
00115
00118 int m_minBxInEvent;
00119
00122 int m_maxBxInEvent;
00123
00124 private:
00125
00127 int m_verbosity;
00128 bool m_isDebugEnabled;
00129
00130 };
00131
00132 #endif // EventFilter_L1GlobalTriggerRawToDigi_L1GTDigiToRaw_h