#include <SiStripFEDBufferComponents.h>
Public Member Functions | |
uint8_t | apveAddress () const |
FEDBufferFormat | bufferFormat () const |
size_t | bufferSize () const |
uint16_t | calcCRC () const |
const FEDChannel & | channel (const uint8_t internalFEDChannelNum) const |
const FEDChannel & | channel (const uint8_t internalFEUnitNum, const uint8_t internalChannelNum) const |
virtual bool | channelGood (const uint8_t internalFEDChannelNum) const |
bool | channelGood (const uint8_t internalFEUnitNum, const uint8_t internalChannelNum) const |
bool | checkAPVEAddressValid () const |
bool | checkBufferFormat () const |
bool | checkCRC () const |
bool | checkHeaderType () const |
bool | checkLengthFromTrailer () const |
bool | checkMajorityAddresses () const |
bool | checkNoExtraHeadersOrTrailers () const |
bool | checkNoFEOverflows () const |
bool | checkNoSlinkCRCError () const |
bool | checkNoSLinkTransmissionError () const |
bool | checkNoUnexpectedSourceID () const |
bool | checkReadoutMode () const |
bool | checkSourceIDs () const |
virtual std::string | checkSummary () const |
uint16_t | daqBXID () const |
uint16_t | daqCRC () const |
uint32_t | daqEventLengthIn64bitWords () const |
uint32_t | daqEventLengthInBytes () const |
FEDDAQEventType | daqEventType () const |
FEDDAQHeader | daqHeader () const |
uint32_t | daqLvl1ID () const |
uint16_t | daqSourceID () const |
FEDDAQTrailer | daqTrailer () const |
FEDTTSBits | daqTTSState () const |
FEDDataType | dataType () const |
virtual bool | doChecks () const |
bool | doDAQHeaderAndTrailerChecks () const |
bool | doTrackerSpecialHeaderChecks () const |
void | dump (std::ostream &os) const |
void | dumpOriginalBuffer (std::ostream &os) const |
FEDBufferBase (const uint8_t *fedBuffer, const size_t fedBufferSize, const bool allowUnrecognizedFormat=false) | |
FEDStatusRegister | fedStatusRegister () const |
bool | feEnabled (const uint8_t internalFEUnitNum) const |
bool | feOverflow (const uint8_t internalFEUnitNum) const |
FEDHeaderType | headerType () const |
bool | majorityAddressErrorForFEUnit (const uint8_t internalFEUnitNum) const |
uint8_t | nFEUnitsEnabled () const |
virtual void | print (std::ostream &os) const |
FEDReadoutMode | readoutMode () const |
uint16_t | sourceID () const |
TrackerSpecialHeader | trackerSpecialHeader () const |
virtual | ~FEDBufferBase () |
Protected Member Functions | |
FEDBufferBase (const uint8_t *fedBuffer, const size_t fedBufferSize, const bool allowUnrecognizedFormat, const bool fillChannelVector) | |
const uint8_t * | getPointerToByteAfterEndOfPayload () const |
const uint8_t * | getPointerToDataAfterTrackerSpecialHeader () const |
Protected Attributes | |
std::vector< FEDChannel > | channels_ |
Private Member Functions | |
void | init (const uint8_t *fedBuffer, const size_t fedBufferSize, const bool allowUnrecognizedFormat) |
Private Attributes | |
const size_t | bufferSize_ |
FEDDAQHeader | daqHeader_ |
FEDDAQTrailer | daqTrailer_ |
const uint8_t * | orderedBuffer_ |
const uint8_t * | originalBuffer_ |
TrackerSpecialHeader | specialHeader_ |
Definition at line 535 of file SiStripFEDBufferComponents.h.
sistrip::FEDBufferBase::FEDBufferBase | ( | const uint8_t * | fedBuffer, |
const size_t | fedBufferSize, | ||
const bool | allowUnrecognizedFormat = false |
||
) |
Definition at line 1202 of file SiStripFEDBufferComponents.cc.
References init().
: channels_(FEDCH_PER_FED,FEDChannel(NULL,0,0)), originalBuffer_(fedBuffer), bufferSize_(fedBufferSize) { init(fedBuffer,fedBufferSize,allowUnrecognizedFormat); }
sistrip::FEDBufferBase::~FEDBufferBase | ( | ) | [virtual] |
Definition at line 1279 of file SiStripFEDBufferComponents.cc.
References orderedBuffer_, and originalBuffer_.
{ //if the buffer was coppied and swapped then delete the copy if (orderedBuffer_ != originalBuffer_) delete[] orderedBuffer_; }
sistrip::FEDBufferBase::FEDBufferBase | ( | const uint8_t * | fedBuffer, |
const size_t | fedBufferSize, | ||
const bool | allowUnrecognizedFormat, | ||
const bool | fillChannelVector | ||
) | [protected] |
Definition at line 1210 of file SiStripFEDBufferComponents.cc.
References channels_, sistrip::FEDCH_PER_FED, init(), and NULL.
: originalBuffer_(fedBuffer), bufferSize_(fedBufferSize) { init(fedBuffer,fedBufferSize,allowUnrecognizedFormat); if (fillChannelVector) channels_.assign(FEDCH_PER_FED,FEDChannel(NULL,0,0)); }
uint8_t sistrip::FEDBufferBase::apveAddress | ( | ) | const [inline] |
Definition at line 1434 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::apveAddress(), and specialHeader_.
Referenced by checkAPVEAddressValid(), sistrip::FEDBuffer::checkFEUnitAPVAddresses(), sistrip::FEDBuffer::checkSummary(), and print().
{ return specialHeader_.apveAddress(); }
FEDBufferFormat sistrip::FEDBufferBase::bufferFormat | ( | ) | const [inline] |
Definition at line 1414 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::bufferFormat(), and specialHeader_.
Referenced by checkBufferFormat(), init(), and print().
{ return specialHeader_.bufferFormat(); }
size_t sistrip::FEDBufferBase::bufferSize | ( | ) | const [inline] |
Definition at line 1364 of file SiStripFEDBufferComponents.h.
References bufferSize_.
Referenced by checkLengthFromTrailer(), sistrip::FEDSpyBuffer::findChannels(), and print().
{ return bufferSize_; }
uint16_t sistrip::FEDBufferBase::calcCRC | ( | ) | const [inline] |
Definition at line 1349 of file SiStripFEDBufferComponents.h.
References bufferSize_, sistrip::calculateFEDBufferCRC(), and orderedBuffer_.
Referenced by checkCRC().
{ return calculateFEDBufferCRC(orderedBuffer_,bufferSize_); }
const FEDChannel & sistrip::FEDBufferBase::channel | ( | const uint8_t | internalFEDChannelNum | ) | const [inline] |
Definition at line 1464 of file SiStripFEDBufferComponents.h.
References channels_, and sistrip::internalFEDChannelNum().
Referenced by channel(), and sistrip::RawToClustersLazyUnpacker::fill().
{ return channels_[internalFEDChannelNum]; }
const FEDChannel & sistrip::FEDBufferBase::channel | ( | const uint8_t | internalFEUnitNum, |
const uint8_t | internalChannelNum | ||
) | const [inline] |
Definition at line 1469 of file SiStripFEDBufferComponents.h.
References channel(), and sistrip::internalFEDChannelNum().
{ return channel(internalFEDChannelNum(internalFEUnitNum,internalChannelNum)); }
bool sistrip::FEDBufferBase::channelGood | ( | const uint8_t | internalFEUnitNum, |
const uint8_t | internalChannelNum | ||
) | const [inline] |
Definition at line 1459 of file SiStripFEDBufferComponents.h.
References channelGood(), and sistrip::internalFEDChannelNum().
{ return channelGood(internalFEDChannelNum(internalFEUnitNum,internalChannelNum)); }
bool sistrip::FEDBufferBase::channelGood | ( | const uint8_t | internalFEDChannelNum | ) | const [virtual] |
Reimplemented in sistrip::FEDSpyBuffer.
Definition at line 1327 of file SiStripFEDBufferComponents.cc.
References sistrip::FEDCH_PER_FEUNIT, feEnabled(), feOverflow(), and majorityAddressErrorForFEUnit().
Referenced by channelGood().
{ const uint8_t feUnit = internalFEDChannelNum/FEDCH_PER_FEUNIT; return ( !majorityAddressErrorForFEUnit(feUnit) && feEnabled(feUnit) && !feOverflow(feUnit) ); }
bool sistrip::FEDBufferBase::checkAPVEAddressValid | ( | ) | const [inline] |
Definition at line 1512 of file SiStripFEDBufferComponents.h.
References sistrip::APV_MAX_ADDRESS, and apveAddress().
{ return (apveAddress() <= APV_MAX_ADDRESS); }
bool sistrip::FEDBufferBase::checkBufferFormat | ( | ) | const [inline] |
Definition at line 1497 of file SiStripFEDBufferComponents.h.
References sistrip::BUFFER_FORMAT_INVALID, and bufferFormat().
Referenced by checkSummary(), and doTrackerSpecialHeaderChecks().
{ return (bufferFormat() != BUFFER_FORMAT_INVALID); }
bool sistrip::FEDBufferBase::checkCRC | ( | ) | const [inline] |
Definition at line 1492 of file SiStripFEDBufferComponents.h.
References calcCRC(), checkNoSlinkCRCError(), and daqCRC().
Referenced by checkSummary(), sistrip::FEDBuffer::doChecks(), and sistrip::FEDBuffer::doCorruptBufferChecks().
{ return ( checkNoSlinkCRCError() && (calcCRC()==daqCRC()) ); }
bool sistrip::FEDBufferBase::checkHeaderType | ( | ) | const [inline] |
Definition at line 1502 of file SiStripFEDBufferComponents.h.
References sistrip::HEADER_TYPE_INVALID, and headerType().
Referenced by checkSummary(), and doTrackerSpecialHeaderChecks().
{ return (headerType() != HEADER_TYPE_INVALID); }
bool sistrip::FEDBufferBase::checkLengthFromTrailer | ( | ) | const [inline] |
Definition at line 1542 of file SiStripFEDBufferComponents.h.
References bufferSize(), and daqEventLengthInBytes().
Referenced by checkSummary(), and doDAQHeaderAndTrailerChecks().
{ return (bufferSize() == daqEventLengthInBytes()); }
bool sistrip::FEDBufferBase::checkMajorityAddresses | ( | ) | const |
Definition at line 1318 of file SiStripFEDBufferComponents.cc.
References feEnabled(), sistrip::FEUNITS_PER_FED, and majorityAddressErrorForFEUnit().
Referenced by checkSummary().
{ for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) { if (!feEnabled(iFE)) continue; if (majorityAddressErrorForFEUnit(iFE)) return false; } return true; }
bool sistrip::FEDBufferBase::checkNoExtraHeadersOrTrailers | ( | ) | const [inline] |
Definition at line 1537 of file SiStripFEDBufferComponents.h.
References sistrip::FEDDAQHeader::boeNibble(), daqHeader_, daqTrailer_, and sistrip::FEDDAQTrailer::eoeNibble().
Referenced by checkSummary(), and doDAQHeaderAndTrailerChecks().
{ return ( (daqHeader_.boeNibble() == 0x5) && (daqTrailer_.eoeNibble() == 0xA) ); }
bool sistrip::FEDBufferBase::checkNoFEOverflows | ( | ) | const [inline] |
Definition at line 1517 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::feOverflowRegister(), and specialHeader_.
Referenced by checkSummary(), and doTrackerSpecialHeaderChecks().
{ return !specialHeader_.feOverflowRegister(); }
bool sistrip::FEDBufferBase::checkNoSlinkCRCError | ( | ) | const [inline] |
Definition at line 1522 of file SiStripFEDBufferComponents.h.
References daqTrailer_, and sistrip::FEDDAQTrailer::slinkCRCError().
Referenced by checkCRC(), and checkSummary().
{ return !daqTrailer_.slinkCRCError(); }
bool sistrip::FEDBufferBase::checkNoSLinkTransmissionError | ( | ) | const [inline] |
Definition at line 1527 of file SiStripFEDBufferComponents.h.
References daqTrailer_, and sistrip::FEDDAQTrailer::slinkTransmissionError().
Referenced by checkSummary(), and doDAQHeaderAndTrailerChecks().
{ return !daqTrailer_.slinkTransmissionError(); }
bool sistrip::FEDBufferBase::checkNoUnexpectedSourceID | ( | ) | const [inline] |
Definition at line 1532 of file SiStripFEDBufferComponents.h.
References sistrip::FEDDAQTrailer::badSourceID(), and daqTrailer_.
Referenced by checkSummary(), and doDAQHeaderAndTrailerChecks().
{ return !daqTrailer_.badSourceID(); }
bool sistrip::FEDBufferBase::checkReadoutMode | ( | ) | const [inline] |
Definition at line 1507 of file SiStripFEDBufferComponents.h.
References sistrip::READOUT_MODE_INVALID, and readoutMode().
Referenced by checkSummary(), and doTrackerSpecialHeaderChecks().
{ return (readoutMode() != READOUT_MODE_INVALID); }
bool sistrip::FEDBufferBase::checkSourceIDs | ( | ) | const |
Definition at line 1312 of file SiStripFEDBufferComponents.cc.
References daqSourceID(), sistrip::FED_ID_MAX, and sistrip::FED_ID_MIN.
Referenced by checkSummary(), and doDAQHeaderAndTrailerChecks().
{ return ( (daqSourceID() >= FED_ID_MIN) && (daqSourceID() <= FED_ID_MAX) ); }
std::string sistrip::FEDBufferBase::checkSummary | ( | ) | const [virtual] |
Reimplemented in sistrip::FEDBuffer.
Definition at line 1338 of file SiStripFEDBufferComponents.cc.
References checkBufferFormat(), checkCRC(), checkHeaderType(), checkLengthFromTrailer(), checkMajorityAddresses(), checkNoExtraHeadersOrTrailers(), checkNoFEOverflows(), checkNoSlinkCRCError(), checkNoSLinkTransmissionError(), checkNoUnexpectedSourceID(), checkReadoutMode(), checkSourceIDs(), feEnabled(), feOverflow(), sistrip::FEUNITS_PER_FED, majorityAddressErrorForFEUnit(), and summarizeEdmComparisonLogfiles::summary.
Referenced by sistrip::operator<<().
{ std::ostringstream summary; summary << "Check buffer type valid: " << ( checkBufferFormat() ? "passed" : "FAILED" ) << std::endl; summary << "Check header format valid: " << ( checkHeaderType() ? "passed" : "FAILED" ) << std::endl; summary << "Check readout mode valid: " << ( checkReadoutMode() ? "passed" : "FAILED" ) << std::endl; //summary << "Check APVe address valid: " << ( checkAPVEAddressValid() ? "passed" : "FAILED" ) << std::endl; summary << "Check FE unit majority addresses: " << ( checkMajorityAddresses() ? "passed" : "FAILED" ) << std::endl; if (!checkMajorityAddresses()) { summary << "FEs with majority address error: "; unsigned int badFEs = 0; for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) { if (!feEnabled(iFE)) continue; if (majorityAddressErrorForFEUnit(iFE)) { summary << uint16_t(iFE) << " "; badFEs++; } } summary << std::endl; summary << "Number of FE Units with bad addresses: " << badFEs << std::endl; } summary << "Check for FE unit buffer overflows: " << ( checkNoFEOverflows() ? "passed" : "FAILED" ) << std::endl; if (!checkNoFEOverflows()) { summary << "FEs which overflowed: "; unsigned int badFEs = 0; for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) { if (feOverflow(iFE)) { summary << uint16_t(iFE) << " "; badFEs++; } } summary << std::endl; summary << "Number of FE Units which overflowed: " << badFEs << std::endl; } summary << "Check for S-Link CRC errors: " << ( checkNoSlinkCRCError() ? "passed" : "FAILED" ) << std::endl; summary << "Check for S-Link transmission error: " << ( checkNoSLinkTransmissionError() ? "passed" : "FAILED" ) << std::endl; summary << "Check CRC: " << ( checkCRC() ? "passed" : "FAILED" ) << std::endl; summary << "Check source ID is FED ID: " << ( checkSourceIDs() ? "passed" : "FAILED" ) << std::endl; summary << "Check for unexpected source ID at FRL: " << ( checkNoUnexpectedSourceID() ? "passed" : "FAILED" ) << std::endl; summary << "Check there are no extra headers or trailers: " << ( checkNoExtraHeadersOrTrailers() ? "passed" : "FAILED" ) << std::endl; summary << "Check length from trailer: " << ( checkLengthFromTrailer() ? "passed" : "FAILED" ) << std::endl; return summary.str(); }
uint16_t sistrip::FEDBufferBase::daqBXID | ( | ) | const [inline] |
Definition at line 1384 of file SiStripFEDBufferComponents.h.
References sistrip::FEDDAQHeader::bxID(), and daqHeader_.
Referenced by print().
{ return daqHeader_.bxID(); }
uint16_t sistrip::FEDBufferBase::daqCRC | ( | ) | const [inline] |
Definition at line 1404 of file SiStripFEDBufferComponents.h.
References sistrip::FEDDAQTrailer::crc(), and daqTrailer_.
Referenced by checkCRC().
{ return daqTrailer_.crc(); }
uint32_t sistrip::FEDBufferBase::daqEventLengthIn64bitWords | ( | ) | const [inline] |
Definition at line 1394 of file SiStripFEDBufferComponents.h.
References daqTrailer_, and sistrip::FEDDAQTrailer::eventLengthIn64BitWords().
{ return daqTrailer_.eventLengthIn64BitWords(); }
uint32_t sistrip::FEDBufferBase::daqEventLengthInBytes | ( | ) | const [inline] |
Definition at line 1399 of file SiStripFEDBufferComponents.h.
References daqTrailer_, and sistrip::FEDDAQTrailer::eventLengthInBytes().
Referenced by checkLengthFromTrailer(), and print().
{ return daqTrailer_.eventLengthInBytes(); }
FEDDAQEventType sistrip::FEDBufferBase::daqEventType | ( | ) | const [inline] |
Definition at line 1374 of file SiStripFEDBufferComponents.h.
References daqHeader_, and sistrip::FEDDAQHeader::eventType().
Referenced by print(), and sistrip::RawToDigiUnpacker::updateEventSummary().
{ return daqHeader_.eventType(); }
FEDDAQHeader sistrip::FEDBufferBase::daqHeader | ( | ) | const [inline] |
Definition at line 1354 of file SiStripFEDBufferComponents.h.
References daqHeader_.
{ return daqHeader_; }
uint32_t sistrip::FEDBufferBase::daqLvl1ID | ( | ) | const [inline] |
Definition at line 1379 of file SiStripFEDBufferComponents.h.
References daqHeader_, and sistrip::FEDDAQHeader::l1ID().
Referenced by print().
{ return daqHeader_.l1ID(); }
uint16_t sistrip::FEDBufferBase::daqSourceID | ( | ) | const [inline] |
Definition at line 1389 of file SiStripFEDBufferComponents.h.
References daqHeader_, and sistrip::FEDDAQHeader::sourceID().
Referenced by checkSourceIDs(), and print().
{ return daqHeader_.sourceID(); }
FEDDAQTrailer sistrip::FEDBufferBase::daqTrailer | ( | ) | const [inline] |
Definition at line 1359 of file SiStripFEDBufferComponents.h.
References daqTrailer_.
{ return daqTrailer_; }
FEDTTSBits sistrip::FEDBufferBase::daqTTSState | ( | ) | const [inline] |
Definition at line 1409 of file SiStripFEDBufferComponents.h.
References daqTrailer_, and sistrip::FEDDAQTrailer::ttsBits().
Referenced by print().
{ return daqTrailer_.ttsBits(); }
FEDDataType sistrip::FEDBufferBase::dataType | ( | ) | const [inline] |
Definition at line 1429 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::dataType(), and specialHeader_.
Referenced by print().
{ return specialHeader_.dataType(); }
bool sistrip::FEDBufferBase::doChecks | ( | ) | const [virtual] |
Reimplemented in sistrip::FEDBuffer.
Definition at line 1333 of file SiStripFEDBufferComponents.cc.
References doDAQHeaderAndTrailerChecks(), and doTrackerSpecialHeaderChecks().
Referenced by sistrip::FEDBuffer::doChecks().
{ return (doTrackerSpecialHeaderChecks() && doDAQHeaderAndTrailerChecks()); }
bool sistrip::FEDBufferBase::doDAQHeaderAndTrailerChecks | ( | ) | const [inline] |
Definition at line 1483 of file SiStripFEDBufferComponents.h.
References checkLengthFromTrailer(), checkNoExtraHeadersOrTrailers(), checkNoSLinkTransmissionError(), checkNoUnexpectedSourceID(), and checkSourceIDs().
Referenced by doChecks().
{ return ( checkNoSLinkTransmissionError() && checkSourceIDs() && checkNoUnexpectedSourceID() && checkNoExtraHeadersOrTrailers() && checkLengthFromTrailer() ); }
bool sistrip::FEDBufferBase::doTrackerSpecialHeaderChecks | ( | ) | const [inline] |
Definition at line 1474 of file SiStripFEDBufferComponents.h.
References checkBufferFormat(), checkHeaderType(), checkNoFEOverflows(), and checkReadoutMode().
Referenced by doChecks().
{ return ( checkBufferFormat() && checkHeaderType() && checkReadoutMode() && //checkAPVEAddressValid() && checkNoFEOverflows() ); }
void sistrip::FEDBufferBase::dump | ( | std::ostream & | os | ) | const [inline] |
Definition at line 1339 of file SiStripFEDBufferComponents.h.
References bufferSize_, orderedBuffer_, and sistrip::printHex().
Referenced by SiStripFEDDumpPlugin::analyze(), and sistrip::FEDSpyBuffer::delayChipGood().
{ printHex(orderedBuffer_,bufferSize_,os); }
void sistrip::FEDBufferBase::dumpOriginalBuffer | ( | std::ostream & | os | ) | const [inline] |
Definition at line 1344 of file SiStripFEDBufferComponents.h.
References bufferSize_, originalBuffer_, and sistrip::printHex().
{ printHex(originalBuffer_,bufferSize_,os); }
FEDStatusRegister sistrip::FEDBufferBase::fedStatusRegister | ( | ) | const [inline] |
Definition at line 1454 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::fedStatusRegister(), and specialHeader_.
Referenced by sistrip::FEDBuffer::FEDBuffer(), and print().
{ return specialHeader_.fedStatusRegister(); }
bool sistrip::FEDBufferBase::feEnabled | ( | const uint8_t | internalFEUnitNum | ) | const [inline] |
Definition at line 1444 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::feEnabled(), and specialHeader_.
Referenced by channelGood(), sistrip::FEDBuffer::checkChannelLengthsMatchBufferLength(), checkMajorityAddresses(), checkSummary(), sistrip::FEDBuffer::findChannels(), and nFEUnitsEnabled().
{ return specialHeader_.feEnabled(internalFEUnitNum); }
bool sistrip::FEDBufferBase::feOverflow | ( | const uint8_t | internalFEUnitNum | ) | const [inline] |
Definition at line 1449 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::feOverflow(), and specialHeader_.
Referenced by channelGood(), checkSummary(), sistrip::FEDBuffer::feGood(), and sistrip::FEDBuffer::feGoodWithoutAPVEmulatorCheck().
{ return specialHeader_.feOverflow(internalFEUnitNum); }
const uint8_t * sistrip::FEDBufferBase::getPointerToByteAfterEndOfPayload | ( | ) | const [inline, protected] |
Definition at line 1552 of file SiStripFEDBufferComponents.h.
References bufferSize_, and orderedBuffer_.
Referenced by sistrip::FEDBuffer::FEDBuffer().
{ return orderedBuffer_+bufferSize_-8; }
const uint8_t * sistrip::FEDBufferBase::getPointerToDataAfterTrackerSpecialHeader | ( | ) | const [inline, protected] |
Definition at line 1547 of file SiStripFEDBufferComponents.h.
References orderedBuffer_.
Referenced by sistrip::FEDBuffer::FEDBuffer(), and sistrip::FEDSpyBuffer::globalRunNumber().
{ return orderedBuffer_+16; }
FEDHeaderType sistrip::FEDBufferBase::headerType | ( | ) | const [inline] |
Definition at line 1419 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::headerType(), and specialHeader_.
Referenced by checkHeaderType(), sistrip::FEDBuffer::checkSummary(), sistrip::FEDBuffer::FEDBuffer(), sistrip::FEDBuffer::print(), print(), and sistrip::RawToDigiUnpacker::updateEventSummary().
{ return specialHeader_.headerType(); }
void sistrip::FEDBufferBase::init | ( | const uint8_t * | fedBuffer, |
const size_t | fedBufferSize, | ||
const bool | allowUnrecognizedFormat | ||
) | [private] |
Definition at line 1218 of file SiStripFEDBufferComponents.cc.
References sistrip::BUFFER_FORMAT_INVALID, sistrip::BUFFER_FORMAT_NEW, sistrip::BUFFER_FORMAT_OLD_VME, sistrip::TrackerSpecialHeader::bufferFormat(), bufferFormat(), bufferSize_, daqHeader_, daqTrailer_, Exception, i, orderedBuffer_, originalBuffer_, and specialHeader_.
Referenced by FEDBufferBase().
{ //min buffer length. DAQ header, DAQ trailer, tracker special header. static const size_t MIN_BUFFER_SIZE = 8+8+8; //check size is non zero and data pointer is not NULL if (!originalBuffer_) throw cms::Exception("FEDBuffer") << "Buffer pointer is NULL."; if (bufferSize_ < MIN_BUFFER_SIZE) { std::ostringstream ss; ss << "Buffer is too small. " << "Min size is " << MIN_BUFFER_SIZE << ". " << "Buffer size is " << bufferSize_ << ". "; throw cms::Exception("FEDBuffer") << ss.str(); } //construct tracker special header using second 64 bit word specialHeader_ = TrackerSpecialHeader(originalBuffer_+8); //check the buffer format const FEDBufferFormat bufferFormat = specialHeader_.bufferFormat(); if (bufferFormat == BUFFER_FORMAT_INVALID && !allowUnrecognizedFormat) { std::ostringstream ss; ss << "Buffer format not recognized. " << "Tracker special header: " << specialHeader_; throw cms::Exception("FEDBuffer") << ss.str(); } //swap the buffer words so that the whole buffer is in slink ordering if ( (bufferFormat == BUFFER_FORMAT_OLD_VME) || (bufferFormat == BUFFER_FORMAT_NEW) ) { uint8_t* newBuffer = new uint8_t[bufferSize_]; const uint32_t* originalU32 = reinterpret_cast<const uint32_t*>(originalBuffer_); const size_t sizeU32 = bufferSize_/4; uint32_t* newU32 = reinterpret_cast<uint32_t*>(newBuffer); if (bufferFormat == BUFFER_FORMAT_OLD_VME) { //swap whole buffer for (size_t i = 0; i < sizeU32; i+=2) { newU32[i] = originalU32[i+1]; newU32[i+1] = originalU32[i]; } } if (bufferFormat == BUFFER_FORMAT_NEW) { //copy DAQ header memcpy(newU32,originalU32,8); //copy DAQ trailer memcpy(newU32+sizeU32-2,originalU32+sizeU32-2,8); //swap the payload for (size_t i = 2; i < sizeU32-2; i+=2) { newU32[i] = originalU32[i+1]; newU32[i+1] = originalU32[i]; } } orderedBuffer_ = newBuffer; } //if ( (bufferFormat == BUFFER_FORMAT_OLD_VME) || (bufferFormat == BUFFER_FORMAT_NEW) ) else { orderedBuffer_ = originalBuffer_; } //construct header object at begining of buffer daqHeader_ = FEDDAQHeader(orderedBuffer_); //construct trailer object using last 64 bit word of buffer daqTrailer_ = FEDDAQTrailer(orderedBuffer_+bufferSize_-8); }
bool sistrip::FEDBufferBase::majorityAddressErrorForFEUnit | ( | const uint8_t | internalFEUnitNum | ) | const [inline] |
Definition at line 1439 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::apveAddress(), sistrip::TrackerSpecialHeader::majorityAddressErrorForFEUnit(), and specialHeader_.
Referenced by channelGood(), checkMajorityAddresses(), checkSummary(), and sistrip::FEDBuffer::feGood().
{ return (specialHeader_.majorityAddressErrorForFEUnit(internalFEUnitNum) && (specialHeader_.apveAddress() != 0x00)); }
uint8_t sistrip::FEDBufferBase::nFEUnitsEnabled | ( | ) | const |
Definition at line 1303 of file SiStripFEDBufferComponents.cc.
References feEnabled(), sistrip::FEUNITS_PER_FED, and query::result.
Referenced by print().
{ uint8_t result = 0; for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) { if (feEnabled(iFE)) result++; } return result; }
void sistrip::FEDBufferBase::print | ( | std::ostream & | os | ) | const [virtual] |
Reimplemented in sistrip::FEDSpyBuffer, and sistrip::FEDBuffer.
Definition at line 1285 of file SiStripFEDBufferComponents.cc.
References apveAddress(), bufferFormat(), bufferSize(), daqBXID(), daqEventLengthInBytes(), daqEventType(), daqLvl1ID(), daqSourceID(), daqTTSState(), dataType(), fedStatusRegister(), headerType(), nFEUnitsEnabled(), sistrip::FEDStatusRegister::printFlags(), and readoutMode().
Referenced by sistrip::operator<<().
{ os << "buffer format: " << bufferFormat() << std::endl; os << "Buffer size: " << bufferSize() << " bytes" << std::endl; os << "Event length from DAQ trailer: " << daqEventLengthInBytes() << " bytes" << std::endl; os << "Source ID: " << daqSourceID() << std::endl; os << "Header type: " << headerType() << std::endl; os << "Readout mode: " << readoutMode() << std::endl; os << "Data type: " << dataType() << std::endl; os << "DAQ event type: " << daqEventType() << std::endl; os << "TTS state: " << daqTTSState() << std::endl; os << "L1 ID: " << daqLvl1ID() << std::endl; os << "BX ID: " << daqBXID() << std::endl; os << "FED status register flags: "; fedStatusRegister().printFlags(os); os << std::endl; os << "APVe Address: " << uint16_t(apveAddress()) << std::endl; os << "Enabled FE units: " << uint16_t(nFEUnitsEnabled()) << std::endl; }
FEDReadoutMode sistrip::FEDBufferBase::readoutMode | ( | ) | const [inline] |
Definition at line 1424 of file SiStripFEDBufferComponents.h.
References sistrip::TrackerSpecialHeader::readoutMode(), and specialHeader_.
Referenced by sistrip::FEDBuffer::channelGood(), checkReadoutMode(), sistrip::FEDBuffer::FEDBuffer(), sistrip::FEDSpyBuffer::FEDSpyBuffer(), sistrip::RawToClustersLazyUnpacker::fill(), sistrip::FEDBuffer::findChannels(), sistrip::FEDBuffer::getCorrectPacketCode(), and print().
{ return specialHeader_.readoutMode(); }
uint16_t sistrip::FEDBufferBase::sourceID | ( | ) | const |
TrackerSpecialHeader sistrip::FEDBufferBase::trackerSpecialHeader | ( | ) | const [inline] |
Definition at line 1369 of file SiStripFEDBufferComponents.h.
References specialHeader_.
Referenced by sistrip::FEDBuffer::FEDBuffer().
{ return specialHeader_; }
const size_t sistrip::FEDBufferBase::bufferSize_ [private] |
Definition at line 618 of file SiStripFEDBufferComponents.h.
Referenced by bufferSize(), calcCRC(), dump(), dumpOriginalBuffer(), getPointerToByteAfterEndOfPayload(), and init().
std::vector<FEDChannel> sistrip::FEDBufferBase::channels_ [protected] |
Definition at line 613 of file SiStripFEDBufferComponents.h.
Referenced by sistrip::FEDBuffer::calculateFEUnitLength(), channel(), sistrip::FEDBuffer::checkChannelLengthsMatchBufferLength(), sistrip::FEDBuffer::checkChannelPacketCodes(), sistrip::FEDBuffer::checkSummary(), sistrip::FEDBuffer::FEDBuffer(), FEDBufferBase(), sistrip::FEDBuffer::findChannels(), and sistrip::FEDSpyBuffer::findChannels().
Definition at line 619 of file SiStripFEDBufferComponents.h.
Referenced by checkNoExtraHeadersOrTrailers(), daqBXID(), daqEventType(), daqHeader(), daqLvl1ID(), daqSourceID(), and init().
Definition at line 620 of file SiStripFEDBufferComponents.h.
Referenced by checkNoExtraHeadersOrTrailers(), checkNoSlinkCRCError(), checkNoSLinkTransmissionError(), checkNoUnexpectedSourceID(), daqCRC(), daqEventLengthIn64bitWords(), daqEventLengthInBytes(), daqTrailer(), daqTTSState(), and init().
const uint8_t* sistrip::FEDBufferBase::orderedBuffer_ [private] |
Definition at line 617 of file SiStripFEDBufferComponents.h.
Referenced by calcCRC(), dump(), getPointerToByteAfterEndOfPayload(), getPointerToDataAfterTrackerSpecialHeader(), init(), and ~FEDBufferBase().
const uint8_t* sistrip::FEDBufferBase::originalBuffer_ [private] |
Definition at line 616 of file SiStripFEDBufferComponents.h.
Referenced by dumpOriginalBuffer(), init(), and ~FEDBufferBase().
Definition at line 621 of file SiStripFEDBufferComponents.h.
Referenced by apveAddress(), bufferFormat(), checkNoFEOverflows(), dataType(), fedStatusRegister(), feEnabled(), feOverflow(), headerType(), init(), majorityAddressErrorForFEUnit(), readoutMode(), and trackerSpecialHeader().