CMS 3D CMS Logo

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

#include <SiStripFEDSpyBuffer.h>

Public Member Functions

uint16_t adc () const
 
 FEDSpyChannelUnpacker (const FEDChannel &channel)
 
bool hasData () const
 
FEDSpyChannelUnpackeroperator++ ()
 
FEDSpyChannelUnpackeroperator++ (int)
 
uint16_t sampleNumber () const
 

Private Attributes

size_t currentOffset_
 
uint16_t currentSample_
 
const uint32_t * data_
 
uint16_t valuesLeft_
 

Detailed Description

Definition at line 68 of file SiStripFEDSpyBuffer.h.

Constructor & Destructor Documentation

sistrip::FEDSpyChannelUnpacker::FEDSpyChannelUnpacker ( const FEDChannel channel)
inlineexplicit

Definition at line 90 of file SiStripFEDSpyBuffer.h.

91  : data_(reinterpret_cast<const uint32_t*>(channel.data())),
92  currentOffset_(channel.offset()),
93  currentSample_(0),
94  valuesLeft_(channel.length()) {}

Member Function Documentation

uint16_t sistrip::FEDSpyChannelUnpacker::adc ( ) const

Definition at line 142 of file SiStripFEDSpyBuffer.cc.

Referenced by sistrip::SpyUnpacker::createDigis().

142  {
143  const size_t offsetWords = currentOffset_ / 32;
144  const uint8_t offsetBits = currentOffset_ % 32;
145  if (offsetBits < 23) {
146  return ((data_[offsetWords] >> (32 - 10 - offsetBits)) & 0x3FF);
147  } else {
148  return (((data_[offsetWords] << (10 - 32 + offsetBits)) & 0x3FF) |
149  ((data_[offsetWords + 1] & (0xFFC00000 << (32 - offsetBits))) >> (64 - 10 - offsetBits)));
150  }
151  }
bool sistrip::FEDSpyChannelUnpacker::hasData ( ) const
inline

Definition at line 98 of file SiStripFEDSpyBuffer.h.

References valuesLeft_.

Referenced by sistrip::SpyUnpacker::createDigis().

98 { return (valuesLeft_ != 0); }
FEDSpyChannelUnpacker & sistrip::FEDSpyChannelUnpacker::operator++ ( void  )
inline

Definition at line 100 of file SiStripFEDSpyBuffer.h.

References currentOffset_, currentSample_, and valuesLeft_.

100  {
102  currentSample_++;
103  valuesLeft_--;
104  return (*this);
105  }
static const uint16_t FEDCH_PER_DELAY_CHIP
FEDSpyChannelUnpacker & sistrip::FEDSpyChannelUnpacker::operator++ ( int  )
inline

Definition at line 107 of file SiStripFEDSpyBuffer.h.

107  {
108  ++(*this);
109  return *this;
110  }
uint16_t sistrip::FEDSpyChannelUnpacker::sampleNumber ( ) const
inline

Definition at line 96 of file SiStripFEDSpyBuffer.h.

References currentSample_.

Member Data Documentation

size_t sistrip::FEDSpyChannelUnpacker::currentOffset_
private

Definition at line 79 of file SiStripFEDSpyBuffer.h.

Referenced by operator++().

uint16_t sistrip::FEDSpyChannelUnpacker::currentSample_
private

Definition at line 80 of file SiStripFEDSpyBuffer.h.

Referenced by operator++(), and sampleNumber().

const uint32_t* sistrip::FEDSpyChannelUnpacker::data_
private

Definition at line 78 of file SiStripFEDSpyBuffer.h.

uint16_t sistrip::FEDSpyChannelUnpacker::valuesLeft_
private

Definition at line 81 of file SiStripFEDSpyBuffer.h.

Referenced by hasData(), and operator++().