7#ifndef LARBYTESTREAM_LARRODBLOCKPHYSICSV4_H
8#define LARBYTESTREAM_LARRODBLOCKPHYSICSV4_H
25#define MYLEVEL (MSG::FATAL)
26#define LARBSDBG(text) logstr<<MYLEVEL<<text<<endmsg
62 static 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);
154 uint16_t encodedEnergy;
159 LARBSDBG(
"-------->>>> in LArRodBlockPhysicsV4::getNextEnergy : decode energy.....");
164 aux = (int32_t) (encodedEnergy&0x1fff);
165 range = (encodedEnergy & 0xc000) >> 14;
166 sign = encodedEnergy & 0x2000;
185 logstr <<
MYLEVEL <<
"This cell has time and Quality information "<<
endmsg;
198 logstr <<
MYLEVEL <<
" Encoded Energy ="<< MSG::hex << encodedEnergy << MSG::dec <<
" E=" << energy
202 <<
" channel Number=" << channelNumber
241 uint16_t encodedEnergy;
249 if (encodedEnergy&0x8000)
sign=-1;
250 range = ((encodedEnergy)>>13)&0x0003;
252 aux = (int32_t) (encodedEnergy&0x1FFF);
253 if (range==1) aux=(aux<<3)+4;
254 else if (range==2) aux=(aux<<6)+32;
255 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
static std::string BlockType()
virtual uint32_t onlineCheckSum() const
virtual uint32_t hasRawDataBlock() 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
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
LArRodBlockStructure(IMessageSvc *msgSvc, const std::string &blockType)
uint32_t RawToOfflineGain(const uint32_t gain) const
IMessageSvc * getMessageSvc(bool quiet=false)