11#include "GaudiKernel/MsgStream.h"
17#define MYLEVEL (MSG::FATAL)
18#define LARBSDBG(text) logstr<<MYLEVEL<<text<<endmsg
81 logstr <<
MYLEVEL <<
"***********************************************************************"<<
endmsg;
83 logstr <<
MYLEVEL <<
"************************************************************************"<<
endmsg;
94 logstr <<
MYLEVEL <<
"************************************************************************"<< MSG::dec <<
endmsg;
97 for(
int i=0;i<size;i++) {
102 logstr <<
MYLEVEL <<
"Mask Block size = " << MSG::hex << size <<
endmsg;
104 for(
int i=0;i<size;i++) {
119 logstr <<
MYLEVEL <<
"Let s go in getNextRawData..." <<
endmsg;
127 logstr <<
MYLEVEL <<
"Maximum number of channels reached" <<
endmsg;
133 logstr <<
MYLEVEL <<
"No Raw Data Block in this FEB" <<
endmsg;
140 channelNumber=((rodChannelNumber&0xe)<<2) + ((rodChannelNumber&0x1)<<6) + (rodChannelNumber>>4);
147 logstr <<
MYLEVEL <<
"This FEB has " << nsamples <<
" samples" <<
endmsg;
148 logstr <<
MYLEVEL <<
"This FEB has " << ngains <<
" gains" <<
endmsg;
151 if(ngains==0 || nsamples==0)
return 0;
152 int s_size = nsamples+1;
159 samples.push_back(s[0]);
160 for(
unsigned int i=0;i<nsamples/2;i++) {
163 samples.push_back(s[0]);
164 samples.push_back(s[1]);
170 logstr <<
MYLEVEL <<
" ===> FEB Channel = " << channelNumber <<
endmsg;
172 for(
int i=0;i<nsamples;i++)
173 logstr <<
MYLEVEL <<
" ===> sample " << i <<
" = " << samples[i] <<
endmsg;
180 unsigned rearrangeFirstSample=0;
185 if (rearrangeFirstSample && rearrangeFirstSample<samples.size())
187 short movedSample=samples[0];
188 for (
unsigned i=1;i<=rearrangeFirstSample;i++)
189 samples[i-1]=samples[i];
190 samples[rearrangeFirstSample]=movedSample;
227 if(sample==0)
index=6;
228 else if(sample & 0x1)
index=7+sample-1;
229 else index=7+sample+1;
231 if(adc>=8)
return x>>8;
278 for(
int i=0;i<end;i++) {
281 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
static std::string BlockType()
virtual uint32_t onlineCheckSum() const
virtual uint16_t getResults1Size() const
LArRodBlockPhysicsV4(IMessageSvc *msgSvc)
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
LArRodBlockStructure(IMessageSvc *msgSvc, const std::string &blockType)
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)