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> > ();
112 LogDebug(
"L1GlobalTriggerRawToDigi")
115 <<
"\nMask for active boards (hex format): " << std::hex
119 <<
"\nNumber of bunch crossing to be unpacked: " 129 <<
"\nWARNING: Number of bunch crossing to be unpacked rounded to: " 148 static const char*
const kComm1=
149 "# input tag for GT readout collection: \n" 150 "# source = hardware record, \n" 151 "# l1GtPack = GT packer (DigiToRaw)";
153 static const char*
const kComm2=
154 "# FED Id for GT DAQ record \n" 155 "# default value defined in DataFormats/FEDRawData/src/FEDNumbering.cc";
157 static const char*
const kComm3=
158 "# mask for active boards (actually 16 bits) \n" 159 "# if bit is zero, the corresponding board will not be unpacked \n" 160 "# default: no board masked";
161 desc.
add<
unsigned int>(
"ActiveBoardsMask",0xFFFF)->setComment(kComm3);
162 static const char*
const kComm4=
163 "# number of 'bunch crossing in the event' (bxInEvent) to be unpacked \n" 164 "# symmetric around L1Accept (bxInEvent = 0): \n" 165 "# 1 (bxInEvent = 0); 3 (F 0 1) (standard record); 5 (E F 0 1 2) (debug record) \n" 166 "# even numbers (except 0) 'rounded' to the nearest lower odd number \n" 167 "# negative value: unpack all available bxInEvent \n" 168 "# if more bxInEvent than available are required, unpack what exists and write a warning";
169 desc.
add<
int>(
"UnpackBxInEvent",-1)->setComment(kComm4);
171 descriptions.
add(
"l1GlobalTriggerRawToDigi",desc);
195 const std::vector<L1GtBoard> boardMaps = l1GtBM->
gtBoardMaps();
196 int boardMapsSize = boardMaps.size();
198 typedef std::vector<L1GtBoard>::const_iterator CItBoardMaps;
203 std::vector<L1GtBoard> gtRecordMap;
204 gtRecordMap.reserve(boardMapsSize);
206 for (
int iPos = 0; iPos < boardMapsSize; ++iPos) {
207 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
209 if (itBoard->gtPositionDaqRecord() == iPos) {
210 gtRecordMap.push_back(*itBoard);
225 <<
"\nWarning: FEDRawDataCollection with input tag " <<
m_daqGtInputTag 226 <<
"\nrequested in configuration, but not found in the event." 227 <<
"\nQuit unpacking this event" << std::endl;
238 int gtSize = raw.
size();
241 const unsigned char* ptrGt = raw.
data();
244 const unsigned char* endPtrGt = ptrGt + gtSize;
249 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Size of raw data: " 250 << gtSize <<
"\n" << std::endl;
252 std::ostringstream myCoutStream;
255 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\n Dump FEDRawData\n" 256 << myCoutStream.str() <<
"\n" << std::endl;
263 if ((ptrGt + headerSize) > endPtrGt) {
272 FEDTrailer cmsTrailer(ptrGt + gtSize - headerSize);
284 <<
"\nError: Pointer after GTFE greater than end pointer." 285 <<
"\n Put empty products in the event!" 286 <<
"\n Quit unpacking this event." << std::endl;
293 bool gtfeUnpacked =
false;
295 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
297 if (itBoard->gtBoardType() ==
GTFE) {
300 if (itBoard->gtPositionDaqRecord() == 1) {
308 std::ostringstream myCoutStream;
310 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n" << std::endl;
320 <<
"\nWarning: GTFE block found in raw data does not follow header." 321 <<
"\nAssumed start position of the block is wrong!" 322 <<
"\nQuit unpacking this event" << std::endl;
338 <<
"\nWarning: no GTFE block found in raw data." 339 <<
"\nCan not find the record length (BxInEvent) and the active boards!" 340 <<
"\nQuit unpacking this event" << std::endl;
360 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nActive boards before masking: 0x" << std::hex
361 << std::setw(
sizeof ( activeBoardsGtInitial ) * 2) << std::setfill(
'0')
362 << activeBoardsGtInitial <<
std::dec << std::setfill(
' ')
363 <<
"\nActive boards after masking: 0x" << std::hex << std::setw(
364 sizeof ( activeBoardsGt ) * 2) << std::setfill(
'0') << activeBoardsGt <<
std::dec 365 << std::setfill(
' ') <<
" \n" << std::endl;
370 int numberGtfeBoards = 0;
371 int numberFdlBoards = 0;
372 int numberPsbBoards = 0;
373 int numberGmtBoards = 0;
374 int numberTcsBoards = 0;
375 int numberTimBoards = 0;
377 for (CItBoardMaps itBoard = boardMaps.begin(); itBoard != boardMaps.end(); ++itBoard) {
379 int iActiveBit = itBoard->gtBitDaqActiveBoards();
380 bool activeBoardToUnpack =
false;
382 if (iActiveBit >= 0) {
383 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
389 if (activeBoardToUnpack) {
391 switch (itBoard->gtBoardType()) {
425 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type " 426 << itBoard->gtBoardType() <<
" not expected in record.\n" 453 maxBxInEvent, numberFdlBoards, numberPsbBoards));
471 for (CItBoardMaps itBoard = gtRecordMap.begin(); itBoard != gtRecordMap.end(); ++itBoard) {
473 int iActiveBit = itBoard->gtBitDaqActiveBoards();
475 bool activeBoardToUnpack =
false;
476 bool activeBoardInitial =
false;
478 int altNrBxBoardVal = -1;
480 if (iActiveBit >= 0) {
481 activeBoardInitial = activeBoardsGtInitial & ( 1 << iActiveBit );
482 activeBoardToUnpack = activeBoardsGt & ( 1 << iActiveBit );
484 altNrBxBoardVal = (altNrBxBoardInitial & ( 1 << iActiveBit )) >> iActiveBit;
486 if (altNrBxBoardVal == 1) {
488 }
else if (altNrBxBoardVal == 0) {
493 <<
"\n\nWARNING: Wrong value altNrBxBoardVal = " << altNrBxBoardVal
494 <<
" for board " << std::hex << ( itBoard->gtBoardId() ) <<
std::dec 495 <<
"\n iActiveBit = " << iActiveBit
496 <<
"\n altNrBxBoardInitial = 0x" << std::hex << altNrBxBoardInitial <<
std::dec 497 <<
"\n activeBoardsGt = 0x" << std::hex << activeBoardsGt <<
std::dec 498 <<
"\n activeBoardInitial = " << activeBoardInitial
499 <<
"\n activeBoardToUnpack = " << activeBoardToUnpack
500 <<
"\n Set altNrBxBoardVal tentatively to " 512 LogDebug(
"L1GlobalTriggerRawToDigi")
513 <<
"\nWARNING: Number of available bunch crosses for board" 515 <<
" ) \n is smaller than the number of bunch crosses requested to be unpacked (" 530 <<
" bunch crosses available." <<
"\n" << std::endl;
540 LogDebug(
"L1GlobalTriggerRawToDigi")
542 <<
" bunch crosses available." <<
"\n" << std::endl;
558 <<
" bunch crosses available." <<
"\n" << std::endl;
573 if (!activeBoardInitial) {
575 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type " 576 << itBoard->gtBoardName() <<
" with index " << itBoard->gtBoardIndex()
577 <<
" not active initially in raw data.\n" << std::endl;
583 switch (itBoard->gtBoardType()) {
592 <<
"\nError: Pointer after FDL " << iFdl
593 <<
" greater than end pointer." 594 <<
"\n Put empty products in the event!" 595 <<
"\n Quit unpacking this event." << std::endl;
603 if (activeBoardToUnpack) {
621 std::ostringstream myCoutStream;
623 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n" 646 <<
"\nError: Pointer after PSB " << iPsb
647 <<
" greater than end pointer." 648 <<
"\n Put empty products in the event!" 649 <<
"\n Quit unpacking this event." << std::endl;
657 if (activeBoardToUnpack) {
669 std::ostringstream myCoutStream;
671 LogTrace(
"L1GlobalTriggerRawToDigi") << myCoutStream.str() <<
"\n" 689 unsigned int gmtRecordSize = 136;
694 if ((ptrGt + gmtCollSize) > endPtrGt) {
696 <<
"\nError: Pointer after GMT " 697 <<
" greater than end pointer." 698 <<
"\n Put empty products in the event!" 699 <<
"\n Quit unpacking this event." << std::endl;
707 if (activeBoardToUnpack) {
712 ptrGt += gmtCollSize;
719 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nBoard of type " 720 << itBoard->gtBoardType() <<
" not expected in record.\n" << std::endl;
744 if ((ptrGt + trailerSize) > endPtrGt) {
746 <<
"\nError: Pointer after trailer " 747 <<
" greater than end pointer." 748 <<
"\n Put empty products in the event!" 749 <<
"\n Quit unpacking this event." << std::endl;
760 std::ostringstream myCoutStream;
761 gtReadoutRecord->print(myCoutStream);
762 LogTrace(
"L1GlobalTriggerRawToDigi")
763 <<
"\n The following L1 GT DAQ readout record was unpacked.\n" 764 << myCoutStream.str() <<
"\n" << std::endl;
783 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
785 std::ostringstream myCoutStream;
790 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
791 << std::setw(16) << payload[iWord] <<
std::dec << std::setfill(
' ') <<
"\n" 794 myCoutStream <<
" Event_type: " << std::hex <<
" hex: " <<
" " << std::setw(1)
796 <<
" dec: " << cmsHeader.
triggerType() << std::endl;
798 myCoutStream <<
" LVL1_Id: " << std::hex <<
" hex: " <<
"" << std::setw(6)
799 << std::setfill(
'0') << cmsHeader.
lvl1ID() << std::setfill(
' ') <<
std::dec 800 <<
" dec: " << cmsHeader.
lvl1ID() << std::endl;
802 myCoutStream <<
" BX_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
803 << std::setfill(
'0') << cmsHeader.
bxID() << std::setfill(
' ') <<
std::dec 804 <<
" dec: " << cmsHeader.
bxID() << std::endl;
806 myCoutStream <<
" Source_Id: " << std::hex <<
" hex: " <<
" " << std::setw(3)
807 << std::setfill(
'0') << cmsHeader.
sourceID() << std::setfill(
' ') <<
std::dec 808 <<
" dec: " << cmsHeader.
sourceID() << std::endl;
810 myCoutStream <<
" FOV: " << std::hex <<
" hex: " <<
" " << std::setw(1)
811 << std::setfill(
'0') << cmsHeader.
version() << std::setfill(
' ') <<
std::dec 812 <<
" dec: " << cmsHeader.
version() << std::endl;
814 myCoutStream <<
" H: " << std::hex <<
" hex: " <<
" " << std::setw(1)
816 <<
" dec: " << cmsHeader.
moreHeaders() << std::endl;
818 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Header \n" << myCoutStream.str() <<
"\n" 836 int psbSize = psbWord.
getSize();
837 int psbWords = psbSize / uLength;
840 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (psbPtr));
842 for (
int iWord = 0; iWord < psbWords; ++iWord) {
849 psbWord.
setBxNr(payload[iWord], iWord);
852 psbWord.
setAData(payload[iWord], iWord);
853 psbWord.
setBData(payload[iWord], iWord);
857 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
858 << std::setfill(
'0') << std::setw(16) << payload[iWord] <<
std::dec 859 << std::setfill(
' ') << std::endl;
874 const unsigned int gmtRecordSize32 = 34;
876 std::unique_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
877 std::unique_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
878 std::unique_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
879 std::unique_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
880 std::unique_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
882 const unsigned*
p = (
const unsigned*) chp;
896 for (
int iWord = 0; iWord < 17; iWord++) {
897 LogTrace(
"L1GlobalTriggerRawToDigi") << std::setw(4) << iWord <<
" " << std::hex
898 << std::setfill(
'0') << std::setw(16) << *bp++ <<
std::dec << std::setfill(
904 gmtrr.
setEvNr( ( *p ) & 0xffffff);
905 gmtrr.
setBCERR( ( ( *p ) >> 24 ) & 0xff);
908 gmtrr.
setBxNr( ( *p ) & 0xfff);
909 if ( ( ( *p ) >> 15 ) & 1) {
917 for (
int im = 0; im < 16; im++) {
919 unsigned waux = *p++;
920 waux = ( waux & 0xffff00ff ) | ( ( ~waux ) & 0x0000ff00 );
923 if (im >= 4 && im < 8) cand.
setType(1);
924 if (im >= 8 && im < 12) cand.
setType(2);
931 if (im < 4) DTCands->push_back(cand);
932 if (im >= 4 && im < 8) RPCbCands->push_back(cand);
933 if (im >= 8 && im < 12) CSCCands->push_back(cand);
934 if (im >= 12) RPCfCands->push_back(cand);
938 unsigned char* prank = (
unsigned char*) ( p + 12 );
940 for (
int im = 0; im < 12; im++) {
941 unsigned waux = *p++;
942 unsigned raux = im < 8 ? *prank++ : 0;
953 if (!cand.
empty()) GMTCands->push_back(cand);
960 gmtrc->addRecord(gmtrr);
964 p += gmtRecordSize32;
990 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (trlPtr));
992 std::ostringstream myCoutStream;
997 myCoutStream << std::setw(4) << iWord <<
" " << std::hex << std::setfill(
'0')
998 << std::setw(16) << payload[iWord] <<
std::dec << std::setfill(
' ') <<
"\n" 1001 myCoutStream <<
" Event_length: " << std::hex <<
" hex: " <<
"" << std::setw(6)
1002 << std::setfill(
'0') << cmsTrailer.
lenght() << std::setfill(
' ') <<
std::dec 1003 <<
" dec: " << cmsTrailer.
lenght() << std::endl;
1005 myCoutStream <<
" CRC: " << std::hex <<
" hex: " <<
" " << std::setw(4)
1006 << std::setfill(
'0') << cmsTrailer.
crc() << std::setfill(
' ') <<
std::dec 1007 <<
" dec: " << cmsTrailer.
crc() << std::endl;
1009 myCoutStream <<
" Event_status: " << std::hex <<
" hex: " <<
" " << std::setw(2)
1011 <<
" dec: " << cmsTrailer.
evtStatus() << std::endl;
1013 myCoutStream <<
" TTS_bits: " << std::hex <<
" hex: " <<
" " << std::setw(1)
1014 << std::setfill(
'0') << cmsTrailer.
ttsBits() << std::setfill(
' ') <<
std::dec 1015 <<
" dec: " << cmsTrailer.
ttsBits() << std::endl;
1017 myCoutStream <<
" More trailers: " << std::hex <<
" hex: " <<
" " << std::setw(1)
1021 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\n CMS Trailer \n" << myCoutStream.str() <<
"\n" 1031 std::unique_ptr<L1GlobalTriggerReadoutRecord> gtReadoutRecord(
1036 std::unique_ptr<std::vector<L1MuRegionalCand> > DTCands(
new std::vector<L1MuRegionalCand>);
1037 std::unique_ptr<std::vector<L1MuRegionalCand> > CSCCands(
new std::vector<L1MuRegionalCand>);
1038 std::unique_ptr<std::vector<L1MuRegionalCand> > RPCbCands(
new std::vector<L1MuRegionalCand>);
1039 std::unique_ptr<std::vector<L1MuRegionalCand> > RPCfCands(
new std::vector<L1MuRegionalCand>);
1040 std::unique_ptr<std::vector<L1MuGMTCand> > GMTCands(
new std::vector<L1MuGMTCand>);
1059 const unsigned char* gtPtr,
int gtSize, std::ostream& myCout) {
1061 LogDebug(
"L1GlobalTriggerRawToDigi") <<
"\nDump FED raw data.\n" << std::endl;
1066 int gtWords = gtSize / uLength;
1067 LogTrace(
"L1GlobalTriggerRawToDigi") <<
"\nFED GT words (" << wLength <<
" bits):" << gtWords
1068 <<
"\n" << std::endl;
1071 reinterpret_cast<cms_uint64_t*
> (
const_cast<unsigned char*
> (gtPtr));
1074 myCout << std::setw(4) <<
i <<
" " << std::hex << std::setfill(
'0') << std::setw(16)
1075 << 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
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
const unsigned int getSize() const
get the size of the GTFE block in GT DAQ record (in multiple of 8 bits)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
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
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
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)
~L1GlobalTriggerRawToDigi() override
destructor
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 &)
virtual float getCenter(unsigned packed) const =0
get the center of bin represented by packed
void setRecordLength(cms_uint16_t recordLengthValue)
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.
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)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
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 print(std::ostream &myCout) const
pretty print the content of a L1GtFdlWord
void print(std::ostream &myCout) const
pretty print
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
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)
T const * product() const
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)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void setBxNr(int bxnr)
set counters
void unpackTrailer(const unsigned char *, FEDTrailer &)
unpack trailer word
const L1MuScale * getRegionalEtaScale(int isys) const
get the regioanl muon trigger eta scale, isys = 0(DT), 1(bRPC), 2(CSC), 3(fwdRPC) ...
const std::vector< L1GtBoard > & gtBoardMaps() const
get / set / print the L1 GT board map
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
virtual float getLowEdge(unsigned packed) const =0
get the low edge of bin represented by packed
void unpackGMT(const unsigned char *, std::unique_ptr< L1MuGMTReadoutCollection > &, edm::Event &)
unpack the GMT record
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)
T const * product() const
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