CMS 3D CMS Logo

Public Member Functions | Static Public Attributes | Private Attributes

HcalDCCHeader Class Reference

#include <HcalDCCHeader.h>

List of all members.

Public Member Functions

unsigned short BOEshouldBe5Always () const
short BOEshouldBeZeroAlways () const
void clear ()
void copySpigotData (unsigned int spigot_id, const HcalHTRData &data, bool valid=true, unsigned char LRB_error_word=0)
 Add the given HcalHTRData as the given spigot's data. This should be done in increasing spigot order!
int getAcceptTimeTTS () const
int getBunchId () const
bool getBxMismatchWithDCC (unsigned int nspigot) const
 Read the "BxID FAILS TO MATCH WITH DCC" bit for this spigot.
int getByte1Zeroes () const
int getByte3Zeroes () const
int getByte567Zeroes () const
HcalCalibrationEventType getCalibType () const
unsigned short getCDFEventType () const
short getCDFversionNumber () const
short getDCCDataFormatVersion () const
unsigned long getDCCEventNumber () const
int getDCCStatus () const
int getHTRStatusBits () const
unsigned char getLRBErrorBits (unsigned int nspigot) const
 Access the Link Receiver Board error bits (decoding tbd)
unsigned int getOrbitNumber () const
unsigned int getSlink64ReservedBits () const
int getSourceId () const
bool getSpigotCRCError (unsigned int nspigot) const
 Read the "CRC-Mismatch" bit for this spigot.
int getSpigotData (int nspigot, HcalHTRData &decodeTool, int validSize) const
void getSpigotData (int nspigot, HcalHTRData &decodeTool) const
unsigned int getSpigotDataLength (int nspigot) const
bool getSpigotDataTruncated (unsigned int nspigot) const
 Read the "TRUNCATED" bit for this spigot; LRB truncated data (took too long)
bool getSpigotEnabled (unsigned int nspigot) const
 Read the "ENABLED" bit for this spigot.
unsigned char getSpigotErrorBits (unsigned int nspigot) const
 Access the HTR error bits (decoding tbd)
bool getSpigotErrorFlag (int nspigot) const
bool getSpigotPresent (unsigned int nspigot) const
 Read the "PRESENT" bit for this spigot.
int getSpigotSummary (int nspigot) const
bool getSpigotValid (unsigned int nspigot) const
 Read the "VALID" bit for this spigot; TTC EvN matched HTR EvN.
unsigned int getTotalLengthBytes () const
 HcalDCCHeader ()
bool isCalibType () const
bool SawCT_BcN_MxMx () const
bool SawCT_EvN_MxMx () const
bool SawL1A_BcN_MxMx () const
bool SawL1A_EvN_MxMx () const
bool SawOrbitLengthErr () const
bool SawTTC_DoubErr () const
bool SawTTC_SingErr () const
bool SawTTS_BSY () const
bool SawTTS_OFW () const
bool SawTTS_SYN () const
void setHeader (int sourceid, int bcn, int l1aN, int orbN)
bool thereIsASecondCDFHeaderWord () const
bool thereIsAThirdCDFHeaderWord () const

Static Public Attributes

static const int SPIGOT_COUNT = 15

Private Attributes

unsigned int commondataformat0
unsigned int commondataformat1
unsigned int commondataformat2
unsigned int commondataformat3
unsigned int dcch0
unsigned int dcch1
unsigned int spigotInfo [18]

Detailed Description

Interpretive class for an HcalDCCHeader

Date:
2009/09/23 18:29:44
Revision:
1.9
Author:
J. Mans - UMD

Definition at line 19 of file HcalDCCHeader.h.


Constructor & Destructor Documentation

HcalDCCHeader::HcalDCCHeader ( )

Definition at line 14 of file HcalDCCHeader.cc.

Referenced by copySpigotData(), getSpigotData(), and getTotalLengthBytes().

{ }

Member Function Documentation

unsigned short HcalDCCHeader::BOEshouldBe5Always ( ) const [inline]

Get the inviolable '5' in the highest 4 bits of the CDF header.

Definition at line 42 of file HcalDCCHeader.h.

References commondataformat1.

Referenced by HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{ return ( (commondataformat1>>28) & 0x0F ); }
short HcalDCCHeader::BOEshouldBeZeroAlways ( ) const [inline]

Get the Beginning Of Event bits. If it's not the first or last CDF Slink64 word, the high 4 bits must be zero.

Definition at line 52 of file HcalDCCHeader.h.

References commondataformat3.

Referenced by HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{ return ( (commondataformat3>>28) & 0x0F); }
void HcalDCCHeader::clear ( void  )

clear the contents of this header

Definition at line 42 of file HcalDCCHeader.cc.

References commondataformat0, commondataformat1, commondataformat2, commondataformat3, dcch0, dcch1, i, and spigotInfo.

Referenced by HcalPacker::pack(), and CastorPacker::pack().

                          {
  commondataformat0=0;
  commondataformat1=0x50000000u;
  commondataformat2=0;
  commondataformat3=0;
  dcch0=0x1; // format version 1
  dcch1=0;
  for (int i=0; i<18; i++) 
    spigotInfo[i]=0;
}
void HcalDCCHeader::copySpigotData ( unsigned int  spigot_id,
const HcalHTRData data,
bool  valid = true,
unsigned char  LRB_error_word = 0 
)

Add the given HcalHTRData as the given spigot's data. This should be done in increasing spigot order!

Parameters:
spigot_id
spigot_data
validflag
LRB_error_word

Definition at line 58 of file HcalDCCHeader.cc.

References dcch0, HcalHTRData::getErrorsWord(), HcalHTRData::getRawData(), HcalHTRData::getRawLength(), getSpigotDataLength(), HcalDCCHeader(), i, SPIGOT_COUNT, and spigotInfo.

Referenced by HcalPacker::pack(), and CastorPacker::pack().

                                                                                                                            {
  if (spigot_id>=(unsigned int)SPIGOT_COUNT) return;
  // construct the spigot info
  spigotInfo[spigot_id]=(data.getRawLength()/2)|0xc000;
  if (valid) spigotInfo[spigot_id]|=0x2000;
  spigotInfo[spigot_id]|=(LRB_error_word<<16)|((data.getErrorsWord()&0xFF)<<24);
  // status info...
  if (valid) dcch0|=(1<<(spigot_id+14));
  // copy
  unsigned int lenSoFar=0;
  for (unsigned int i=0; i<spigot_id; i++) lenSoFar+=getSpigotDataLength(i);
  unsigned short* startingPoint=((unsigned short*)this)+sizeof(HcalDCCHeader)/sizeof(unsigned short)+lenSoFar*2;
  memcpy(startingPoint,data.getRawData(),sizeof(unsigned short)*data.getRawLength());
  // update the trailer...
  lenSoFar+=data.getRawLength()/2; // 32-bit words
  uint32_t* trailer=((uint32_t*)this)+sizeof(HcalDCCHeader)/sizeof(uint32_t)+lenSoFar;
  int len64=sizeof(HcalDCCHeader)/8+lenSoFar/2+1; 
  trailer[1]=0;
  trailer[0]=0xA0000000u|len64;
}
int HcalDCCHeader::getAcceptTimeTTS ( ) const [inline]

Definition at line 60 of file HcalDCCHeader.h.

References dcch0.

Referenced by HcalRawDataMonitor::unpack().

{ return ((dcch0>>8)& 0x0000000F); }
int HcalDCCHeader::getBunchId ( ) const [inline]

get the bunch id from the CDF header

Definition at line 36 of file HcalDCCHeader.h.

References commondataformat0.

Referenced by HcalRawDataMonitor::unpack().

{ return (commondataformat0>>20)&0xFFF; }
bool HcalDCCHeader::getBxMismatchWithDCC ( unsigned int  nspigot) const [inline]

Read the "BxID FAILS TO MATCH WITH DCC" bit for this spigot.

Definition at line 105 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by HcalRawDataMonitor::unpack().

{ return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x2000); }
int HcalDCCHeader::getByte1Zeroes ( ) const [inline]

Definition at line 61 of file HcalDCCHeader.h.

References dcch0.

{  return ((dcch0>>12)& 0x00000003); }
int HcalDCCHeader::getByte3Zeroes ( ) const [inline]

Definition at line 63 of file HcalDCCHeader.h.

References dcch0.

{  return ((dcch0>>29)& 0x00000007); }
int HcalDCCHeader::getByte567Zeroes ( ) const [inline]

Definition at line 65 of file HcalDCCHeader.h.

References dcch1.

{  return (dcch1 & 0xFF00FC00); }
HcalCalibrationEventType HcalDCCHeader::getCalibType ( ) const [inline]

Definition at line 56 of file HcalDCCHeader.h.

References commondataformat3.

Referenced by isCalibType().

{ return HcalCalibrationEventType ((commondataformat3>>24)&0x0000000F);}
unsigned short HcalDCCHeader::getCDFEventType ( ) const [inline]

Get the Event Type value (2007.11.03 - Not defined, but should stay consistent among events.)

Definition at line 40 of file HcalDCCHeader.h.

References commondataformat1.

Referenced by CastorDataIntegrityMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{ return ( (commondataformat1>>24) & 0x0F ); }
short HcalDCCHeader::getCDFversionNumber ( ) const [inline]

Get the Format Version of the Common Data Format

Definition at line 32 of file HcalDCCHeader.h.

References commondataformat0.

Referenced by HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{return ((commondataformat0>>4) & 0x0F); }
short HcalDCCHeader::getDCCDataFormatVersion ( ) const [inline]

Definition at line 59 of file HcalDCCHeader.h.

References dcch0.

Referenced by HcalRawDataMonitor::unpack().

{ return (dcch0 & 0xFF); }
unsigned long HcalDCCHeader::getDCCEventNumber ( ) const [inline]

get the Event Number from the CDF header

Definition at line 38 of file HcalDCCHeader.h.

References commondataformat1.

Referenced by HcalRawDataMonitor::unpack().

{ return (commondataformat1 & 0x00FFFFFF); }
int HcalDCCHeader::getDCCStatus ( ) const [inline]
int HcalDCCHeader::getHTRStatusBits ( ) const [inline]

Definition at line 62 of file HcalDCCHeader.h.

References dcch0.

{ return ((dcch0>>14)& 0x00007FFF); }
unsigned char HcalDCCHeader::getLRBErrorBits ( unsigned int  nspigot) const [inline]

Access the Link Receiver Board error bits (decoding tbd)

Definition at line 115 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by operator<<(), HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalEEUSMonitor::unpack().

{ return (nspigot>=15)?(0):((unsigned char)(spigotInfo[nspigot]>>16)); }
unsigned int HcalDCCHeader::getOrbitNumber ( ) const [inline]

Get the Orbit Number from the CDF.

Definition at line 48 of file HcalDCCHeader.h.

References commondataformat2, and commondataformat3.

Referenced by HcalRawDataMonitor::unpack(), and HcalEEUSMonitor::unpack().

{ return ( ((commondataformat3 && 0xF) << 28) + ( commondataformat2>>4) ); }
unsigned int HcalDCCHeader::getSlink64ReservedBits ( ) const [inline]

get the (undefined) 'Reserved' part of the second Slink64 CDF word

Definition at line 50 of file HcalDCCHeader.h.

References commondataformat3.

Referenced by HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{ return (  (commondataformat3>>4)&0x00FFFFFF ); }
int HcalDCCHeader::getSourceId ( ) const [inline]
bool HcalDCCHeader::getSpigotCRCError ( unsigned int  nspigot) const [inline]

Read the "CRC-Mismatch" bit for this spigot.

Definition at line 111 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by HcalRawDataMonitor::unpack(), CastorUnpacker::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalUnpacker::unpack().

{ return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x0400); }
int HcalDCCHeader::getSpigotData ( int  nspigot,
HcalHTRData decodeTool,
int  validSize 
) const

Load the given decoder with the pointer and length from this spigot Returns 0 on success Returns -1 if spigot points to data area beyond validSize

Definition at line 29 of file HcalDCCHeader.cc.

References HcalHTRData::adoptData(), HcalDCCHeader(), i, evf::evtn::offset(), and spigotInfo.

Referenced by HcalDigiMonitor::analyze(), DQMHcalPhiSymAlCaReco::analyze(), HcalMonitorModule::CheckSubdetectorStatus(), HcalEmptyEventFilter::filter(), getSpigotData(), HLTHcalNZSFilter::hltFilter(), HcalNZSMonitor::processEvent(), HcalTriggerPrimitiveAlgo::runFEFormatError(), HcalRawDataMonitor::unpack(), CastorUnpacker::unpack(), CastorDataIntegrityMonitor::unpack(), HcalEEUSMonitor::unpack(), and HcalUnpacker::unpack().

                                                                                          {
  const unsigned short* base=((unsigned short*)this)+sizeof(HcalDCCHeader)/sizeof(unsigned short);
  int offset=0,i,len=0;
  for (i=0; i<=nspigot; i++) {
    offset+=len;
    len=(spigotInfo[i]&0x3FF)*2;
  }
  if ((offset+len+sizeof(HcalDCCHeader)/sizeof(unsigned short))<(validSize/sizeof(unsigned short))) {
    decodeTool.adoptData(base+offset,len);
    return 0;
  } else { return -1; }
}
void HcalDCCHeader::getSpigotData ( int  nspigot,
HcalHTRData decodeTool 
) const

Old (unsafe) getSpigotData. All calls should be replaced by the new call. This call will generate WARN log messages.

Definition at line 23 of file HcalDCCHeader.cc.

References getSpigotData().

                                                                            {
  edm::LogWarning("HCAL-Unpacker") << "Using unsafe getSpigotData without length controls.  Not recommended!  Replace with new getSpigotData call";
  getSpigotData(nspigot,decodeTool,10000000);
}
unsigned int HcalDCCHeader::getSpigotDataLength ( int  nspigot) const [inline]

Get the size (in 32-bit words) of the data from this spigot

Definition at line 98 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by copySpigotData(), operator<<(), HcalRawDataMonitor::unpack(), and CastorDataIntegrityMonitor::unpack().

{ return (nspigot>=15)?(0):(spigotInfo[nspigot]&0x3ff); }
bool HcalDCCHeader::getSpigotDataTruncated ( unsigned int  nspigot) const [inline]

Read the "TRUNCATED" bit for this spigot; LRB truncated data (took too long)

Definition at line 109 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by HcalRawDataMonitor::unpack(), and CastorDataIntegrityMonitor::unpack().

{ return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x0800); }
bool HcalDCCHeader::getSpigotEnabled ( unsigned int  nspigot) const [inline]

Read the "ENABLED" bit for this spigot.

Definition at line 101 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by operator<<(), HcalRawDataMonitor::unpack(), and CastorDataIntegrityMonitor::unpack().

{ return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x8000); }
unsigned char HcalDCCHeader::getSpigotErrorBits ( unsigned int  nspigot) const [inline]

Access the HTR error bits (decoding tbd)

Definition at line 113 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by operator<<(), HcalRawDataMonitor::unpack(), and HcalEEUSMonitor::unpack().

{ return (nspigot>=15)?(0):((unsigned char)(spigotInfo[nspigot]>>24)); }
bool HcalDCCHeader::getSpigotErrorFlag ( int  nspigot) const [inline]

Get the value flagging a spigot's summary of error flags.

Definition at line 68 of file HcalDCCHeader.h.

References dcch0.

                                                    { 
    return (( dcch0>>(14+nspigot) )&0x0001);  }
bool HcalDCCHeader::getSpigotPresent ( unsigned int  nspigot) const [inline]
int HcalDCCHeader::getSpigotSummary ( int  nspigot) const [inline]

Get a given spigot summary from the DCC Header

Definition at line 84 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by HcalRawDataMonitor::unpack().

{ return spigotInfo[nspigot]; }
bool HcalDCCHeader::getSpigotValid ( unsigned int  nspigot) const [inline]

Read the "VALID" bit for this spigot; TTC EvN matched HTR EvN.

Definition at line 107 of file HcalDCCHeader.h.

References spigotInfo.

Referenced by operator<<(), and HcalRawDataMonitor::unpack().

{ return (nspigot>=15)?(false):(spigotInfo[nspigot]&0x1000); }
unsigned int HcalDCCHeader::getTotalLengthBytes ( ) const

Determine the expected total length of this packet in bytes

Definition at line 16 of file HcalDCCHeader.cc.

References HcalDCCHeader(), i, SPIGOT_COUNT, and spigotInfo.

                                                      { 
  unsigned int totalSize=sizeof(HcalDCCHeader);
  for (int i=0; i<SPIGOT_COUNT; i++) 
    totalSize+=(spigotInfo[i]&0x3FF)*4;
  return totalSize;
}
bool HcalDCCHeader::isCalibType ( ) const [inline]

Get the Calibration Type

Definition at line 55 of file HcalDCCHeader.h.

References getCalibType().

{ return ( 0 != getCalibType ());}
bool HcalDCCHeader::SawCT_BcN_MxMx ( ) const [inline]

Definition at line 78 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>6) & 0x00000001);}
bool HcalDCCHeader::SawCT_EvN_MxMx ( ) const [inline]

Definition at line 77 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>5) & 0x00000001);}
bool HcalDCCHeader::SawL1A_BcN_MxMx ( ) const [inline]

Definition at line 76 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>4) & 0x00000001);}
bool HcalDCCHeader::SawL1A_EvN_MxMx ( ) const [inline]

Definition at line 75 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>3) & 0x00000001);}
bool HcalDCCHeader::SawOrbitLengthErr ( ) const [inline]

Definition at line 79 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>7) & 0x00000001);}
bool HcalDCCHeader::SawTTC_DoubErr ( ) const [inline]

Definition at line 81 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>9) & 0x00000001);}
bool HcalDCCHeader::SawTTC_SingErr ( ) const [inline]

Definition at line 80 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>8) & 0x00000001);}
bool HcalDCCHeader::SawTTS_BSY ( ) const [inline]

Definition at line 73 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>1) & 0x00000001);}
bool HcalDCCHeader::SawTTS_OFW ( ) const [inline]

Get the status of these error counters in the DCC motherboard.

Definition at line 72 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>0) & 0x00000001);}
bool HcalDCCHeader::SawTTS_SYN ( ) const [inline]

Definition at line 74 of file HcalDCCHeader.h.

References getDCCStatus().

{ return ((getDCCStatus()>>2) & 0x00000001);}
void HcalDCCHeader::setHeader ( int  sourceid,
int  bcn,
int  l1aN,
int  orbN 
)

setup the header

Definition at line 53 of file HcalDCCHeader.cc.

References commondataformat0, and commondataformat1.

Referenced by HcalPacker::pack(), and CastorPacker::pack().

                                                                       {
  commondataformat0=0x8|((sourceid&0xFFF)<<8)|((bcn&0xFFF)<<20);
  commondataformat1=0x50000000u|(l1aN&0xFFFFFF);
}
bool HcalDCCHeader::thereIsASecondCDFHeaderWord ( ) const [inline]

get the bit indicating that another CDF header Slink64 word follows the first one.

Definition at line 30 of file HcalDCCHeader.h.

References commondataformat0.

Referenced by HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), HcalEEUSMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{return ((commondataformat0>>3) & 0x0001); }
bool HcalDCCHeader::thereIsAThirdCDFHeaderWord ( ) const [inline]

Check the third bit of second Slink64 CDF word

Definition at line 46 of file HcalDCCHeader.h.

References commondataformat2.

Referenced by HcalRawDataMonitor::unpack(), CastorDataIntegrityMonitor::unpack(), and HcalDataIntegrityTask::unpack().

{return ((commondataformat2>>3) & 0x0001); }

Member Data Documentation

unsigned int HcalDCCHeader::commondataformat0 [private]
unsigned int HcalDCCHeader::commondataformat1 [private]
unsigned int HcalDCCHeader::commondataformat2 [private]

Definition at line 135 of file HcalDCCHeader.h.

Referenced by clear(), getOrbitNumber(), and thereIsAThirdCDFHeaderWord().

unsigned int HcalDCCHeader::commondataformat3 [private]
unsigned int HcalDCCHeader::dcch0 [private]
unsigned int HcalDCCHeader::dcch1 [private]

Definition at line 138 of file HcalDCCHeader.h.

Referenced by clear(), getByte567Zeroes(), and getDCCStatus().

const int HcalDCCHeader::SPIGOT_COUNT = 15 [static]
unsigned int HcalDCCHeader::spigotInfo[18] [private]