11#include "GaudiKernel/MsgStream.h"
19#define MYLEVEL (MSG::FATAL)
20#define LARBSDBG(text) logstr<<MYLEVEL<<text<<endmsg
82 logstr <<
MYLEVEL <<
"***********************************************************************"<<
endmsg;
84 logstr <<
MYLEVEL <<
"************************************************************************"<<
endmsg;
95 logstr <<
MYLEVEL <<
"************************************************************************"<< MSG::dec <<
endmsg;
98 for(
int i=0;i<size;i++) {
103 logstr <<
MYLEVEL <<
"Mask Block size = " << MSG::hex << size <<
endmsg;
105 for(
int i=0;i<size;i++) {
121 logstr <<
MYLEVEL <<
"Let s go in getNextRawData..." <<
endmsg;
129 logstr <<
MYLEVEL <<
"Maximum number of channels reached" <<
endmsg;
136 logstr <<
MYLEVEL <<
"No Raw Data Block in this FEB" <<
endmsg;
143 channelNumber=((rodChannelNumber&0xe)<<2) + ((rodChannelNumber&0x1)<<6) + (rodChannelNumber>>4);
150 logstr <<
MYLEVEL <<
"This FEB has " << nsamples <<
" samples" <<
endmsg;
151 logstr <<
MYLEVEL <<
"This FEB has " << ngains <<
" gains" <<
endmsg;
154 if(ngains==0 || nsamples==0)
return 0;
155 int s_size = nsamples+1;
162 samples.push_back(s[0]);
163 for(
unsigned int i=0;i<nsamples/2;i++) {
166 samples.push_back(s[0]);
167 samples.push_back(s[1]);
173 logstr <<
MYLEVEL <<
" ===> FEB Channel = " << channelNumber <<
endmsg;
175 for(
int i=0;i<nsamples;i++)
176 logstr <<
MYLEVEL <<
" ===> sample " << i <<
" = " << samples[i] <<
endmsg;
184 unsigned rearrangeFirstSample=0;
190 if (rearrangeFirstSample && rearrangeFirstSample<samples.size())
192 short movedSample=samples[0];
193 for (
unsigned i=1;i<=rearrangeFirstSample;i++)
194 samples[i-1]=samples[i];
195 samples[rearrangeFirstSample]=movedSample;
232 if(sample==0)
index=6;
233 else if(sample & 0x1)
index=7+sample-1;
234 else index=7+sample+1;
236 if(adc>=8)
return x>>8;
288 for(
int i=0;i<end;i++) {
292 return sum & 0x7fffffff;
const uint16_t * m_RawDataPointer
virtual uint16_t getCtrl2(uint32_t adc) const
const uint32_t * m_GainPointer
virtual uint16_t getCtrl1(uint32_t adc) const
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
uint16_t getFirstSampleIndex() const
const uint16_t * m_HotCellsPointer
virtual void resetPointers()
virtual uint32_t getNumberOfSamples() const
virtual uint16_t getResults2Size() const
const uint16_t * m_EnergyPointer
virtual uint32_t onlineCheckSum() const
virtual uint16_t getResults1Size() const
virtual bool setPointers()
const uint8_t * m_TowerPointer
const int32_t * m_SumPointer
virtual uint16_t getCtrl3(uint32_t adc) const
virtual uint32_t offlineCheckSum() const
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
virtual uint32_t getNumberOfGains() const
const uint32_t * m_MaskPointer
const uint16_t * m_TimeQualityPointer
virtual uint16_t getRawDataSize() const
virtual uint32_t getStatus() const
unsigned int m_rearrangeFirstSample
uint16_t getHeader16(const unsigned n) const
uint32_t getHeader32(const unsigned n) const
const uint32_t * m_FebBlock
unsigned short m_iHeadBlockSize
uint32_t RawToOfflineGain(const uint32_t gain) const
uint32_t getNumberOfWords() const
singleton-like access to IMessageSvc via open function and helper
IMessageSvc * getMessageSvc(bool quiet=false)