67 m_daqGtInputTag(pSet.getParameter<edm::InputTag> (
"DaqGtInputTag")),
72 m_daqGtFedId(pSet.getUntrackedParameter<int> (
76 m_activeBoardsMaskGt(pSet.getParameter<unsigned int> (
"ActiveBoardsMask")),
79 m_unpackBxInEvent(pSet.getParameter<int> (
"UnpackBxInEvent")),
84 m_lowSkipBxInEvent(0), m_uppSkipBxInEvent(0),
86 m_recordLength0(0), m_recordLength1(0),
88 m_totalBxInEvent(0), m_verbosity(pSet.getUntrackedParameter<int> (
"Verbosity", 0)),
94 produces<L1GlobalTriggerReadoutRecord> ();
95 produces<L1MuGMTReadoutCollection> ();
97 produces<std::vector<L1MuRegionalCand> > (
"DT");
98 produces<std::vector<L1MuRegionalCand> > (
"CSC");
99 produces<std::vector<L1MuRegionalCand> > (
"RPCb");
100 produces<std::vector<L1MuRegionalCand> > (
"RPCf");
101 produces<std::vector<L1MuGMTCand> > ();
111 LogDebug(
"L1GlobalTriggerRawToDigi")
114 <<
"\nMask for active boards (hex format): " << std::hex
117 << std::dec << std::setfill(
' ')
118 <<
"\nNumber of bunch crossing to be unpacked: "
128 <<
"\nWARNING: Number of bunch crossing to be unpacked rounded to: "
169 const std::vector<L1GtBoard> boardMaps = l1GtBM->gtBoardMaps();
170 int boardMapsSize = boardMaps.size();
172 typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
177 std::vector<L1GtBoard> gtRecordMap;
178 gtRecordMap.reserve(boardMapsSize);
180 for (
int iPos = 0; iPos < boardMapsSize; ++iPos) {
181 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
183 if (itBoard->gtPositionDaqRecord() == iPos) {
184 gtRecordMap.push_back(*itBoard);
199 <<
"\nWarning: FEDRawDataCollection with input tag " <<
m_daqGtInputTag
200 <<
"\nrequested in configuration, but not found in the event."
201 <<
"\nQuit unpacking this event" << std::endl;
212 int gtSize = raw.
size();
215 const unsigned char* ptrGt = raw.
data();
218 const unsigned char* endPtrGt = ptrGt + gtSize;
223 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Size of raw data: "
224 << gtSize <<
"\n" << std::endl;
226 std::ostringstream myCoutStream;
229 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Dump FEDRawData\n"
230 << myCoutStream.str() <<
"\n" << std::endl;
237 if ((ptrGt + headerSize) > endPtrGt) {
239 <<
"\nError: Pointer after header greater than end pointer."
240 <<
"\n Put empty products in the event!"
241 <<
"\n Quit unpacking this event." << std::endl;
250 FEDTrailer cmsTrailer(ptrGt + gtSize - headerSize);
262 <<
"\nError: Pointer after GTFE greater than end pointer."
263 <<
"\n Put empty products in the event!"
264 <<
"\n Quit unpacking this event." << std::endl;
271 bool gtfeUnpacked =
false;
273 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
275 if (itBoard->gtBoardType() ==
GTFE) {
278 if (itBoard->gtPositionDaqRecord() == 1) {
286 std::ostringstream myCoutStream;
288 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n" << std::endl;
298 <<
"\nWarning: GTFE block found in raw data does not follow header."
299 <<
"\nAssumed start position of the block is wrong!"
300 <<
"\nQuit unpacking this event" << std::endl;
316 <<
"\nWarning: no GTFE block found in raw data."
317 <<
"\nCan not find the record length (BxInEvent) and the active boards!"
318 <<
"\nQuit unpacking this event" << std::endl;
338 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nActive boards before masking: 0x" << std::hex
339 << std::setw(
sizeof ( activeBoardsGtInitial ) * 2) << std::setfill(
'0')
340 << activeBoardsGtInitial << std::dec << std::setfill(
' ')
341 <<
"\nActive boards after masking: 0x" << std::hex << std::setw(
342 sizeof ( activeBoardsGt ) * 2) << std::setfill(
'0') << activeBoardsGt << std::dec
343 << std::setfill(
' ') <<
" \n" << std::endl;
348 int numberGtfeBoards = 0;
349 int numberFdlBoards = 0;
350 int numberPsbBoards = 0;
351 int numberGmtBoards = 0;
352 int numberTcsBoards = 0;
353 int numberTimBoards = 0;
355 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
357 int iActiveBit = itBoard->gtBitDaqActiveBoards();
358 bool activeBoardToUnpack =
false;
360 if (iActiveBit >= 0) {
361 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
367 if (activeBoardToUnpack) {
369 switch (itBoard->gtBoardType()) {
403 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
404 << itBoard->gtBoardType() <<
" not expected in record.\n"
431 maxBxInEvent, numberFdlBoards, numberPsbBoards));
449 for (CItBoardMaps itBoard = gtRecordMap.begin(); itBoard != gtRecordMap.end(); ++itBoard) {
451 int iActiveBit = itBoard->gtBitDaqActiveBoards();
453 bool activeBoardToUnpack =
false;
454 bool activeBoardInitial =
false;
456 int altNrBxBoardVal = -1;
458 if (iActiveBit >= 0) {
459 activeBoardInitial = activeBoardsGtInitial & ( 1 << iActiveBit );
460 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
462 altNrBxBoardVal = (altNrBxBoardInitial & ( 1 << iActiveBit )) >> iActiveBit;
464 if (altNrBxBoardVal == 1) {
466 }
else if (altNrBxBoardVal == 0) {
471 <<
"\n\nWARNING: Wrong value altNrBxBoardVal = " << altNrBxBoardVal
472 <<
" for board " << std::hex << ( itBoard->gtBoardId() ) << std::dec
473 <<
"\n iActiveBit = " << iActiveBit
474 <<
"\n altNrBxBoardInitial = 0x" << std::hex << altNrBxBoardInitial << std::dec
475 <<
"\n activeBoardsGt = 0x" << std::hex << activeBoardsGt << std::dec
476 <<
"\n activeBoardInitial = " << activeBoardInitial
477 <<
"\n activeBoardToUnpack = " << activeBoardToUnpack
478 <<
"\n Set altNrBxBoardVal tentatively to "
490 LogDebug(
"L1GlobalTriggerRawToDigi")
491 <<
"\nWARNING: Number of available bunch crosses for board"
493 <<
" ) \n is smaller than the number of bunch crosses requested to be unpacked ("
508 <<
" bunch crosses available." <<
"\n" << std::endl;
518 LogDebug(
"L1GlobalTriggerRawToDigi")
520 <<
" bunch crosses available." <<
"\n" << std::endl;
536 <<
" bunch crosses available." <<
"\n" << std::endl;
551 if (!activeBoardInitial) {
553 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
554 << itBoard->gtBoardName() <<
" with index " << itBoard->gtBoardIndex()
555 <<
" not active initially in raw data.\n" << std::endl;
561 switch (itBoard->gtBoardType()) {
570 <<
"\nError: Pointer after FDL " << iFdl
571 <<
" greater than end pointer."
572 <<
"\n Put empty products in the event!"
573 <<
"\n Quit unpacking this event." << std::endl;
581 if (activeBoardToUnpack) {
599 std::ostringstream myCoutStream;
601 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n"
624 <<
"\nError: Pointer after PSB " << iPsb
625 <<
" greater than end pointer."
626 <<
"\n Put empty products in the event!"
627 <<
"\n Quit unpacking this event." << std::endl;
635 if (activeBoardToUnpack) {
647 std::ostringstream myCoutStream;
649 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n"
667 unsigned int gmtRecordSize = 136;
672 if ((ptrGt + gmtCollSize) > endPtrGt) {
674 <<
"\nError: Pointer after GMT "
675 <<
" greater than end pointer."
676 <<
"\n Put empty products in the event!"
677 <<
"\n Quit unpacking this event." << std::endl;
685 if (activeBoardToUnpack) {
690 ptrGt += gmtCollSize;
697 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
698 << itBoard->gtBoardType() <<
" not expected in record.\n" << std::endl;
722 if ((ptrGt + trailerSize) > endPtrGt) {
724 <<
"\nError: Pointer after trailer "
725 <<
" greater than end pointer."
726 <<
"\n Put empty products in the event!"
727 <<
"\n Quit unpacking this event." << std::endl;
738 std::ostringstream myCoutStream;
739 gtReadoutRecord->print(myCoutStream);
740 LogTrace(
"L1GlobalTriggerRawToDigi")
741 <<
"\n The following L1 GT DAQ readout record was unpacked.\n"
742 << myCoutStream.str() <<
"\n" << std::endl;
748 iEvent.
put(gtReadoutRecord);
761 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
763 std::ostringstream myCoutStream;
768 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
769 << std::setw(16) << payload[iWord] << std::dec << std::setfill(
' ') <<
"\n"
772 myCoutStream <<
" Event_type: " << std::hex <<
" hex: " <<
" " << std::setw(1)
773 << std::setfill(
'0') << cmsHeader.
triggerType() << std::setfill(
' ') << std::dec
774 <<
" dec: " << cmsHeader.
triggerType() << std::endl;
776 myCoutStream <<
" LVL1_Id: " << std::hex <<
" hex: " <<
"" << std::setw(6)
777 << std::setfill(
'0') << cmsHeader.
lvl1ID() << std::setfill(
' ') << std::dec
778 <<
" dec: " << cmsHeader.
lvl1ID() << std::endl;
780 myCoutStream <<
" BX_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
781 << std::setfill(
'0') << cmsHeader.
bxID() << std::setfill(
' ') << std::dec
782 <<
" dec: " << cmsHeader.
bxID() << std::endl;
784 myCoutStream <<
" Source_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
785 << std::setfill(
'0') << cmsHeader.
sourceID() << std::setfill(
' ') << std::dec
786 <<
" dec: " << cmsHeader.
sourceID() << std::endl;
788 myCoutStream <<
" FOV: " << std::hex <<
" hex: " <<
" " << std::setw(1)
789 << std::setfill(
'0') << cmsHeader.
version() << std::setfill(
' ') << std::dec
790 <<
" dec: " << cmsHeader.
version() << std::endl;
792 myCoutStream <<
" H: " << std::hex <<
" hex: " <<
" " << std::setw(1)
793 << std::setfill(
'0') << cmsHeader.
moreHeaders() << std::setfill(
' ') << std::dec
794 <<
" dec: " << cmsHeader.
moreHeaders() << std::endl;
796 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Header \n" << myCoutStream.str() <<
"\n"
814 int psbSize = psbWord.
getSize();
815 int psbWords = psbSize / uLength;
818 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (psbPtr));
820 for (
int iWord = 0; iWord < psbWords; ++iWord) {
827 psbWord.
setBxNr(payload[iWord], iWord);
830 psbWord.
setAData(payload[iWord], iWord);
831 psbWord.
setBData(payload[iWord], iWord);
835 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
836 << std::setfill(
'0') << std::setw(16) << payload[iWord] << std::dec
837 << std::setfill(
' ') << std::endl;
852 const unsigned int gmtRecordSize32 = 34;
854 std::auto_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
855 std::auto_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
856 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
857 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
858 std::auto_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
860 const unsigned*
p = (
const unsigned*) chp;
874 for (
int iWord = 0; iWord < 17; iWord++) {
875 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
876 << std::setfill(
'0') << std::setw(16) << *bp++ << std::dec << std::setfill(
882 gmtrr.
setEvNr( ( *p ) & 0xffffff);
883 gmtrr.
setBCERR( ( ( *p ) >> 24 ) & 0xff);
886 gmtrr.
setBxNr( ( *p ) & 0xfff);
887 if ( ( ( *p ) >> 15 ) & 1) {
895 for (
int im = 0; im < 16; im++) {
897 unsigned waux = *p++;
898 waux = ( waux & 0xffff00ff ) | ( ( ~waux ) & 0x0000ff00 );
901 if (im >= 4 && im < 8) cand.
setType(1);
902 if (im >= 8 && im < 12) cand.
setType(2);
909 if (im < 4) DTCands->push_back(cand);
910 if (im >= 4 && im < 8) RPCbCands->push_back(cand);
911 if (im >= 8 && im < 12) CSCCands->push_back(cand);
912 if (im >= 12) RPCfCands->push_back(cand);
916 unsigned char* prank = (
unsigned char*) ( p + 12 );
918 for (
int im = 0; im < 12; im++) {
919 unsigned waux = *p++;
920 unsigned raux = im < 8 ? *prank++ : 0;
931 if (!cand.
empty()) GMTCands->push_back(cand);
938 gmtrc->addRecord(gmtrr);
942 p += gmtRecordSize32;
950 iEvent.
put(DTCands,
"DT");
951 iEvent.
put(CSCCands,
"CSC");
952 iEvent.
put(RPCbCands,
"RPCb");
953 iEvent.
put(RPCfCands,
"RPCf");
954 iEvent.
put(GMTCands);
968 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (trlPtr));
970 std::ostringstream myCoutStream;
975 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
976 << std::setw(16) << payload[iWord] << std::dec << std::setfill(
' ') <<
"\n"
979 myCoutStream <<
" Event_length: " << std::hex <<
" hex: " <<
"" << std::setw(6)
980 << std::setfill(
'0') << cmsTrailer.
lenght() << std::setfill(
' ') << std::dec
981 <<
" dec: " << cmsTrailer.
lenght() << std::endl;
983 myCoutStream <<
" CRC: " << std::hex <<
" hex: " <<
" " << std::setw(4)
984 << std::setfill(
'0') << cmsTrailer.
crc() << std::setfill(
' ') << std::dec
985 <<
" dec: " << cmsTrailer.
crc() << std::endl;
987 myCoutStream <<
" Event_status: " << std::hex <<
" hex: " <<
" " << std::setw(2)
988 << std::setfill(
'0') << cmsTrailer.
evtStatus() << std::setfill(
' ') << std::dec
989 <<
" dec: " << cmsTrailer.
evtStatus() << std::endl;
991 myCoutStream <<
" TTS_bits: " << std::hex <<
" hex: " <<
" " << std::setw(1)
992 << std::setfill(
'0') << cmsTrailer.
ttsBits() << std::setfill(
' ') << std::dec
993 <<
" dec: " << cmsTrailer.
ttsBits() << std::endl;
995 myCoutStream <<
" More trailers: " << std::hex <<
" hex: " <<
" " << std::setw(1)
996 << std::setfill(
'0') << cmsTrailer.
moreTrailers() << std::setfill(
' ') << std::dec
999 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Trailer \n" << myCoutStream.str() <<
"\n"
1009 std::auto_ptr<L1GlobalTriggerReadoutRecord> gtReadoutRecord(
1014 std::auto_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
1015 std::auto_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
1016 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
1017 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
1018 std::auto_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
1023 iEvent.
put(gtReadoutRecord);
1025 iEvent.
put(DTCands,
"DT");
1026 iEvent.
put(CSCCands,
"CSC");
1027 iEvent.
put(RPCbCands,
"RPCb");
1028 iEvent.
put(RPCfCands,
"RPCf");
1029 iEvent.
put(GMTCands);
1037 const unsigned char* gtPtr,
int gtSize, std::ostream& myCout) {
1039 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nDump FED raw data.\n" << std::endl;
1044 int gtWords = gtSize / uLength;
1045 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\nFED GT words (" << wLength <<
" bits):" << gtWords
1046 <<
"\n" << std::endl;
1049 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
1052 myCout << std::setw(4) <<
i <<
" " << std::hex << std::setfill(
'0') << std::setw(16)
1053 << 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
static const int UnitLength
one unit in the word is UnitLength bits
virtual bool empty() const
return empty flag
virtual void produce(edm::Event &, const edm::EventSetup &)
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.
const T & max(const T &a, const T &b)
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