CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
sistrip::FEDBufferBase Class Reference

#include <SiStripFEDBufferComponents.h>

Inheritance diagram for sistrip::FEDBufferBase:
sistrip::FEDBuffer sistrip::FEDSpyBuffer

Public Member Functions

uint8_t apveAddress () const
 
FEDBufferFormat bufferFormat () const
 
size_t bufferSize () const
 
uint16_t calcCRC () const
 
const FEDChannelchannel (const uint8_t internalFEDChannelNum) const
 
const FEDChannelchannel (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
 
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
 
FEDLegacyReadoutMode legacyReadoutMode () const
 
bool majorityAddressErrorForFEUnit (const uint8_t internalFEUnitNum) const
 
uint8_t nFEUnitsEnabled () const
 
uint8_t packetCode (bool legacy=false, const uint8_t internalFEDChannelNum=0) 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< FEDChannelchannels_
 

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_
 

Detailed Description

Definition at line 603 of file SiStripFEDBufferComponents.h.

Constructor & Destructor Documentation

sistrip::FEDBufferBase::FEDBufferBase ( const uint8_t *  fedBuffer,
const size_t  fedBufferSize,
const bool  allowUnrecognizedFormat = false 
)

Definition at line 1255 of file SiStripFEDBufferComponents.cc.

References init().

1256  : channels_(FEDCH_PER_FED, FEDChannel(nullptr, 0, 0)), originalBuffer_(fedBuffer), bufferSize_(fedBufferSize) {
1257  init(fedBuffer, fedBufferSize, allowUnrecognizedFormat);
1258  }
std::vector< FEDChannel > channels_
void init(const uint8_t *fedBuffer, const size_t fedBufferSize, const bool allowUnrecognizedFormat)
static const uint16_t FEDCH_PER_FED
sistrip::FEDBufferBase::~FEDBufferBase ( )
virtual

Definition at line 1331 of file SiStripFEDBufferComponents.cc.

References orderedBuffer_, and originalBuffer_.

1331  {
1332  //if the buffer was coppied and swapped then delete the copy
1334  delete[] orderedBuffer_;
1335  }
sistrip::FEDBufferBase::FEDBufferBase ( const uint8_t *  fedBuffer,
const size_t  fedBufferSize,
const bool  allowUnrecognizedFormat,
const bool  fillChannelVector 
)
protected

Definition at line 1260 of file SiStripFEDBufferComponents.cc.

References channels_, sistrip::FEDCH_PER_FED, and init().

1264  : originalBuffer_(fedBuffer), bufferSize_(fedBufferSize) {
1265  init(fedBuffer, fedBufferSize, allowUnrecognizedFormat);
1266  if (fillChannelVector)
1267  channels_.assign(FEDCH_PER_FED, FEDChannel(nullptr, 0, 0));
1268  }
std::vector< FEDChannel > channels_
void init(const uint8_t *fedBuffer, const size_t fedBufferSize, const bool allowUnrecognizedFormat)
static const uint16_t FEDCH_PER_FED

Member Function Documentation

uint8_t sistrip::FEDBufferBase::apveAddress ( ) const
inline
FEDBufferFormat sistrip::FEDBufferBase::bufferFormat ( ) const
inline

Definition at line 1304 of file SiStripFEDBufferComponents.h.

Referenced by init(), and print().

1304 { return specialHeader_.bufferFormat(); }
TrackerSpecialHeader specialHeader_
size_t sistrip::FEDBufferBase::bufferSize ( ) const
inline

Definition at line 1284 of file SiStripFEDBufferComponents.h.

Referenced by sistrip::FEDSpyBuffer::findChannels(), and print().

1284 { return bufferSize_; }
uint16_t sistrip::FEDBufferBase::calcCRC ( ) const
inline

Definition at line 1278 of file SiStripFEDBufferComponents.h.

References sistrip::calculateFEDBufferCRC().

uint16_t calculateFEDBufferCRC(const uint8_t *buffer, const size_t lengthInBytes)
const FEDChannel & sistrip::FEDBufferBase::channel ( const uint8_t  internalFEDChannelNum) const
inline

Definition at line 1383 of file SiStripFEDBufferComponents.h.

References sistrip::internalFEDChannelNum().

Referenced by sistrip::FEDRawChannelUnpacker::procRawModeUnpacker(), and SiStripClusterizerFromRaw::run().

1383  {
1385  }
uint8_t internalFEDChannelNum(const uint8_t internalFEUnitNum, const uint8_t internalFEUnitChannelNum)
std::vector< FEDChannel > channels_
const FEDChannel & sistrip::FEDBufferBase::channel ( const uint8_t  internalFEUnitNum,
const uint8_t  internalChannelNum 
) const
inline

Definition at line 1387 of file SiStripFEDBufferComponents.h.

References sistrip::internalFEDChannelNum().

1388  {
1389  return channel(internalFEDChannelNum(internalFEUnitNum, internalChannelNum));
1390  }
uint8_t internalFEDChannelNum(const uint8_t internalFEUnitNum, const uint8_t internalFEUnitChannelNum)
const FEDChannel & channel(const uint8_t internalFEDChannelNum) const
bool sistrip::FEDBufferBase::channelGood ( const uint8_t  internalFEDChannelNum) const
virtual

Reimplemented in sistrip::FEDSpyBuffer.

Definition at line 1378 of file SiStripFEDBufferComponents.cc.

References sistrip::FEDCH_PER_FEUNIT, feEnabled(), feOverflow(), and majorityAddressErrorForFEUnit().

1378  {
1379  const uint8_t feUnit = internalFEDChannelNum / FEDCH_PER_FEUNIT;
1380  return (!majorityAddressErrorForFEUnit(feUnit) && feEnabled(feUnit) && !feOverflow(feUnit));
1381  }
uint8_t internalFEDChannelNum(const uint8_t internalFEUnitNum, const uint8_t internalFEUnitChannelNum)
bool majorityAddressErrorForFEUnit(const uint8_t internalFEUnitNum) const
bool feEnabled(const uint8_t internalFEUnitNum) const
static const uint16_t FEDCH_PER_FEUNIT
bool feOverflow(const uint8_t internalFEUnitNum) const
bool sistrip::FEDBufferBase::channelGood ( const uint8_t  internalFEUnitNum,
const uint8_t  internalChannelNum 
) const
inline

Definition at line 1379 of file SiStripFEDBufferComponents.h.

References sistrip::internalFEDChannelNum().

1379  {
1380  return channelGood(internalFEDChannelNum(internalFEUnitNum, internalChannelNum));
1381  }
uint8_t internalFEDChannelNum(const uint8_t internalFEUnitNum, const uint8_t internalFEUnitChannelNum)
virtual bool channelGood(const uint8_t internalFEDChannelNum) const
bool sistrip::FEDBufferBase::checkAPVEAddressValid ( ) const
inline

Definition at line 1411 of file SiStripFEDBufferComponents.h.

1411 { return (apveAddress() <= APV_MAX_ADDRESS); }
static const uint8_t APV_MAX_ADDRESS
bool sistrip::FEDBufferBase::checkBufferFormat ( ) const
inline
bool sistrip::FEDBufferBase::checkCRC ( ) const
inline
bool sistrip::FEDBufferBase::checkHeaderType ( ) const
inline
bool sistrip::FEDBufferBase::checkLengthFromTrailer ( ) const
inline

Definition at line 1425 of file SiStripFEDBufferComponents.h.

Referenced by checkSummary().

1425 { return (bufferSize() == daqEventLengthInBytes()); }
bool sistrip::FEDBufferBase::checkMajorityAddresses ( ) const

Definition at line 1368 of file SiStripFEDBufferComponents.cc.

References feEnabled(), sistrip::FEUNITS_PER_FED, and majorityAddressErrorForFEUnit().

Referenced by checkSummary().

1368  {
1369  for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) {
1370  if (!feEnabled(iFE))
1371  continue;
1373  return false;
1374  }
1375  return true;
1376  }
bool majorityAddressErrorForFEUnit(const uint8_t internalFEUnitNum) const
static const uint16_t FEUNITS_PER_FED
bool feEnabled(const uint8_t internalFEUnitNum) const
bool sistrip::FEDBufferBase::checkNoExtraHeadersOrTrailers ( ) const
inline

Definition at line 1421 of file SiStripFEDBufferComponents.h.

Referenced by checkSummary().

1421  {
1422  return ((daqHeader_.boeNibble() == 0x5) && (daqTrailer_.eoeNibble() == 0xA));
1423  }
bool sistrip::FEDBufferBase::checkNoFEOverflows ( ) const
inline

Definition at line 1413 of file SiStripFEDBufferComponents.h.

Referenced by checkSummary().

bool sistrip::FEDBufferBase::checkNoSlinkCRCError ( ) const
inline

Definition at line 1415 of file SiStripFEDBufferComponents.h.

Referenced by checkSummary().

bool sistrip::FEDBufferBase::checkNoSLinkTransmissionError ( ) const
inline

Definition at line 1417 of file SiStripFEDBufferComponents.h.

Referenced by checkSummary().

bool sistrip::FEDBufferBase::checkNoUnexpectedSourceID ( ) const
inline

Definition at line 1419 of file SiStripFEDBufferComponents.h.

Referenced by checkSummary().

bool sistrip::FEDBufferBase::checkReadoutMode ( ) const
inline
bool sistrip::FEDBufferBase::checkSourceIDs ( ) const

Definition at line 1364 of file SiStripFEDBufferComponents.cc.

References daqSourceID(), sistrip::FED_ID_MAX, and sistrip::FED_ID_MIN.

Referenced by checkSummary().

1364  {
1365  return ((daqSourceID() >= FED_ID_MIN) && (daqSourceID() <= FED_ID_MAX));
1366  }
static const uint16_t FED_ID_MIN
static const uint16_t FED_ID_MAX
std::string sistrip::FEDBufferBase::checkSummary ( ) const
virtual

Reimplemented in sistrip::FEDBuffer.

Definition at line 1385 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 edmLumisInFiles::summary.

Referenced by sistrip::FEDBuffer::checkSummary(), and sistrip::operator<<().

1385  {
1386  std::ostringstream summary;
1387  summary << "Check buffer type valid: " << (checkBufferFormat() ? "passed" : "FAILED") << std::endl;
1388  summary << "Check header format valid: " << (checkHeaderType() ? "passed" : "FAILED") << std::endl;
1389  summary << "Check readout mode valid: " << (checkReadoutMode() ? "passed" : "FAILED") << std::endl;
1390  //summary << "Check APVe address valid: " << ( checkAPVEAddressValid() ? "passed" : "FAILED" ) << std::endl;
1391  summary << "Check FE unit majority addresses: " << (checkMajorityAddresses() ? "passed" : "FAILED") << std::endl;
1392  if (!checkMajorityAddresses()) {
1393  summary << "FEs with majority address error: ";
1394  unsigned int badFEs = 0;
1395  for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) {
1396  if (!feEnabled(iFE))
1397  continue;
1398  if (majorityAddressErrorForFEUnit(iFE)) {
1399  summary << uint16_t(iFE) << " ";
1400  badFEs++;
1401  }
1402  }
1403  summary << std::endl;
1404  summary << "Number of FE Units with bad addresses: " << badFEs << std::endl;
1405  }
1406  summary << "Check for FE unit buffer overflows: " << (checkNoFEOverflows() ? "passed" : "FAILED") << std::endl;
1407  if (!checkNoFEOverflows()) {
1408  summary << "FEs which overflowed: ";
1409  unsigned int badFEs = 0;
1410  for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) {
1411  if (feOverflow(iFE)) {
1412  summary << uint16_t(iFE) << " ";
1413  badFEs++;
1414  }
1415  }
1416  summary << std::endl;
1417  summary << "Number of FE Units which overflowed: " << badFEs << std::endl;
1418  }
1419  summary << "Check for S-Link CRC errors: " << (checkNoSlinkCRCError() ? "passed" : "FAILED") << std::endl;
1420  summary << "Check for S-Link transmission error: " << (checkNoSLinkTransmissionError() ? "passed" : "FAILED")
1421  << std::endl;
1422  summary << "Check CRC: " << (checkCRC() ? "passed" : "FAILED") << std::endl;
1423  summary << "Check source ID is FED ID: " << (checkSourceIDs() ? "passed" : "FAILED") << std::endl;
1424  summary << "Check for unexpected source ID at FRL: " << (checkNoUnexpectedSourceID() ? "passed" : "FAILED")
1425  << std::endl;
1426  summary << "Check there are no extra headers or trailers: "
1427  << (checkNoExtraHeadersOrTrailers() ? "passed" : "FAILED") << std::endl;
1428  summary << "Check length from trailer: " << (checkLengthFromTrailer() ? "passed" : "FAILED") << std::endl;
1429  return summary.str();
1430  }
bool majorityAddressErrorForFEUnit(const uint8_t internalFEUnitNum) const
static const uint16_t FEUNITS_PER_FED
bool feEnabled(const uint8_t internalFEUnitNum) const
bool feOverflow(const uint8_t internalFEUnitNum) const
uint16_t sistrip::FEDBufferBase::daqBXID ( ) const
inline

Definition at line 1292 of file SiStripFEDBufferComponents.h.

Referenced by print().

uint16_t sistrip::FEDBufferBase::daqCRC ( ) const
inline

Definition at line 1300 of file SiStripFEDBufferComponents.h.

1300 { return daqTrailer_.crc(); }
uint32_t sistrip::FEDBufferBase::daqEventLengthIn64bitWords ( ) const
inline

Definition at line 1296 of file SiStripFEDBufferComponents.h.

uint32_t sistrip::FEDBufferBase::daqEventLengthInBytes ( ) const
inline

Definition at line 1298 of file SiStripFEDBufferComponents.h.

Referenced by print().

FEDDAQEventType sistrip::FEDBufferBase::daqEventType ( ) const
inline
FEDDAQHeader sistrip::FEDBufferBase::daqHeader ( ) const
inline
uint32_t sistrip::FEDBufferBase::daqLvl1ID ( ) const
inline

Definition at line 1290 of file SiStripFEDBufferComponents.h.

Referenced by print().

uint16_t sistrip::FEDBufferBase::daqSourceID ( ) const
inline

Definition at line 1294 of file SiStripFEDBufferComponents.h.

Referenced by checkSourceIDs(), and print().

FEDDAQTrailer sistrip::FEDBufferBase::daqTrailer ( ) const
inline

Definition at line 1282 of file SiStripFEDBufferComponents.h.

1282 { return daqTrailer_; }
FEDTTSBits sistrip::FEDBufferBase::daqTTSState ( ) const
inline

Definition at line 1302 of file SiStripFEDBufferComponents.h.

Referenced by print().

1302 { return daqTrailer_.ttsBits(); }
bool sistrip::FEDBufferBase::doChecks ( ) const
virtual
bool sistrip::FEDBufferBase::doDAQHeaderAndTrailerChecks ( ) const
inline
bool sistrip::FEDBufferBase::doTrackerSpecialHeaderChecks ( ) const
inline

Definition at line 1392 of file SiStripFEDBufferComponents.h.

Referenced by doChecks().

1392  {
1393  return (checkBufferFormat() && checkHeaderType() && checkReadoutMode() &&
1394  //checkAPVEAddressValid() &&
1395  checkNoFEOverflows());
1396  }
void sistrip::FEDBufferBase::dump ( std::ostream &  os) const
inline

Definition at line 1274 of file SiStripFEDBufferComponents.h.

References sistrip::printHex().

Referenced by sistrip::FEDSpyBuffer::delayChipGood().

void printHex(const void *pointer, const size_t length, std::ostream &os)
void sistrip::FEDBufferBase::dumpOriginalBuffer ( std::ostream &  os) const
inline

Definition at line 1276 of file SiStripFEDBufferComponents.h.

References sistrip::printHex().

void printHex(const void *pointer, const size_t length, std::ostream &os)
FEDStatusRegister sistrip::FEDBufferBase::fedStatusRegister ( ) const
inline

Definition at line 1377 of file SiStripFEDBufferComponents.h.

Referenced by sistrip::FEDBuffer::FEDBuffer(), and print().

1377 { return specialHeader_.fedStatusRegister(); }
FEDStatusRegister fedStatusRegister() const
TrackerSpecialHeader specialHeader_
bool sistrip::FEDBufferBase::feEnabled ( const uint8_t  internalFEUnitNum) const
inline
bool sistrip::FEDBufferBase::feOverflow ( const uint8_t  internalFEUnitNum) const
inline

Definition at line 1373 of file SiStripFEDBufferComponents.h.

Referenced by channelGood(), checkSummary(), sistrip::FEDBuffer::feGood(), and sistrip::FEDBuffer::feGoodWithoutAPVEmulatorCheck().

1373  {
1374  return specialHeader_.feOverflow(internalFEUnitNum);
1375  }
bool feOverflow(const uint8_t internalFEUnitNum) const
TrackerSpecialHeader specialHeader_
const uint8_t * sistrip::FEDBufferBase::getPointerToByteAfterEndOfPayload ( ) const
inlineprotected

Definition at line 1429 of file SiStripFEDBufferComponents.h.

Referenced by sistrip::FEDBuffer::FEDBuffer().

1429  {
1430  return orderedBuffer_ + bufferSize_ - 8;
1431  }
const uint8_t * sistrip::FEDBufferBase::getPointerToDataAfterTrackerSpecialHeader ( ) const
inlineprotected
FEDHeaderType sistrip::FEDBufferBase::headerType ( ) const
inline
void sistrip::FEDBufferBase::init ( const uint8_t *  fedBuffer,
const size_t  fedBufferSize,
const bool  allowUnrecognizedFormat 
)
private

Definition at line 1270 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, mps_fire::i, orderedBuffer_, originalBuffer_, specialHeader_, and contentValuesCheck::ss.

Referenced by FEDBufferBase().

1270  {
1271  //min buffer length. DAQ header, DAQ trailer, tracker special header.
1272  static const size_t MIN_BUFFER_SIZE = 8 + 8 + 8;
1273  //check size is non zero and data pointer is not NULL
1274  if (!originalBuffer_)
1275  throw cms::Exception("FEDBuffer") << "Buffer pointer is NULL.";
1276  if (bufferSize_ < MIN_BUFFER_SIZE) {
1277  std::ostringstream ss;
1278  ss << "Buffer is too small. "
1279  << "Min size is " << MIN_BUFFER_SIZE << ". "
1280  << "Buffer size is " << bufferSize_ << ". ";
1281  throw cms::Exception("FEDBuffer") << ss.str();
1282  }
1283 
1284  //construct tracker special header using second 64 bit word
1285  specialHeader_ = TrackerSpecialHeader(originalBuffer_ + 8);
1286 
1287  //check the buffer format
1289  if (bufferFormat == BUFFER_FORMAT_INVALID && !allowUnrecognizedFormat) {
1290  std::ostringstream ss;
1291  ss << "Buffer format not recognized. "
1292  << "Tracker special header: " << specialHeader_;
1293  throw cms::Exception("FEDBuffer") << ss.str();
1294  }
1295  //swap the buffer words so that the whole buffer is in slink ordering
1296  if ((bufferFormat == BUFFER_FORMAT_OLD_VME) || (bufferFormat == BUFFER_FORMAT_NEW)) {
1297  uint8_t* newBuffer = new uint8_t[bufferSize_];
1298  const uint32_t* originalU32 = reinterpret_cast<const uint32_t*>(originalBuffer_);
1299  const size_t sizeU32 = bufferSize_ / 4;
1300  uint32_t* newU32 = reinterpret_cast<uint32_t*>(newBuffer);
1301  if (bufferFormat == BUFFER_FORMAT_OLD_VME) {
1302  //swap whole buffer
1303  for (size_t i = 0; i < sizeU32; i += 2) {
1304  newU32[i] = originalU32[i + 1];
1305  newU32[i + 1] = originalU32[i];
1306  }
1307  }
1308  if (bufferFormat == BUFFER_FORMAT_NEW) {
1309  //copy DAQ header
1310  memcpy(newU32, originalU32, 8);
1311  //copy DAQ trailer
1312  memcpy(newU32 + sizeU32 - 2, originalU32 + sizeU32 - 2, 8);
1313  //swap the payload
1314  for (size_t i = 2; i < sizeU32 - 2; i += 2) {
1315  newU32[i] = originalU32[i + 1];
1316  newU32[i + 1] = originalU32[i];
1317  }
1318  }
1319  orderedBuffer_ = newBuffer;
1320  } //if ( (bufferFormat == BUFFER_FORMAT_OLD_VME) || (bufferFormat == BUFFER_FORMAT_NEW) )
1321  else {
1323  }
1324 
1325  //construct header object at begining of buffer
1326  daqHeader_ = FEDDAQHeader(orderedBuffer_);
1327  //construct trailer object using last 64 bit word of buffer
1328  daqTrailer_ = FEDDAQTrailer(orderedBuffer_ + bufferSize_ - 8);
1329  }
TrackerSpecialHeader specialHeader_
FEDBufferFormat bufferFormat() const
FEDLegacyReadoutMode sistrip::FEDBufferBase::legacyReadoutMode ( ) const
inline

Definition at line 1308 of file SiStripFEDBufferComponents.h.

Referenced by SiStripClusterizerFromRaw::run().

1308 { return specialHeader_.legacyReadoutMode(); }
FEDLegacyReadoutMode legacyReadoutMode() const
TrackerSpecialHeader specialHeader_
bool sistrip::FEDBufferBase::majorityAddressErrorForFEUnit ( const uint8_t  internalFEUnitNum) const
inline

Definition at line 1365 of file SiStripFEDBufferComponents.h.

Referenced by channelGood(), checkMajorityAddresses(), checkSummary(), and sistrip::FEDBuffer::feGood().

1365  {
1366  return (specialHeader_.majorityAddressErrorForFEUnit(internalFEUnitNum) && (specialHeader_.apveAddress() != 0x00));
1367  }
TrackerSpecialHeader specialHeader_
bool majorityAddressErrorForFEUnit(const uint8_t internalFEUnitNum) const
uint8_t sistrip::FEDBufferBase::nFEUnitsEnabled ( ) const

Definition at line 1355 of file SiStripFEDBufferComponents.cc.

References feEnabled(), sistrip::FEUNITS_PER_FED, and mps_fire::result.

Referenced by print().

1355  {
1356  uint8_t result = 0;
1357  for (uint8_t iFE = 0; iFE < FEUNITS_PER_FED; iFE++) {
1358  if (feEnabled(iFE))
1359  result++;
1360  }
1361  return result;
1362  }
static const uint16_t FEUNITS_PER_FED
bool feEnabled(const uint8_t internalFEUnitNum) const
uint8_t sistrip::FEDBufferBase::packetCode ( bool  legacy = false,
const uint8_t  internalFEDChannelNum = 0 
) const
inline

Definition at line 1312 of file SiStripFEDBufferComponents.h.

References ALCARECOPromptCalibProdSiPixelAli0T_cff::mode, sistrip::PACKET_CODE_PROC_RAW, sistrip::PACKET_CODE_SCOPE, sistrip::PACKET_CODE_VIRGIN_RAW, sistrip::PACKET_CODE_ZERO_SUPPRESSED, sistrip::READOUT_MODE_INVALID, sistrip::READOUT_MODE_LEGACY_INVALID, sistrip::READOUT_MODE_LEGACY_PREMIX_RAW, sistrip::READOUT_MODE_LEGACY_PROC_RAW_FAKE, sistrip::READOUT_MODE_LEGACY_PROC_RAW_REAL, sistrip::READOUT_MODE_LEGACY_SCOPE, sistrip::READOUT_MODE_LEGACY_SPY, sistrip::READOUT_MODE_LEGACY_VIRGIN_RAW_FAKE, sistrip::READOUT_MODE_LEGACY_VIRGIN_RAW_REAL, sistrip::READOUT_MODE_LEGACY_ZERO_SUPPRESSED_FAKE, sistrip::READOUT_MODE_LEGACY_ZERO_SUPPRESSED_LITE_FAKE, sistrip::READOUT_MODE_LEGACY_ZERO_SUPPRESSED_LITE_REAL, sistrip::READOUT_MODE_LEGACY_ZERO_SUPPRESSED_REAL, sistrip::READOUT_MODE_PREMIX_RAW, sistrip::READOUT_MODE_PROC_RAW, sistrip::READOUT_MODE_SCOPE, sistrip::READOUT_MODE_SPY, sistrip::READOUT_MODE_VIRGIN_RAW, sistrip::READOUT_MODE_ZERO_SUPPRESSED, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE10, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE10_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_BOTBOT, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_BOTBOT_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_CMOVERRIDE, sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_TOPBOT, and sistrip::READOUT_MODE_ZERO_SUPPRESSED_LITE8_TOPBOT_CMOVERRIDE.

Referenced by sistrip::FEDBuffer::checkChannelPacketCodes(), sistrip::FEDBuffer::checkSummary(), sistrip::FEDChannel::cmMedian(), and sistrip::FEDBuffer::getCorrectPacketCode().

1312  {
1313  if (legacy) {
1315  switch (mode) {
1317  return PACKET_CODE_SCOPE;
1320  return PACKET_CODE_VIRGIN_RAW;
1323  return PACKET_CODE_PROC_RAW;
1332  default:
1333  return 0;
1334  }
1335  } else {
1336  FEDReadoutMode mode = readoutMode();
1337  switch (mode) {
1338  case READOUT_MODE_SCOPE:
1339  return PACKET_CODE_SCOPE;
1342  case READOUT_MODE_PROC_RAW:
1343  return PACKET_CODE_PROC_RAW;
1355  case READOUT_MODE_SPY:
1356  case READOUT_MODE_INVALID:
1357  default:
1358  return 0;
1359  }
1360  }
1361  }
static const uint8_t PACKET_CODE_SCOPE
FEDReadoutMode readoutMode() const
uint8_t internalFEDChannelNum(const uint8_t internalFEUnitNum, const uint8_t internalFEUnitChannelNum)
static const uint8_t PACKET_CODE_ZERO_SUPPRESSED
FEDLegacyReadoutMode legacyReadoutMode() const
const FEDChannel & channel(const uint8_t internalFEDChannelNum) const
static const uint8_t PACKET_CODE_PROC_RAW
static const uint8_t PACKET_CODE_VIRGIN_RAW
void sistrip::FEDBufferBase::print ( std::ostream &  os) const
virtual

Reimplemented in sistrip::FEDSpyBuffer, and sistrip::FEDBuffer.

Definition at line 1337 of file SiStripFEDBufferComponents.cc.

References apveAddress(), bufferFormat(), bufferSize(), daqBXID(), daqEventLengthInBytes(), daqEventType(), daqLvl1ID(), daqSourceID(), daqTTSState(), fedStatusRegister(), headerType(), nFEUnitsEnabled(), sistrip::FEDStatusRegister::printFlags(), and readoutMode().

Referenced by sistrip::operator<<(), sistrip::FEDBuffer::print(), and sistrip::FEDSpyBuffer::print().

1337  {
1338  os << "buffer format: " << bufferFormat() << std::endl;
1339  os << "Buffer size: " << bufferSize() << " bytes" << std::endl;
1340  os << "Event length from DAQ trailer: " << daqEventLengthInBytes() << " bytes" << std::endl;
1341  os << "Source ID: " << daqSourceID() << std::endl;
1342  os << "Header type: " << headerType() << std::endl;
1343  os << "Readout mode: " << readoutMode() << std::endl;
1344  os << "DAQ event type: " << daqEventType() << std::endl;
1345  os << "TTS state: " << daqTTSState() << std::endl;
1346  os << "L1 ID: " << daqLvl1ID() << std::endl;
1347  os << "BX ID: " << daqBXID() << std::endl;
1348  os << "FED status register flags: ";
1350  os << std::endl;
1351  os << "APVe Address: " << uint16_t(apveAddress()) << std::endl;
1352  os << "Enabled FE units: " << uint16_t(nFEUnitsEnabled()) << std::endl;
1353  }
FEDReadoutMode readoutMode() const
void printFlags(std::ostream &os) const
FEDDAQEventType daqEventType() const
FEDHeaderType headerType() const
FEDStatusRegister fedStatusRegister() const
FEDBufferFormat bufferFormat() const
FEDReadoutMode sistrip::FEDBufferBase::readoutMode ( ) const
inline
uint16_t sistrip::FEDBufferBase::sourceID ( ) const
TrackerSpecialHeader sistrip::FEDBufferBase::trackerSpecialHeader ( ) const
inline

Definition at line 1286 of file SiStripFEDBufferComponents.h.

Referenced by sistrip::FEDBuffer::FEDBuffer().

1286 { return specialHeader_; }
TrackerSpecialHeader specialHeader_

Member Data Documentation

const size_t sistrip::FEDBufferBase::bufferSize_
private

Definition at line 691 of file SiStripFEDBufferComponents.h.

Referenced by init().

std::vector<FEDChannel> sistrip::FEDBufferBase::channels_
protected
FEDDAQHeader sistrip::FEDBufferBase::daqHeader_
private

Definition at line 692 of file SiStripFEDBufferComponents.h.

Referenced by init().

FEDDAQTrailer sistrip::FEDBufferBase::daqTrailer_
private

Definition at line 693 of file SiStripFEDBufferComponents.h.

Referenced by init().

const uint8_t* sistrip::FEDBufferBase::orderedBuffer_
private

Definition at line 690 of file SiStripFEDBufferComponents.h.

Referenced by init(), and ~FEDBufferBase().

const uint8_t* sistrip::FEDBufferBase::originalBuffer_
private

Definition at line 689 of file SiStripFEDBufferComponents.h.

Referenced by init(), and ~FEDBufferBase().

TrackerSpecialHeader sistrip::FEDBufferBase::specialHeader_
private

Definition at line 694 of file SiStripFEDBufferComponents.h.

Referenced by init().