1 #ifndef EventFilter_SiStripRawToDigi_SiStripFEDBuffer_H
2 #define EventFilter_SiStripRawToDigi_SiStripFEDBuffer_H
4 #include "boost/cstdint.hpp"
24 FEDBuffer(
const uint8_t* fedBuffer,
const size_t fedBufferSize,
const bool allowBadBuffer =
false);
26 virtual void print(std::ostream& os)
const;
29 bool feGood(
const uint8_t internalFEUnitNum)
const;
33 bool fePresent(uint8_t internalFEUnitNum)
const;
35 virtual bool channelGood(
const uint8_t internalFEDannelNum)
const;
58 bool checkStatusBits(
const uint8_t internalFEUnitNum,
const uint8_t internalChannelNum)
const;
93 FEDZSChannelUnpacker(
const uint8_t* payload,
const size_t channelPayloadOffset,
const int16_t channelPayloadLength);
97 static void throwUnorderedData(
const uint8_t currentStrip,
const uint8_t firstStripOfNewCluster);
115 uint16_t
adc()
const;
150 return feHeader_->checkChannelStatusBits(internalFEDChannelNum);
161 : data_(channel.
data()),
162 currentOffset_(channel.
offset()+3),
164 valuesLeft_((channel.length()-3)/2)
194 ++(*this);
return *
this;
201 valuesLeftInCluster_(0),
202 channelPayloadOffset_(0),
203 channelPayloadLength_(0)
208 currentOffset_(channelPayloadOffset),
210 valuesLeftInCluster_(0),
211 channelPayloadOffset_(channelPayloadOffset),
212 channelPayloadLength_(channelPayloadLength)
219 uint16_t length = channel.
length();
227 uint16_t length = channel.
length();
267 ++(*this);
return *
this;
278 #endif //ndef EventFilter_SiStripRawToDigi_SiStripFEDBuffer_H
static FEDRawChannelUnpacker procRawModeUnpacker(const FEDChannel &channel)
std::auto_ptr< FEDFEHeader > feHeader_
bool checkFEUnitLengths() const
static FEDZSChannelUnpacker zeroSuppressedModeUnpacker(const FEDChannel &channel)
bool checkStatusBits(const uint8_t internalFEDChannelNum) const
static void throwBadChannelLength(const uint16_t length)
FEDBuffer(const uint8_t *fedBuffer, const size_t fedBufferSize, const bool allowBadBuffer=false)
virtual bool doCorruptBufferChecks() const
virtual void print(std::ostream &os) const
bool checkFEPayloadsPresent() const
static FEDRawChannelUnpacker scopeModeUnpacker(const FEDChannel &channel)
void readNewClusterInfo()
static FEDRawChannelUnpacker virginRawModeUnpacker(const FEDChannel &channel)
FEDRawChannelUnpacker(const FEDChannel &channel)
uint8_t internalFEDChannelNum(const uint8_t internalFEUnitNum, const uint8_t internalFEUnitChannelNum)
void throwBadClusterLength()
static void throwUnorderedData(const uint8_t currentStrip, const uint8_t firstStripOfNewCluster)
virtual bool doChecks() const
const FEDFEHeader * feHeader() const
bool fePresent_[FEUNITS_PER_FED]
const uint8_t * payloadPointer_
bool fePresent(uint8_t internalFEUnitNum) const
bool majorityAddressErrorForFEUnit(const uint8_t internalFEUnitNum) const
static const uint16_t FEUNITS_PER_FED
uint8_t sampleNumber() const
uint16_t channelPayloadLength_
virtual bool channelGood(const uint8_t internalFEDannelNum) const
virtual std::string checkSummary() const
unsigned int offset(bool)
uint8_t valuesLeftInCluster_
uint16_t channelPayloadOffset_
FEDRawChannelUnpacker & operator++()
bool checkChannelPacketCodes() const
uint8_t sampleNumber() const
FEDZSChannelUnpacker & operator++()
static FEDZSChannelUnpacker zeroSuppressedLiteModeUnpacker(const FEDChannel &channel)
uint8_t nFEUnitsPresent() const
bool checkFEUnitAPVAddresses() const
const uint8_t * data() const
uint8_t getCorrectPacketCode() const
bool checkChannelLengthsMatchBufferLength() const
bool checkAllChannelStatusBits() const
static void throwBadChannelLength(const uint16_t length)
uint16_t calculateFEUnitLength(const uint8_t internalFEUnitNumber) const
bool checkChannelLengths() const
bool feGood(const uint8_t internalFEUnitNum) const
bool feOverflow(const uint8_t internalFEUnitNum) const