7#ifndef LARBYTESTREAM_LARRODBLOCKPYSICSV2_H
8#define LARBYTESTREAM_LARRODBLOCKPYSICSV2_H
41#define LARBSDBG(text) m_logstr<<MSG::DEBUG<<text<<endmsg
73 static std::string
BlockType() {
return std::string(
"RodBlockPhysicsV2");}
80 virtual void setNextEnergy(
const int channel,
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain);
81 virtual void setRawData(
const int channel,
const std::vector<short>& samples,
const uint32_t gain);
93 template<
class RAWDATA>
94 bool operator () (
const RAWDATA* ch1,
const RAWDATA* ch2)
const;
100 virtual inline int setGain(
const int ) {
return 1; };
102 virtual inline int getNextEnergy(
int& channelNumber, int32_t& energy, int32_t& time,int32_t& quality,uint32_t& gain);
103 virtual int getNextRawData(
int& channelNumber, std::vector<short>& samples, uint32_t& gain);
106 virtual uint32_t
getRadd(uint32_t adc, uint32_t sample)
const;
107 virtual uint16_t
getCtrl1(uint32_t adc)
const;
108 virtual uint16_t
getCtrl2(uint32_t adc)
const;
109 virtual uint16_t
getCtrl3(uint32_t adc)
const;
142 void setNextEnergy(
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain);
147{
return (ch>>3) + ((ch&0x7)<<4);}
151 LARBSDBG(
"in LArRodBlockPhysicsV2::getEnergy.");
160 channelNumber=rodChannelNumber;
168 quality = gtQ & 0xffff;
174 gain=3-((
m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
176 LARBSDBG(
"Reading Raw data form High E block. E=" << energy <<
" Q=" << quality);
187 gain=3-((
m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
191 LARBSDBG(
"*** Reading Raw data form Low E block. E=" << energy);
#define LARBSDBG(text)
This class provides decoding/encoding from/to ROD format.
std::vector< uint32_t > m_LowEnergyBlock
std::vector< uint32_t > m_HighEnergyBlock
std::vector< uint32_t > m_RawDataBlock
unsigned short m_NFlaggingWords
virtual uint32_t hasPhysicsBlock() const
const uint32_t * m_GainPtr
static std::string BlockType()
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
virtual void setNumberOfSamples(const uint8_t n)
virtual bool canSetEnergy()
virtual bool canSetRawData()
virtual void setNumberOfGains(const uint8_t n)
virtual uint32_t getStatus() const
virtual int setGain(const int)
virtual uint16_t getCtrl2(uint32_t adc) const
virtual uint32_t hasRawDataBlock() const
virtual uint32_t getNumberOfSamples() const
LArRodBlockPhysicsV2(IMessageSvc *msgSvc)
bool operator()(const RAWDATA *ch1, const RAWDATA *ch2) const
const uint16_t * m_RawDataPtr
virtual void finalizeFEB()
virtual void initializeFragment(std::vector< uint32_t > &fragment)
virtual void setNextEnergy(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
const int16_t * m_LowEPtr
const LArOnlineID * m_onlineHelper
virtual void setRawData(const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual void concatinateFEBs()
virtual uint32_t getNumberOfGains() const
virtual uint16_t getCtrl1(uint32_t adc) const
virtual bool setPointers()
const uint32_t * m_RawDataFlagsPtr
virtual void resetPointers()
const int32_t * m_HighEPtr
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
virtual void sortDataVector(std::vector< const LArRawChannel * > &)
const uint32_t * m_FlagPtr
static const uint32_t m_DummyBitMap[4]
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
virtual uint16_t getCtrl3(uint32_t adc) const
int FebToRodChannel(int ch) const
virtual void initializeFEB(const uint32_t id)
virtual void sortDataVector(std::vector< const LArRawChannel * > &)
int getBit(const uint32_t *const p, const unsigned chan) const
LArRodBlockStructure(IMessageSvc *msgSvc, const std::string &blockType)
uint16_t LE_getHeader16(const unsigned n) const
singleton-like access to IMessageSvc via open function and helper