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> > ();
109 LogDebug(
"L1GlobalTriggerRawToDigi")
112 <<
"\nMask for active boards (hex format): " << std::hex
115 << std::dec << std::setfill(
' ')
116 <<
"\nNumber of bunch crossing to be unpacked: "
126 <<
"\nWARNING: Number of bunch crossing to be unpacked rounded to: "
167 const std::vector<L1GtBoard> boardMaps = l1GtBM->gtBoardMaps();
168 int boardMapsSize = boardMaps.size();
170 typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
175 std::vector<L1GtBoard> gtRecordMap;
176 gtRecordMap.reserve(boardMapsSize);
178 for (
int iPos = 0; iPos < boardMapsSize; ++iPos) {
179 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
181 if (itBoard->gtPositionDaqRecord() == iPos) {
182 gtRecordMap.push_back(*itBoard);
197 <<
"\nWarning: FEDRawDataCollection with input tag " <<
m_daqGtInputTag
198 <<
"\nrequested in configuration, but not found in the event."
199 <<
"\nQuit unpacking this event" << std::endl;
210 int gtSize = raw.
size();
213 const unsigned char* ptrGt = raw.
data();
216 const unsigned char* endPtrGt = ptrGt + gtSize;
221 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Size of raw data: "
222 << gtSize <<
"\n" << std::endl;
224 std::ostringstream myCoutStream;
227 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Dump FEDRawData\n"
228 << myCoutStream.str() <<
"\n" << std::endl;
235 if ((ptrGt + headerSize) > endPtrGt) {
237 <<
"\nError: Pointer after header greater than end pointer."
238 <<
"\n Put empty products in the event!"
239 <<
"\n Quit unpacking this event." << std::endl;
248 FEDTrailer cmsTrailer(ptrGt + gtSize - headerSize);
260 <<
"\nError: Pointer after GTFE greater than end pointer."
261 <<
"\n Put empty products in the event!"
262 <<
"\n Quit unpacking this event." << std::endl;
269 bool gtfeUnpacked =
false;
271 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
273 if (itBoard->gtBoardType() ==
GTFE) {
276 if (itBoard->gtPositionDaqRecord() == 1) {
284 std::ostringstream myCoutStream;
286 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n" << std::endl;
296 <<
"\nWarning: GTFE block found in raw data does not follow header."
297 <<
"\nAssumed start position of the block is wrong!"
298 <<
"\nQuit unpacking this event" << std::endl;
314 <<
"\nWarning: no GTFE block found in raw data."
315 <<
"\nCan not find the record length (BxInEvent) and the active boards!"
316 <<
"\nQuit unpacking this event" << std::endl;
336 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nActive boards before masking: 0x" << std::hex
337 << std::setw(
sizeof ( activeBoardsGtInitial ) * 2) << std::setfill(
'0')
338 << activeBoardsGtInitial << std::dec << std::setfill(
' ')
339 <<
"\nActive boards after masking: 0x" << std::hex << std::setw(
340 sizeof ( activeBoardsGt ) * 2) << std::setfill(
'0') << activeBoardsGt << std::dec
341 << std::setfill(
' ') <<
" \n" << std::endl;
346 int numberGtfeBoards = 0;
347 int numberFdlBoards = 0;
348 int numberPsbBoards = 0;
349 int numberGmtBoards = 0;
350 int numberTcsBoards = 0;
351 int numberTimBoards = 0;
353 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
355 int iActiveBit = itBoard->gtBitDaqActiveBoards();
356 bool activeBoardToUnpack =
false;
358 if (iActiveBit >= 0) {
359 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
365 if (activeBoardToUnpack) {
367 switch (itBoard->gtBoardType()) {
401 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
402 << itBoard->gtBoardType() <<
" not expected in record.\n"
429 maxBxInEvent, numberFdlBoards, numberPsbBoards));
447 for (CItBoardMaps itBoard = gtRecordMap.begin(); itBoard != gtRecordMap.end(); ++itBoard) {
449 int iActiveBit = itBoard->gtBitDaqActiveBoards();
451 bool activeBoardToUnpack =
false;
452 bool activeBoardInitial =
false;
454 int altNrBxBoardVal = -1;
456 if (iActiveBit >= 0) {
457 activeBoardInitial = activeBoardsGtInitial & ( 1 << iActiveBit );
458 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
460 altNrBxBoardVal = (altNrBxBoardInitial & ( 1 << iActiveBit )) >> iActiveBit;
462 if (altNrBxBoardVal == 1) {
464 }
else if (altNrBxBoardVal == 0) {
469 <<
"\n\nWARNING: Wrong value altNrBxBoardVal = " << altNrBxBoardVal
470 <<
" for board " << std::hex << ( itBoard->gtBoardId() ) << std::dec
471 <<
"\n iActiveBit = " << iActiveBit
472 <<
"\n altNrBxBoardInitial = 0x" << std::hex << altNrBxBoardInitial << std::dec
473 <<
"\n activeBoardsGt = 0x" << std::hex << activeBoardsGt << std::dec
474 <<
"\n activeBoardInitial = " << activeBoardInitial
475 <<
"\n activeBoardToUnpack = " << activeBoardToUnpack
476 <<
"\n Set altNrBxBoardVal tentatively to "
488 LogDebug(
"L1GlobalTriggerRawToDigi")
489 <<
"\nWARNING: Number of available bunch crosses for board"
491 <<
" ) \n is smaller than the number of bunch crosses requested to be unpacked ("
506 <<
" bunch crosses available." <<
"\n" << std::endl;
516 LogDebug(
"L1GlobalTriggerRawToDigi")
518 <<
" bunch crosses available." <<
"\n" << std::endl;
534 <<
" bunch crosses available." <<
"\n" << std::endl;
549 if (!activeBoardInitial) {
551 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
552 << itBoard->gtBoardName() <<
" with index " << itBoard->gtBoardIndex()
553 <<
" not active initially in raw data.\n" << std::endl;
559 switch (itBoard->gtBoardType()) {
568 <<
"\nError: Pointer after FDL " << iFdl
569 <<
" greater than end pointer."
570 <<
"\n Put empty products in the event!"
571 <<
"\n Quit unpacking this event." << std::endl;
579 if (activeBoardToUnpack) {
597 std::ostringstream myCoutStream;
599 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n"
622 <<
"\nError: Pointer after PSB " << iPsb
623 <<
" greater than end pointer."
624 <<
"\n Put empty products in the event!"
625 <<
"\n Quit unpacking this event." << std::endl;
633 if (activeBoardToUnpack) {
645 std::ostringstream myCoutStream;
647 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n"
665 unsigned int gmtRecordSize = 136;
670 if ((ptrGt + gmtCollSize) > endPtrGt) {
672 <<
"\nError: Pointer after GMT "
673 <<
" greater than end pointer."
674 <<
"\n Put empty products in the event!"
675 <<
"\n Quit unpacking this event." << std::endl;
683 if (activeBoardToUnpack) {
688 ptrGt += gmtCollSize;
695 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type "
696 << itBoard->gtBoardType() <<
" not expected in record.\n" << std::endl;
720 if ((ptrGt + trailerSize) > endPtrGt) {
722 <<
"\nError: Pointer after trailer "
723 <<
" greater than end pointer."
724 <<
"\n Put empty products in the event!"
725 <<
"\n Quit unpacking this event." << std::endl;
736 std::ostringstream myCoutStream;
737 gtReadoutRecord->print(myCoutStream);
738 LogTrace(
"L1GlobalTriggerRawToDigi")
739 <<
"\n The following L1 GT DAQ readout record was unpacked.\n"
740 << myCoutStream.str() <<
"\n" << std::endl;
746 iEvent.
put(gtReadoutRecord);
759 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
761 std::ostringstream myCoutStream;
766 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
767 << std::setw(16) << payload[iWord] << std::dec << std::setfill(
' ') <<
"\n"
770 myCoutStream <<
" Event_type: " << std::hex <<
" hex: " <<
" " << std::setw(1)
771 << std::setfill(
'0') << cmsHeader.
triggerType() << std::setfill(
' ') << std::dec
772 <<
" dec: " << cmsHeader.
triggerType() << std::endl;
774 myCoutStream <<
" LVL1_Id: " << std::hex <<
" hex: " <<
"" << std::setw(6)
775 << std::setfill(
'0') << cmsHeader.
lvl1ID() << std::setfill(
' ') << std::dec
776 <<
" dec: " << cmsHeader.
lvl1ID() << std::endl;
778 myCoutStream <<
" BX_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
779 << std::setfill(
'0') << cmsHeader.
bxID() << std::setfill(
' ') << std::dec
780 <<
" dec: " << cmsHeader.
bxID() << std::endl;
782 myCoutStream <<
" Source_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
783 << std::setfill(
'0') << cmsHeader.
sourceID() << std::setfill(
' ') << std::dec
784 <<
" dec: " << cmsHeader.
sourceID() << std::endl;
786 myCoutStream <<
" FOV: " << std::hex <<
" hex: " <<
" " << std::setw(1)
787 << std::setfill(
'0') << cmsHeader.
version() << std::setfill(
' ') << std::dec
788 <<
" dec: " << cmsHeader.
version() << std::endl;
790 myCoutStream <<
" H: " << std::hex <<
" hex: " <<
" " << std::setw(1)
791 << std::setfill(
'0') << cmsHeader.
moreHeaders() << std::setfill(
' ') << std::dec
792 <<
" dec: " << cmsHeader.
moreHeaders() << std::endl;
794 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Header \n" << myCoutStream.str() <<
"\n"
812 int psbSize = psbWord.
getSize();
813 int psbWords = psbSize / uLength;
816 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (psbPtr));
818 for (
int iWord = 0; iWord < psbWords; ++iWord) {
825 psbWord.
setBxNr(payload[iWord], iWord);
828 psbWord.
setAData(payload[iWord], iWord);
829 psbWord.
setBData(payload[iWord], iWord);
833 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
834 << std::setfill(
'0') << std::setw(16) << payload[iWord] << std::dec
835 << std::setfill(
' ') << std::endl;
850 const unsigned int gmtRecordSize32 = 34;
852 std::auto_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
853 std::auto_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
854 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
855 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
856 std::auto_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
858 const unsigned*
p = (
const unsigned*) chp;
872 for (
int iWord = 0; iWord < 17; iWord++) {
873 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
874 << std::setfill(
'0') << std::setw(16) << *bp++ << std::dec << std::setfill(
880 gmtrr.
setEvNr( ( *p ) & 0xffffff);
881 gmtrr.
setBCERR( ( ( *p ) >> 24 ) & 0xff);
884 gmtrr.
setBxNr( ( *p ) & 0xfff);
885 if ( ( ( *p ) >> 15 ) & 1) {
893 for (
int im = 0; im < 16; im++) {
895 unsigned waux = *p++;
896 waux = ( waux & 0xffff00ff ) | ( ( ~waux ) & 0x0000ff00 );
899 if (im >= 4 && im < 8) cand.
setType(1);
900 if (im >= 8 && im < 12) cand.
setType(2);
907 if (im < 4) DTCands->push_back(cand);
908 if (im >= 4 && im < 8) RPCbCands->push_back(cand);
909 if (im >= 8 && im < 12) CSCCands->push_back(cand);
910 if (im >= 12) RPCfCands->push_back(cand);
914 unsigned char* prank = (
unsigned char*) ( p + 12 );
916 for (
int im = 0; im < 12; im++) {
917 unsigned waux = *p++;
918 unsigned raux = im < 8 ? *prank++ : 0;
929 if (!cand.
empty()) GMTCands->push_back(cand);
936 gmtrc->addRecord(gmtrr);
940 p += gmtRecordSize32;
948 iEvent.
put(DTCands,
"DT");
949 iEvent.
put(CSCCands,
"CSC");
950 iEvent.
put(RPCbCands,
"RPCb");
951 iEvent.
put(RPCfCands,
"RPCf");
952 iEvent.
put(GMTCands);
966 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (trlPtr));
968 std::ostringstream myCoutStream;
973 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
974 << std::setw(16) << payload[iWord] << std::dec << std::setfill(
' ') <<
"\n"
977 myCoutStream <<
" Event_length: " << std::hex <<
" hex: " <<
"" << std::setw(6)
978 << std::setfill(
'0') << cmsTrailer.
lenght() << std::setfill(
' ') << std::dec
979 <<
" dec: " << cmsTrailer.
lenght() << std::endl;
981 myCoutStream <<
" CRC: " << std::hex <<
" hex: " <<
" " << std::setw(4)
982 << std::setfill(
'0') << cmsTrailer.
crc() << std::setfill(
' ') << std::dec
983 <<
" dec: " << cmsTrailer.
crc() << std::endl;
985 myCoutStream <<
" Event_status: " << std::hex <<
" hex: " <<
" " << std::setw(2)
986 << std::setfill(
'0') << cmsTrailer.
evtStatus() << std::setfill(
' ') << std::dec
987 <<
" dec: " << cmsTrailer.
evtStatus() << std::endl;
989 myCoutStream <<
" TTS_bits: " << std::hex <<
" hex: " <<
" " << std::setw(1)
990 << std::setfill(
'0') << cmsTrailer.
ttsBits() << std::setfill(
' ') << std::dec
991 <<
" dec: " << cmsTrailer.
ttsBits() << std::endl;
993 myCoutStream <<
" More trailers: " << std::hex <<
" hex: " <<
" " << std::setw(1)
994 << std::setfill(
'0') << cmsTrailer.
moreTrailers() << std::setfill(
' ') << std::dec
997 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Trailer \n" << myCoutStream.str() <<
"\n"
1007 std::auto_ptr<L1GlobalTriggerReadoutRecord> gtReadoutRecord(
1012 std::auto_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
1013 std::auto_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
1014 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
1015 std::auto_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
1016 std::auto_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
1021 iEvent.
put(gtReadoutRecord);
1023 iEvent.
put(DTCands,
"DT");
1024 iEvent.
put(CSCCands,
"CSC");
1025 iEvent.
put(RPCbCands,
"RPCb");
1026 iEvent.
put(RPCfCands,
"RPCf");
1027 iEvent.
put(GMTCands);
1035 const unsigned char* gtPtr,
int gtSize, std::ostream& myCout) {
1037 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nDump FED raw data.\n" << std::endl;
1042 int gtWords = gtSize / uLength;
1043 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\nFED GT words (" << wLength <<
" bits):" << gtWords
1044 <<
"\n" << std::endl;
1047 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
1050 myCout << std::setw(4) <<
i <<
" " << std::hex << std::setfill(
'0') << std::setw(16)
1051 << 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