7#ifndef LARBYTESTREAM_LARRODBLOCKPYSICSV3_H
8#define LARBYTESTREAM_LARRODBLOCKPYSICSV3_H
41#define LARBSDBG(text) m_logstr<<MSG::DEBUG<<text<<endmsg
46#define MYLEVEL (MSG::VERBOSE)
80 std::string
BlockType() {
return std::string(
"RodBlockPhysicsV3");}
87 virtual void setNextEnergy(
const int channel,
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain);
88 virtual void setRawData(
const int channel,
const std::vector<short>& samples,
const uint32_t gain);
89 virtual void setEx(
double Ex);
90 virtual void setEy(
double Ey);
91 virtual void setEz(
double Ez);
103 template<
class RAWDATA>
104 bool operator () (
const RAWDATA* ch1,
const RAWDATA* ch2)
const;
113 virtual inline int setGain(
const int ) {
return 1; };
115 virtual inline int getNextEnergy(
int& channelNumber, int32_t& energy, int32_t& time,int32_t& quality,uint32_t& gain);
116 virtual int getNextRawData(
int& channelNumber, std::vector<short>& samples, uint32_t& gain);
119 virtual uint32_t
getRadd(uint32_t adc, uint32_t sample)
const;
120 virtual uint16_t
getCtrl1(uint32_t adc)
const;
121 virtual uint16_t
getCtrl2(uint32_t adc)
const;
122 virtual uint16_t
getCtrl3(uint32_t adc)
const;
130 virtual inline int32_t
getEx()
const;
131 virtual inline int32_t
getEy()
const;
132 virtual inline int32_t
getEz()
const;
198 void setNextEnergy(
const uint16_t energy,
const int16_t time,
const int16_t quality,
const uint32_t gain);
203{
return (ch>>3) + ((ch&0x7)<<4);
208 LARBSDBG(
"in LArRodBlockPhysicsV3::getNextEnergy.");
217 channelNumber=(rodChannelNumber>>4) + ((rodChannelNumber&0xf)<<3);
222 uint16_t encodedEnergy;
227 LARBSDBG(
"-------->>>> in LArRodBlockPhysicsV3::getNextEnergy : decode energy.....");
232 if (encodedEnergy&0x8000)
sign=-1;
233 range = ((encodedEnergy)>>13)&0x0003;
235 aux = (int32_t) (encodedEnergy&0x1FFF);
236 if (range==1) aux=(aux<<3)+4;
237 else if (range==2) aux=(aux<<6)+32;
238 else if (range==3) aux=(aux<<9)+256;
243 gain=(uint32_t)((
m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
252 m_logstr <<MSG::DEBUG<<
"This cell has time and Quality information "<<
endmsg;
259 quality = (int32_t) (tQ & 0x003f);
274 m_logstr << MSG::DEBUG<<
" Encoded Energy ="<< encodedEnergy <<
" E=" << energy
278 <<
" channel Number=" << channelNumber
287 return (uint16_t) (*m_CounterPtr);
305 const uint32_t* copy32u =
reinterpret_cast<const uint32_t*
>(
m_CounterPtr+4);
311 const uint32_t* copy32u =
reinterpret_cast<const uint32_t*
>(
m_CounterPtr+6);
317 const uint32_t* aux =
reinterpret_cast<const uint32_t*
>(
m_CounterPtr+10);
330 aux = *
reinterpret_cast<const uint32_t *
>(
m_CounterPtr+8);
331 return (aux&0x01FFFFFF);
#define LARBSDBG(text)
This class provides decoding/encoding from/to ROD format.
virtual void resetPointers()
virtual uint16_t getCtrl3(uint32_t adc) const
virtual bool canSetRawData()
virtual void setOffTimeCut(uint16_t TimeCut)
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
uint16_t m_HottestCellIndex
const uint32_t * m_SumBlkPtr
const int16_t * m_RawDataPtr
virtual uint16_t getOfftimeThreshold() const
virtual void concatinateFEBs()
const uint32_t * m_GainPtr
virtual int setGain(const int)
virtual uint32_t hasControlWordBlock() const
virtual uint32_t getNumberOfSamples() const
std::vector< uint32_t > m_EnergyBlock
virtual void setEz(double Ez)
static const uint32_t m_DummyBitMap[4]
std::vector< uint32_t > m_RawDataBlock
virtual uint16_t getNumberOfHotCells() const
std::vector< uint32_t > m_CounterBlkBlock
std::vector< uint32_t > m_SumBlkBlock
virtual void setNextEnergy(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
virtual void setNumberOfSamples(const uint8_t n)
virtual bool canSetEnergy()
virtual int32_t getEz() const
LArRodBlockPhysicsV3(IMessageSvc *msgSvc)
std::vector< uint32_t > m_TimeQualityBlock
virtual uint32_t getHottestCellEnergy() const
virtual void initializeFragment(std::vector< uint32_t > &fragment)
virtual void setEy(double Ey)
virtual uint16_t getNumberOfHotCellsInTime() const
virtual uint32_t hasPhysicsBlock() const
bool operator()(const RAWDATA *ch1, const RAWDATA *ch2) const
virtual void initializeFEB(const uint32_t id)
std::vector< uint32_t > m_GainBlock
uint16_t m_EnergyThreshold
virtual uint32_t hasRawDataBlock() const
const int16_t * m_TimeQualityPtr
virtual void sortDataVector(std::vector< const LArRawChannel * > &)
const LArOnlineID * m_onlineHelper
virtual uint16_t getCtrl1(uint32_t adc) const
const uint16_t * m_CounterPtr
virtual uint32_t getNumberOfGains() const
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
const int16_t * m_FebInfoDataPtr
virtual uint16_t getHottestCellIndex()
int FebToRodChannel(int ch) const
virtual uint16_t getCtrl2(uint32_t adc) const
const uint32_t * m_RawDataFlagsPtr
uint16_t m_numberHotCellOffTime
std::vector< uint32_t > m_FebInfoBlock
virtual int32_t getEy() const
virtual bool setPointers()
virtual void setEThreshold(uint16_t thres)
virtual uint32_t getStatus() const
const uint16_t * m_EnergyPtr
uint32_t m_HottestCellEnergy
virtual int32_t getEx() const
virtual uint16_t getHotCellThreshold() const
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
virtual void finalizeFEB()
virtual void setEx(double Ex)
virtual void setRawData(const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual void setNumberOfGains(const uint8_t n)
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