7#ifndef LARBYTESTREAM_LARRODBLOCKPHYSICSV4_H
8#define LARBYTESTREAM_LARRODBLOCKPHYSICSV4_H
25#define MYLEVEL (MSG::FATAL)
26#define LARBSDBG(text) logstr<<MYLEVEL<<text<<endmsg
62 std::string
BlockType() {
return std::string(
"RodBlockPhysicsV4");}
68 virtual inline int getNextEnergy(
int& channelNumber, int32_t& energy, int32_t& time,int32_t& quality,uint32_t& gain);
69 virtual int getNextRawData(
int& channelNumber, std::vector<short>& samples, uint32_t& gain);
75 virtual uint32_t
getRadd(uint32_t adc, uint32_t sample)
const;
76 virtual uint16_t
getCtrl1(uint32_t adc)
const;
77 virtual uint16_t
getCtrl2(uint32_t adc)
const;
78 virtual uint16_t
getCtrl3(uint32_t adc)
const;
91 virtual inline int32_t
getEx()
const;
92 virtual inline int32_t
getEy()
const;
93 virtual inline int32_t
getEz()
const;
97 virtual inline int setGain(
const int ) {
return 1; };
138 #ifdef LARBSDBGOUTPUT
142 LARBSDBG(
"in LArRodBlockPhysicsV4::getNextEnergy.");
150 channelNumber=((rodChannelNumber&0xe)<<2) + ((rodChannelNumber&0x1)<<6) + (rodChannelNumber>>4);
155 uint16_t encodedEnergy;
160 LARBSDBG(
"-------->>>> in LArRodBlockPhysicsV4::getNextEnergy : decode energy.....");
165 aux = (int32_t) (encodedEnergy&0x1fff);
166 range = (encodedEnergy & 0xc000) >> 14;
167 sign = encodedEnergy & 0x2000;
186 logstr <<
MYLEVEL <<
"This cell has time and Quality information "<<
endmsg;
199 logstr <<
MYLEVEL <<
" Encoded Energy ="<< MSG::hex << encodedEnergy << MSG::dec <<
" E=" << energy
203 <<
" channel Number=" << channelNumber
242 uint16_t encodedEnergy;
250 if (encodedEnergy&0x8000)
sign=-1;
251 range = ((encodedEnergy)>>13)&0x0003;
253 aux = (int32_t) (encodedEnergy&0x1FFF);
254 if (range==1)
aux=(
aux<<3)+4;
255 else if (range==2)
aux=(
aux<<6)+32;
256 else if (range==3)
aux=(
aux<<9)+256;
#define LARBSDBG(text)
This class provides decoding/encoding from/to ROD format.
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 hasCalibBlock() const
uint16_t getFebConfig() const
virtual int setGain(const int)
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
virtual int32_t getEy() const
uint16_t getFirstSampleIndex() const
const uint16_t * m_HotCellsPointer
virtual int16_t getHottestCellIndex()
virtual int32_t getEx() const
virtual void resetPointers()
virtual uint32_t getNumberOfSamples() const
virtual uint16_t getResults2Size() const
const uint16_t * m_EnergyPointer
virtual uint32_t onlineCheckSum() const
virtual uint32_t hasRawDataBlock() 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
virtual uint32_t hasControlWords() const
virtual bool canSetCalibration()
virtual uint16_t getNumberOfHotCells() const
virtual int32_t getHottestCellEnergy() const
virtual uint32_t hasPhysicsBlock() const
virtual int32_t getEz() const
uint16_t getHeader16(const unsigned n) const
uint32_t RawToOfflineGain(const uint32_t gain) const
IMessageSvc * getMessageSvc(bool quiet=false)