CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes | Friends

sistrip::FEDChannel Class Reference

#include <SiStripFEDBufferComponents.h>

List of all members.

Public Member Functions

uint16_t cmMedian (const uint8_t apvIndex) const
const uint8_t * data () const
 FEDChannel (const uint8_t *const data, const size_t offset, const uint16_t length)
 FEDChannel (const uint8_t *const data, const size_t offset)
uint16_t length () const
size_t offset () const

Private Member Functions

uint8_t packetCode () const

Private Attributes

const uint8_t * data_
uint16_t length_
size_t offset_

Friends

class FEDBuffer

Detailed Description

Definition at line 515 of file SiStripFEDBufferComponents.h.


Constructor & Destructor Documentation

sistrip::FEDChannel::FEDChannel ( const uint8_t *const  data,
const size_t  offset,
const uint16_t  length 
) [inline]

Definition at line 1566 of file SiStripFEDBufferComponents.h.

sistrip::FEDChannel::FEDChannel ( const uint8_t *const  data,
const size_t  offset 
) [inline]

Definition at line 1559 of file SiStripFEDBufferComponents.h.

References data_, length_, and offset_.

    : data_(data),
      offset_(offset)
    {
      length_ = ( data_[(offset_)^7] + (data_[(offset_+1)^7] << 8) );
    }

Member Function Documentation

uint16_t sistrip::FEDChannel::cmMedian ( const uint8_t  apvIndex) const

Definition at line 1385 of file SiStripFEDBufferComponents.cc.

References data_, Exception, offset_, sistrip::PACKET_CODE_ZERO_SUPPRESSED, packetCode(), and query::result.

Referenced by SiStripCMMonitorPlugin::analyze().

  {
    if (packetCode() != PACKET_CODE_ZERO_SUPPRESSED) {
      std::ostringstream ss;
      ss << "Request for CM median from channel with non-ZS packet code. "
         << "Packet code is " << uint16_t(packetCode()) << "."
         << std::endl;
      throw cms::Exception("FEDBuffer") << ss.str();
    }
    if (apvIndex > 1) {
      std::ostringstream ss;
      ss << "Channel APV index out of range when requesting CM median for APV. "
         << "Channel APV index is " << uint16_t(apvIndex) << "."
         << std::endl;
      throw cms::Exception("FEDBuffer") << ss.str();
    }
    uint16_t result = 0;
    //CM median is 10 bits with lowest order byte first. First APV CM median starts in 4th byte of channel data
    result |= data_[(offset_+3+2*apvIndex)^7];
    result |= ( ((data_[(offset_+4+2*apvIndex)^7]) << 8) & 0x300 );
    return result;
  }
const uint8_t * sistrip::FEDChannel::data ( ) const [inline]
uint16_t sistrip::FEDChannel::length ( ) const [inline]
size_t sistrip::FEDChannel::offset ( ) const [inline]
uint8_t sistrip::FEDChannel::packetCode ( ) const [inline, private]

Definition at line 1578 of file SiStripFEDBufferComponents.h.

References data_, and offset_.

Referenced by cmMedian().

    {
      return data_[(offset_+2)^7];
    }

Friends And Related Function Documentation

friend class FEDBuffer [friend]

Definition at line 526 of file SiStripFEDBufferComponents.h.


Member Data Documentation

const uint8_t* sistrip::FEDChannel::data_ [private]

Definition at line 529 of file SiStripFEDBufferComponents.h.

Referenced by cmMedian(), data(), FEDChannel(), and packetCode().

uint16_t sistrip::FEDChannel::length_ [private]

Definition at line 531 of file SiStripFEDBufferComponents.h.

Referenced by FEDChannel(), and length().

size_t sistrip::FEDChannel::offset_ [private]

Definition at line 530 of file SiStripFEDBufferComponents.h.

Referenced by cmMedian(), FEDChannel(), offset(), and packetCode().