CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Static Private Member Functions | Private Attributes
sistrip::FEDRawChannelUnpacker Class Reference

#include <SiStripFEDBuffer.h>

Public Member Functions

uint16_t adc () const
 
 FEDRawChannelUnpacker (const FEDChannel &channel)
 
bool hasData () const
 
FEDRawChannelUnpackeroperator++ ()
 
FEDRawChannelUnpackeroperator++ (int)
 
uint8_t sampleNumber () const
 

Static Public Member Functions

static FEDRawChannelUnpacker procRawModeUnpacker (const FEDChannel &channel)
 
static FEDRawChannelUnpacker scopeModeUnpacker (const FEDChannel &channel)
 
static FEDRawChannelUnpacker virginRawModeUnpacker (const FEDChannel &channel)
 

Static Private Member Functions

static void throwBadChannelLength (const uint16_t length)
 

Private Attributes

size_t currentOffset_
 
uint8_t currentStrip_
 
const uint8_t * data_
 
uint16_t valuesLeft_
 

Detailed Description

Definition at line 110 of file SiStripFEDBuffer.h.

Constructor & Destructor Documentation

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

Definition at line 168 of file SiStripFEDBuffer.h.

References sistrip::FEDChannel::length(), and throwBadChannelLength().

Referenced by procRawModeUnpacker(), scopeModeUnpacker(), and virginRawModeUnpacker().

169  : data_(channel.data()),
170  currentOffset_(channel.offset()+3),
171  currentStrip_(0),
172  valuesLeft_((channel.length()-3)/2)
173  {
174  if ((channel.length()-3)%2) throwBadChannelLength(channel.length());
175  }
static void throwBadChannelLength(const uint16_t length)

Member Function Documentation

uint16_t sistrip::FEDRawChannelUnpacker::adc ( ) const
inline

Definition at line 182 of file SiStripFEDBuffer.h.

References currentOffset_, and data_.

Referenced by sistrip::RawToDigiUnpacker::createDigis(), and sistrip::RawToClustersLazyUnpacker::fill().

183  {
184  return ( data_[currentOffset_^7] + ((data_[(currentOffset_+1)^7]&0x03)<<8) );
185  }
bool sistrip::FEDRawChannelUnpacker::hasData ( ) const
inline

Definition at line 187 of file SiStripFEDBuffer.h.

References valuesLeft_.

Referenced by sistrip::RawToDigiUnpacker::createDigis(), and sistrip::RawToClustersLazyUnpacker::fill().

188  {
189  return valuesLeft_;
190  }
FEDRawChannelUnpacker & sistrip::FEDRawChannelUnpacker::operator++ ( void  )
inline

Definition at line 192 of file SiStripFEDBuffer.h.

References currentOffset_, currentStrip_, and valuesLeft_.

193  {
194  currentOffset_ += 2;
195  currentStrip_++;
196  valuesLeft_--;
197  return (*this);
198  }
FEDRawChannelUnpacker & sistrip::FEDRawChannelUnpacker::operator++ ( int  )
inline

Definition at line 200 of file SiStripFEDBuffer.h.

201  {
202  ++(*this); return *this;
203  }
static FEDRawChannelUnpacker sistrip::FEDRawChannelUnpacker::procRawModeUnpacker ( const FEDChannel channel)
inlinestatic

Definition at line 115 of file SiStripFEDBuffer.h.

References FEDRawChannelUnpacker().

Referenced by sistrip::RawToDigiUnpacker::createDigis(), and sistrip::RawToClustersLazyUnpacker::fill().

115 { return FEDRawChannelUnpacker(channel); }
FEDRawChannelUnpacker(const FEDChannel &channel)
uint8_t sistrip::FEDRawChannelUnpacker::sampleNumber ( ) const
inline

Definition at line 177 of file SiStripFEDBuffer.h.

References currentStrip_.

178  {
179  return currentStrip_;
180  }
static FEDRawChannelUnpacker sistrip::FEDRawChannelUnpacker::scopeModeUnpacker ( const FEDChannel channel)
inlinestatic

Definition at line 113 of file SiStripFEDBuffer.h.

References FEDRawChannelUnpacker().

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

113 { return FEDRawChannelUnpacker(channel); }
FEDRawChannelUnpacker(const FEDChannel &channel)
void sistrip::FEDRawChannelUnpacker::throwBadChannelLength ( const uint16_t  length)
staticprivate

Definition at line 427 of file SiStripFEDBuffer.cc.

References edm::hlt::Exception.

Referenced by FEDRawChannelUnpacker().

428  {
429  std::ostringstream ss;
430  ss << "Channel length is invalid. Raw channels have 3 header bytes and 2 bytes per sample. "
431  << "Channel length is " << uint16_t(length) << "."
432  << std::endl;
433  throw cms::Exception("FEDBuffer") << ss.str();
434  }
static FEDRawChannelUnpacker sistrip::FEDRawChannelUnpacker::virginRawModeUnpacker ( const FEDChannel channel)
inlinestatic

Definition at line 114 of file SiStripFEDBuffer.h.

References FEDRawChannelUnpacker().

Referenced by sistrip::RawToDigiUnpacker::createDigis(), and sistrip::RawToClustersLazyUnpacker::fill().

114 { return FEDRawChannelUnpacker(channel); }
FEDRawChannelUnpacker(const FEDChannel &channel)

Member Data Documentation

size_t sistrip::FEDRawChannelUnpacker::currentOffset_
private

Definition at line 125 of file SiStripFEDBuffer.h.

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

uint8_t sistrip::FEDRawChannelUnpacker::currentStrip_
private

Definition at line 126 of file SiStripFEDBuffer.h.

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

const uint8_t* sistrip::FEDRawChannelUnpacker::data_
private

Definition at line 124 of file SiStripFEDBuffer.h.

Referenced by adc().

uint16_t sistrip::FEDRawChannelUnpacker::valuesLeft_
private

Definition at line 127 of file SiStripFEDBuffer.h.

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