65 m_daqGtInputTag(pSet.getParameter<edm::InputTag> (
"DaqGtInputTag")),
70 m_daqGtFedId(pSet.getUntrackedParameter<int> (
74 m_activeBoardsMaskGt(pSet.getParameter<unsigned int> (
"ActiveBoardsMask")),
77 m_unpackBxInEvent(pSet.getParameter<int> (
"UnpackBxInEvent")),
82 m_lowSkipBxInEvent(0), m_uppSkipBxInEvent(0),
84 m_recordLength0(0), m_recordLength1(0),
86 m_totalBxInEvent(0), m_verbosity(pSet.getUntrackedParameter<int> (
"Verbosity", 0)),
92 produces<L1GlobalTriggerReadoutRecord> ();
93 produces<L1MuGMTReadoutCollection> ();
95 produces<std::vector<L1MuRegionalCand> > (
"DT");
96 produces<std::vector<L1MuRegionalCand> > (
"CSC");
97 produces<std::vector<L1MuRegionalCand> > (
"RPCb");
98 produces<std::vector<L1MuRegionalCand> > (
"RPCf");
99 produces<std::vector<L1MuGMTCand> > ();
110 LogDebug(
"L1GlobalTriggerRawToDigi")
113 <<
"\nMask for active boards (hex format): " << std::hex
116 << std::dec << std::setfill(
' ')
117 <<
"\nNumber of bunch crossing to be unpacked: "
127 <<
"\nWARNING: Number of bunch crossing to be unpacked rounded to: "
164 const std::vector<L1GtBoard> boardMaps = l1GtBM->gtBoardMaps();
165 int boardMapsSize = boardMaps.size();
167 typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
172 std::vector<L1GtBoard> gtRecordMap;
173 gtRecordMap.reserve(boardMapsSize);
175 for (
int iPos = 0; iPos < boardMapsSize; ++iPos) {
176 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
178 if (itBoard->gtPositionDaqRecord() == iPos) {
179 gtRecordMap.push_back(*itBoard);
194 <<
"\nWarning: FEDRawDataCollection with input tag " <<
m_daqGtInputTag
195 <<
"\nrequested in configuration, but not found in the event."
196 <<
"\nQuit unpacking this event" << std::endl;
207 int gtSize = raw.
size();
210 const unsigned char* ptrGt = raw.
data();
213 const unsigned char* endPtrGt = ptrGt + gtSize;
218 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Size of raw data: "
219 << gtSize <<
"\n" << std::endl;
221 std::ostringstream myCoutStream;
224 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Dump FEDRawData\n"
225 << myCoutStream.str() <<
"\n" << std::endl;
232 if ((ptrGt + headerSize) > endPtrGt) {
234 <<
"\nError: Pointer after header greater than end pointer."
235 <<
"\n Put empty products in the event!"
236 <<
"\n Quit unpacking this event." << std::endl;
245 FEDTrailer cmsTrailer(ptrGt + gtSize - headerSize);
257 <<
"\nError: Pointer after GTFE greater than end pointer."
258 <<
"\n Put empty products in the event!"
259 <<
"\n Quit unpacking this event." << std::endl;
266 bool gtfeUnpacked =
false;
268 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
270 if (itBoard->gtBoardType() ==
GTFE) {
273 if (itBoard->gtPositionDaqRecord() == 1) {
281 std::ostringstream myCoutStream;
283 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n" << std::endl;
293 <<
"\nWarning: GTFE block found in raw data does not follow header."
294 <<
"\nAssumed start position of the block is wrong!"
295 <<
"\nQuit unpacking this event" << std::endl;
311 <<
"\nWarning: no GTFE block found in raw data."
312 <<
"\nCan not find the record length (BxInEvent) and the active boards!"
313 <<
"\nQuit unpacking this event" << std::endl;
333 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nActive boards before masking: 0x" << std::hex
334 << std::setw(
sizeof ( activeBoardsGtInitial ) * 2) << std::setfill(
'0')
335 << activeBoardsGtInitial << std::dec << std::setfill(
' ')
336 <<
"\nActive boards after masking: 0x" << std::hex << std::setw(
337 sizeof ( activeBoardsGt ) * 2) << std::setfill(
'0') << activeBoardsGt << std::dec
338 << std::setfill(
' ') <<
" \n" << std::endl;
343 int numberGtfeBoards = 0;
344 int numberFdlBoards = 0;
345 int numberPsbBoards = 0;
346 int numberGmtBoards = 0;
347 int numberTcsBoards = 0;
348 int numberTimBoards = 0;
350 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
352 int iActiveBit = itBoard->gtBitDaqActiveBoards();
353 bool activeBoardToUnpack =
false;
355 if (iActiveBit >= 0) {
356 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
362 if (activeBoardToUnpack) {
364 switch (itBoard->gtBoardType()) {
398 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
399 << itBoard->gtBoardType() <<
" not expected in record.\n"
426 maxBxInEvent, numberFdlBoards, numberPsbBoards));
444 for (CItBoardMaps itBoard = gtRecordMap.begin(); itBoard != gtRecordMap.end(); ++itBoard) {
446 int iActiveBit = itBoard->gtBitDaqActiveBoards();
448 bool activeBoardToUnpack =
false;
449 bool activeBoardInitial =
false;
451 int altNrBxBoardVal = -1;
453 if (iActiveBit >= 0) {
454 activeBoardInitial = activeBoardsGtInitial & ( 1 << iActiveBit );
455 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
457 altNrBxBoardVal = (altNrBxBoardInitial & ( 1 << iActiveBit )) >> iActiveBit;
459 if (altNrBxBoardVal == 1) {
461 }
else if (altNrBxBoardVal == 0) {
466 <<
"\n\nWARNING: Wrong value altNrBxBoardVal = " << altNrBxBoardVal
467 <<
" for board " << std::hex << ( itBoard->gtBoardId() ) << std::dec
468 <<
"\n iActiveBit = " << iActiveBit
469 <<
"\n altNrBxBoardInitial = 0x" << std::hex << altNrBxBoardInitial << std::dec
470 <<
"\n activeBoardsGt = 0x" << std::hex << activeBoardsGt << std::dec
471 <<
"\n activeBoardInitial = " << activeBoardInitial
472 <<
"\n activeBoardToUnpack = " << activeBoardToUnpack
473 <<
"\n Set altNrBxBoardVal tentatively to "
485 LogDebug(
"L1GlobalTriggerRawToDigi")
486 <<
"\nWARNING: Number of available bunch crosses for board"
488 <<
" ) \n is smaller than the number of bunch crosses requested to be unpacked ("
503 <<
" bunch crosses available." <<
"\n" << std::endl;
513 LogDebug(
"L1GlobalTriggerRawToDigi")
515 <<
" bunch crosses available." <<
"\n" << std::endl;
531 <<
" bunch crosses available." <<
"\n" << std::endl;
546 if (!activeBoardInitial) {
548 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
549 << itBoard->gtBoardName() <<
" with index " << itBoard->gtBoardIndex()
550 <<
" not active initially in raw data.\n" << std::endl;
556 switch (itBoard->gtBoardType()) {
565 <<
"\nError: Pointer after FDL " << iFdl
566 <<
" greater than end pointer."
567 <<
"\n Put empty products in the event!"
568 <<
"\n Quit unpacking this event." << std::endl;
576 if (activeBoardToUnpack) {
594 std::ostringstream myCoutStream;
596 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n"
619 <<
"\nError: Pointer after PSB " << iPsb
620 <<
" greater than end pointer."
621 <<
"\n Put empty products in the event!"
622 <<
"\n Quit unpacking this event." << std::endl;
630 if (activeBoardToUnpack) {
642 std::ostringstream myCoutStream;
644 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n"
662 unsigned int gmtRecordSize = 136;
667 if ((ptrGt + gmtCollSize) > endPtrGt) {
669 <<
"\nError: Pointer after GMT "
670 <<
" greater than end pointer."
671 <<
"\n Put empty products in the event!"
672 <<
"\n Quit unpacking this event." << std::endl;
680 if (activeBoardToUnpack) {
685 ptrGt += gmtCollSize;
692 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
693 << itBoard->gtBoardType() <<
" not expected in record.\n" << std::endl;
717 if ((ptrGt + trailerSize) > endPtrGt) {
719 <<
"\nError: Pointer after trailer "
720 <<
" greater than end pointer."
721 <<
"\n Put empty products in the event!"
722 <<
"\n Quit unpacking this event." << std::endl;
733 std::ostringstream myCoutStream;
734 gtReadoutRecord->print(myCoutStream);
735 LogTrace(
"L1GlobalTriggerRawToDigi")
736 <<
"\n The following L1 GT DAQ readout record was unpacked.\n"
737 << myCoutStream.str() <<
"\n" << std::endl;
743 iEvent.
put(gtReadoutRecord);
756 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
758 std::ostringstream myCoutStream;
763 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
764 << std::setw(16) << payload[iWord] << std::dec << std::setfill(
' ') <<
"\n"
767 myCoutStream <<
" Event_type: " << std::hex <<
" hex: " <<
" " << std::setw(1)
768 << std::setfill(
'0') << cmsHeader.
triggerType() << std::setfill(
' ') << std::dec
769 <<
" dec: " << cmsHeader.
triggerType() << std::endl;
771 myCoutStream <<
" LVL1_Id: " << std::hex <<
" hex: " <<
"" << std::setw(6)
772 << std::setfill(
'0') << cmsHeader.
lvl1ID() << std::setfill(
' ') << std::dec
773 <<
" dec: " << cmsHeader.
lvl1ID() << std::endl;
775 myCoutStream <<
" BX_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
776 << std::setfill(
'0') << cmsHeader.
bxID() << std::setfill(
' ') << std::dec
777 <<
" dec: " << cmsHeader.
bxID() << std::endl;
779 myCoutStream <<
" Source_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
780 << std::setfill(
'0') << cmsHeader.
sourceID() << std::setfill(
' ') << std::dec
781 <<
" dec: " << cmsHeader.
sourceID() << std::endl;
783 myCoutStream <<
" FOV: " << std::hex <<
" hex: " <<
" " << std::setw(1)
784 << std::setfill(
'0') << cmsHeader.
version() << std::setfill(
' ') << std::dec
785 <<
" dec: " << cmsHeader.
version() << std::endl;
787 myCoutStream <<
" H: " << std::hex <<
" hex: " <<
" " << std::setw(1)
788 << std::setfill(
'0') << cmsHeader.
moreHeaders() << std::setfill(
' ') << std::dec
789 <<
" dec: " << cmsHeader.
moreHeaders() << std::endl;
791 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Header \n" << myCoutStream.str() <<
"\n"
809 int psbSize = psbWord.
getSize();
810 int psbWords = psbSize / uLength;
813 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (psbPtr));
815 for (
int iWord = 0; iWord < psbWords; ++iWord) {
822 psbWord.
setBxNr(payload[iWord], iWord);
825 psbWord.
setAData(payload[iWord], iWord);
826 psbWord.
setBData(payload[iWord], iWord);
830 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
831 << std::setfill(
'0') << std::setw(16) << payload[iWord] << std::dec
832 << std::setfill(
' ') << std::endl;
847 const unsigned int gmtRecordSize32 = 34;
849 std::auto_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
850 std::auto_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
851 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
852 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
853 std::auto_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
855 const unsigned*
p = (
const unsigned*) chp;
869 for (
int iWord = 0; iWord < 17; iWord++) {
870 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
871 << std::setfill(
'0') << std::setw(16) << *bp++ << std::dec << std::setfill(
877 gmtrr.
setEvNr( ( *p ) & 0xffffff);
878 gmtrr.
setBCERR( ( ( *p ) >> 24 ) & 0xff);
881 gmtrr.
setBxNr( ( *p ) & 0xfff);
882 if ( ( ( *p ) >> 15 ) & 1) {
890 for (
int im = 0; im < 16; im++) {
892 unsigned waux = *p++;
893 waux = ( waux & 0xffff00ff ) | ( ( ~waux ) & 0x0000ff00 );
896 if (im >= 4 && im < 8) cand.
setType(1);
897 if (im >= 8 && im < 12) cand.
setType(2);
904 if (im < 4) DTCands->push_back(cand);
905 if (im >= 4 && im < 8) RPCbCands->push_back(cand);
906 if (im >= 8 && im < 12) CSCCands->push_back(cand);
907 if (im >= 12) RPCfCands->push_back(cand);
911 unsigned char* prank = (
unsigned char*) ( p + 12 );
913 for (
int im = 0; im < 12; im++) {
914 unsigned waux = *p++;
915 unsigned raux = im < 8 ? *prank++ : 0;
926 if (!cand.
empty()) GMTCands->push_back(cand);
933 gmtrc->addRecord(gmtrr);
937 p += gmtRecordSize32;
945 iEvent.
put(DTCands,
"DT");
946 iEvent.
put(CSCCands,
"CSC");
947 iEvent.
put(RPCbCands,
"RPCb");
948 iEvent.
put(RPCfCands,
"RPCf");
949 iEvent.
put(GMTCands);
963 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (trlPtr));
965 std::ostringstream myCoutStream;
970 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
971 << std::setw(16) << payload[iWord] << std::dec << std::setfill(
' ') <<
"\n"
974 myCoutStream <<
" Event_length: " << std::hex <<
" hex: " <<
"" << std::setw(6)
975 << std::setfill(
'0') << cmsTrailer.
lenght() << std::setfill(
' ') << std::dec
976 <<
" dec: " << cmsTrailer.
lenght() << std::endl;
978 myCoutStream <<
" CRC: " << std::hex <<
" hex: " <<
" " << std::setw(4)
979 << std::setfill(
'0') << cmsTrailer.
crc() << std::setfill(
' ') << std::dec
980 <<
" dec: " << cmsTrailer.
crc() << std::endl;
982 myCoutStream <<
" Event_status: " << std::hex <<
" hex: " <<
" " << std::setw(2)
983 << std::setfill(
'0') << cmsTrailer.
evtStatus() << std::setfill(
' ') << std::dec
984 <<
" dec: " << cmsTrailer.
evtStatus() << std::endl;
986 myCoutStream <<
" TTS_bits: " << std::hex <<
" hex: " <<
" " << std::setw(1)
987 << std::setfill(
'0') << cmsTrailer.
ttsBits() << std::setfill(
' ') << std::dec
988 <<
" dec: " << cmsTrailer.
ttsBits() << std::endl;
990 myCoutStream <<
" More trailers: " << std::hex <<
" hex: " <<
" " << std::setw(1)
991 << std::setfill(
'0') << cmsTrailer.
moreTrailers() << std::setfill(
' ') << std::dec
994 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Trailer \n" << myCoutStream.str() <<
"\n"
1004 std::auto_ptr<L1GlobalTriggerReadoutRecord> gtReadoutRecord(
1009 std::auto_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
1010 std::auto_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
1011 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
1012 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
1013 std::auto_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
1018 iEvent.
put(gtReadoutRecord);
1020 iEvent.
put(DTCands,
"DT");
1021 iEvent.
put(CSCCands,
"CSC");
1022 iEvent.
put(RPCbCands,
"RPCb");
1023 iEvent.
put(RPCfCands,
"RPCf");
1024 iEvent.
put(GMTCands);
1032 const unsigned char* gtPtr,
int gtSize, std::ostream& myCout) {
1034 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nDump FED raw data.\n" << std::endl;
1039 int gtWords = gtSize / uLength;
1040 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\nFED GT words (" << wLength <<
" bits):" << gtWords
1041 <<
"\n" << std::endl;
1044 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
1047 myCout << std::setw(4) <<
i <<
" " << std::hex << std::setfill(
'0') << std::setw(16)
1048 << payload[
i] << std::dec << std::setfill(
' ') << std::endl;
const L1MuTriggerScales * m_TriggerScales
muon trigger scales to convert unpacked data into physical quantities
void setBxInEvent(int bxie)
void reset()
reset the content of a L1GtPsbWord
const unsigned int getSize() const
get the size of the GTFE block in GT DAQ record (in multiple of 8 bits)
virtual void print(std::ostream &myCout) const
pretty print the content of a L1GtfeWord
const L1MuScale * getPtScale() const
get the Pt scale
unsigned int phiIndex() const
get phi-code
void unpackHeader(const unsigned char *, FEDHeader &)
block unpackers
cms_uint16_t m_activeBoardsMaskGt
mask for active boards
virtual void produce(edm::Event &, const edm::EventSetup &) override
static const int UnitLength
one unit in the word is UnitLength bits
virtual bool empty() const
return empty flag
void setGMTBrlCand(int nr, L1MuGMTExtendedCand const &cand)
set GMT barrel candidate
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
int evtStatus()
Event fragment status information.
int m_recordLength0
total Bx's in the event, obtained from GTFE block
void setBData(cms_uint16_t bDataVal, int iB)
unsigned int etaIndex() const
get eta-code
void setGMTFwdCand(int nr, L1MuGMTExtendedCand const &cand)
set GMT forward candidate
void unpack(const unsigned char *fdlPtr)
void setInputCand(int nr, unsigned data)
set Input muon
void unpackPSB(const edm::EventSetup &, const unsigned char *, L1GtPsbWord &)
void setRecordLength(cms_uint16_t recordLengthValue)
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed
void setPtValue(float ptVal)
Set Pt Value.
const unsigned int getSize() const
get the size of the FDL block in GT DAQ record (in multiple of 8 bits)
const cms_uint16_t altNrBxBoard() const
get/set alternative for number of BX per board
size_t size() const
Lenght of the data buffer in bytes.
static const int WordLength
GT DAQ record organized in words of WordLength bits.
const cms_uint16_t recordLength() const
get/set record length for alternative 0
void setEventNr(cms_uint32_t eventNrValue)
void setBxNr(cms_uint16_t bxNrValue)
bool empty() const
is it an empty muon candidate?
virtual void reset()
reset the content of a L1GtfeWord
const L1MuTriggerPtScale * m_TriggerPtScale
void setPhiValue(float phiVal)
Set Phi Value.
void setBoardId(cms_uint16_t boardIdValue)
int m_recordLength1
corresponding to alternative 1 in altNrBxBoard()
void setPhiValue(float phiVal)
Setters for physical values.
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
void setLumiSegmentNr(const cms_uint16_t &lumiSegmentNrValue)
edm::InputTag m_daqGtInputTag
input tags for GT DAQ record
void setBxInEvent(int bxInEventValue)
const L1MuScale * getPhiScale() const
get the phi scale
int m_verbosity
verbosity level
void reset()
reset the content of a L1GtFdlWord
void setEtaValue(float etaVal)
Set Eta Value (need to set type, first)
unsigned eta_packed() const
return eta packed as in hardware
unsigned short cms_uint16_t
void setType(unsigned type)
Set Type: 0 DT, 1 bRPC, 2 CSC, 3 fRPC.
void setRecordLength1(cms_uint16_t recordLengthValue)
L1GlobalTriggerRawToDigi(const edm::ParameterSet &)
constructor(s)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const cms_uint16_t activeBoards() const
get/set boards contributing to EVM respectively DAQ record
void unpackGMT(const unsigned char *, std::auto_ptr< L1MuGMTReadoutCollection > &, edm::Event &)
unpack the GMT record
void print(std::ostream &myCout) const
pretty print the content of a L1GtFdlWord
void print(std::ostream &myCout) const
pretty print
L1GtFdlWord * m_gtFdlWord
int ttsBits()
Current value of the Trigger Throttling System bitsAQ).
const cms_uint16_t lumiSegmentNr() const
get/set luminosity segment number of the actual bx
L1GtPsbWord * m_gtPsbWord
int m_totalBxInEvent
number of Bx for a board, obtained from GTFE block (record length & alternative)
int lenght()
The length of the event fragment counted in 64-bit words including header and trailer.
void setActiveBoards(cms_uint16_t activeBoardsValue)
void setEtaValue(float etaVal)
Set Eta Value (need to set type, first)
T const * product() const
void setBxNr(int bxnr)
set counters
void unpackTrailer(const unsigned char *, FEDTrailer &)
unpack trailer word
T const * product() const
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC) ...
virtual ~L1GlobalTriggerRawToDigi()
destructor
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
void setLocalBxNr(cms_uint16_t localBxNrValue)
int crc()
Cyclic Redundancy Code of the event fragment including header and trailer.
const L1MuScale * getGMTEtaScale() const
get the GMT eta scale
void setGMTCand(int nr, L1MuGMTExtendedCand const &cand)
set GMT candidate (does not store rank)
unsigned long long cms_uint64_t
void produceEmptyProducts(edm::Event &)
produce empty products in case of problems
void setPtValue(float ptVal)
Set Pt Value.
unsigned pt_packed() const
return pt packed as in hardware
const cms_uint16_t recordLength1() const
get/set record length for alternative 1
unsigned int ptIndex() const
get pt-code
void setAData(cms_uint16_t aDataVal, int iA)
virtual void unpack(const unsigned char *gtfePtr)
unsigned type_idx() const
return type: 0 DT, 1 bRPC, 2 CSC, 3 fRPC
unsigned phi_packed() const
return phi packed as in hardware
const unsigned int getSize() const
get the size of the PSB block in GT DAQ record (in multiple of 8 bits)
void dumpFedRawData(const unsigned char *, int, std::ostream &)
dump FED raw data