8#ifndef LARBYTESTREAM_LARRODBLOCKSTRUCTURE_H
9#define LARBYTESTREAM_LARRODBLOCKSTRUCTURE_H
73 virtual void setNextEnergy(
const int channel,
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain);
74 virtual void setRawData(
const int channel,
const std::vector<short>& samples,
const uint32_t gain);
75 virtual void setRawDataFixed(
const int channel,
const std::vector<short>& samples,
const uint32_t gain);
76 virtual void setEtQ(
const int channel,
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain);
77 virtual void setDAC(
const uint16_t DACValue);
78 virtual void setDelay(
const uint16_t DelayValue);
79 virtual void setPulsed (
const unsigned channelNumber);
82 virtual void setEx(
double);
83 virtual void setEy(
double);
84 virtual void setEz(
double);
90 virtual void sortDataVector( std::vector<const LArAccumulatedCalibDigit*>& );
91 virtual void sortDataVector( std::vector<const LArAccumulatedDigit*>& );
106 inline bool setFragment(
const uint32_t* p, uint32_t n);
113 virtual inline int32_t
getEx()
const;
114 virtual inline int32_t
getEy()
const;
115 virtual inline int32_t
getEz()
const;
116 virtual inline int32_t
getSumE()
const;
118 virtual inline int32_t
getVROBEx()
const;
119 virtual inline int32_t
getVROBEy()
const;
120 virtual inline int32_t
getVROBEz()
const;
128 virtual inline int getNextEnergy(
int& channelNumber, int32_t& energy, int32_t& time,int32_t& quality,uint32_t& gain);
129 virtual int getNextRawData(
int& channelNumber, std::vector<short>& samples, uint32_t& gain);
130 virtual int getNextAccumulatedCalibDigit(
int& channelNumber, std::vector < uint64_t >& SamplesSum, std::vector < uint64_t >& Samples2Sum, uint32_t& nStepTriggers, uint32_t& gain);
131 virtual int getNextAccumulatedDigit(
int& channelNumber, std::vector<uint64_t>& SamplesSum, std::vector < uint64_t >& corr2Sum, uint32_t& gain);
134 virtual inline bool getPulsed(
unsigned channelNumber)
const;
135 virtual inline uint16_t
getDAC()
const;
136 virtual inline uint16_t
getDelay()
const;
139 virtual inline uint16_t
getNStep()
const;
142 virtual int setGain(
const int GainValue);
153 virtual uint32_t
getRadd(uint32_t adc, uint32_t sample)
const;
154 virtual uint16_t
getCtrl1(uint32_t adc)
const;
155 virtual uint16_t
getCtrl2(uint32_t adc)
const;
156 virtual uint16_t
getCtrl3(uint32_t adc)
const;
176 {
return (ch>>3) + ((ch&0x7)<<4); };
182 inline void setHeader16(
const unsigned n,
const uint16_t w);
183 inline void setHeader32(
const unsigned n,
const uint32_t w);
194 inline uint16_t
getHeader16(
const unsigned n)
const;
195 inline uint32_t
getHeader32(
const unsigned n)
const;
202 inline void setBit(uint32_t *
const p,
const unsigned chan);
203 inline int getBit(
const uint32_t *
const p,
const unsigned chan)
const;
233 typedef std::map<uint32_t, std::vector<uint32_t> >
FEBMAPTYPE;
258 uint32_t BlockSize = 0;
261 std::cout <<
"Error while decoding LArByteStream: Got Rod block size 0" << std::endl;
267 std::cout <<
"Error while decoding LArByteStream: Found FEB block of size " << BlockSize <<
" in a ROD block of size " << n << std::endl;
286 if ( n<2 ) { std::cout <<
"Error" << std::endl;
return 0;}
290 std::cout <<
"Error AGAIN" << std::endl;
370 return (std::as_const(*m_vFragment).at(n>>1) & 0xffff);
372 return (std::as_const(*m_vFragment).at(n>>1) >> 16);
382#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
384 std::cout <<
"Error WRITE BEYOND ARRAY BONDARY!" << std::endl;
396#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
398 std::cout <<
"Error WRITE BEYOND ARRAY BONDARY!" << std::endl;
407 return (
reinterpret_cast<const uint16_t*
>(
m_FebBlock))[n];
412 const uint32_t* data32 = std::as_const(*m_vFragment).data();
413 const uint16_t* data16 =
reinterpret_cast<const uint16_t*
> (data32);
419#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
421 std::cout <<
"LArRodBlockStructure::LE_setHeader16 Error: WRITE BEYOND ARRAY BONDARY!" << std::endl;
425 reinterpret_cast<uint16_t*
>(
m_vFragment->data())[n] = w;
440 return (*(p+
a)>>
r) & 0x1;
458 std::cout <<
"Error: Function getNextEnergy not implemented in this instance of LArRodBlockStructure!\n";
464 std::cout <<
"Error: Function getPulsed not implemented in this instance of LArRodBlockStructure!\n";
470 std::cout <<
"Error: Function getDAC not implemented in this instance of LArRodBlockStructure!\n";
476 std::cout <<
"Error: Function getDelay not implemented in this instance of LArRodBlockStructure!\n";
482 std::cout <<
"Error: Function getNTrigger not implemented in this instance of LArRodBlockStructure!\n";
488 std::cout <<
"Error: Function getStepIndex not implemented in this instance of LArRodBlockStructure!\n";
493 std::cout <<
"Error: Function getNStep not implemented in this instance of LArRodBlockStructure!\n";
503 if ( LeftSize<=0 )
return false;
508 if (BlockSize>LeftSize) {
509 std::cout <<
"Error while decoding LArByteStream: Found FEB block of size " << BlockSize <<
" in a ROD block of size " << LeftSize << std::endl;
Data class for calibration ADC samples preprocessed by the DSP.
Data class for ADC samples and autocorr preprocessed by the DSP.
Base class for LArDigits taken during calibration runs.
Liquid Argon digit base class.
Liquid Argon ROD output object base class.
virtual void sortDataVector(std::vector< const LArRawChannel * > &)
virtual bool canSetRawData()
virtual uint16_t getCtrl1(uint32_t adc) const
bool setFragment(const uint32_t *p, uint32_t n)
virtual uint32_t hasPhysicsBlock() const
virtual void dumpFragment()
virtual bool canSetRawDataFixed()
virtual uint16_t getNStep() const
virtual bool canSetEnergy()
virtual int32_t getEz() const
uint32_t m_virtualROBJump
virtual int32_t getVROBEx() const
unsigned int m_rearrangeFirstSample
virtual uint32_t hasCalibBlock() const
virtual void setRawDataFixed(const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual void setSumE(double)
virtual void setEy(double)
uint16_t getVectorHeader16(const unsigned n) const
virtual int32_t getVROBEy() const
virtual void setEtQ(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
virtual int32_t getVROBEz() const
virtual void setDAC(const uint16_t DACValue)
virtual uint16_t getDelay() const
const uint32_t * m_virtualROBPointerLocal
virtual int32_t getEy() const
virtual uint16_t getCtrl3(uint32_t adc) const
virtual uint16_t getResults1Size() const
virtual bool getPulsed(unsigned channelNumber) const
int getBit(const uint32_t *const p, const unsigned chan) const
virtual void setTDCPhase(const uint8_t n)
virtual ~LArRodBlockStructure()
virtual uint16_t getDAC() const
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
bool report_error(void) const
virtual uint16_t getRawDataSize() const
virtual bool canSetNTrigger()
virtual uint32_t hasAccumBlock() const
uint16_t getHeader16(const unsigned n) const
virtual int getNextAccumulatedCalibDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &Samples2Sum, uint32_t &nStepTriggers, uint32_t &gain)
virtual uint32_t getNumberOfGains() const
void setHeader32(const unsigned n, const uint32_t w)
virtual void setEx(double)
virtual uint32_t hasRawDataBlock() const
virtual bool canSetCalibration()
virtual void resetPointers()
virtual int32_t getVROBSumE() const
uint16_t LE_getVectorHeader16(const unsigned n) const
virtual uint32_t getVROBFebId()
virtual void initializeFragment(std::vector< uint32_t > &fragment)
const uint32_t * m_virtualROBPointer
virtual void setNTrigger(const uint16_t NTrigger)
virtual uint32_t getDspCodeVersion() const
virtual void finalizeFEB()
void LE_setHeader16(const unsigned n, const uint16_t w)
virtual int FebToRodChannel(int ch) const
const uint32_t * m_RodBlock
virtual uint16_t getCtrl2(uint32_t adc) const
std::map< uint32_t, std::vector< uint32_t > > FEBMAPTYPE
virtual uint8_t getTDCPhase() const
uint32_t getFEBSN() const
uint32_t getHeader32(const unsigned n) const
virtual uint32_t getRadd(uint32_t adc, uint32_t sample) const
virtual void setPulsed(const unsigned channelNumber)
virtual bool setPointers()
const uint32_t * m_FebBlock
uint32_t getFEBID() const
virtual uint16_t getStepIndex() const
virtual bool canIncludeRawData()
virtual int32_t getSumE() const
virtual int32_t getEx() const
virtual uint16_t getNTrigger() const
void setBit(uint32_t *const p, const unsigned chan)
void setHeader16(const unsigned n, const uint16_t w)
uint32_t getVectorHeader32(const unsigned n) const
virtual void initializeFEB(const uint32_t id)
std::vector< uint32_t > * m_pRODblock
unsigned short m_iHeadBlockSize
virtual int setGain(const int GainValue)
virtual void setDelay(const uint16_t DelayValue)
virtual uint32_t offlineCheckSum() const
static const uint32_t m_OfflineToRawGainMap[3]
uint32_t OfflineToRawGain(const uint32_t gain) const
void setFirstSample(const int rearrangeFirstSample)
virtual void setNumberOfSamples(const uint8_t n)
std::vector< uint32_t > * m_vFragment
static const uint32_t m_RawToOfflineGainMap[4]
virtual uint16_t getNbSweetCells2() const
virtual void setRawData(const int channel, const std::vector< short > &samples, const uint32_t gain)
int32_t m_MiddleHeaderSize
virtual uint32_t getNumberOfSamples() const
virtual void setNumberOfGains(const uint8_t n)
virtual uint32_t hasControlWords() const
virtual int getNextRawData(int &channelNumber, std::vector< short > &samples, uint32_t &gain)
virtual void setEz(double)
virtual int setFragmentVirtualROB(const uint32_t *p, uint32_t n)
virtual uint32_t getStatus() const
uint16_t LE_getHeader16(const unsigned n) const
uint32_t RawToOfflineGain(const uint32_t gain) const
virtual void setNextEnergy(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
virtual void concatinateFEBs()
uint32_t getNumberOfWords() const
virtual uint16_t getResults2Size() const
virtual uint16_t getNbSweetCells1() const
virtual int32_t getDspEventCounter() const
virtual uint32_t onlineCheckSum() const
virtual int getNextAccumulatedDigit(int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &corr2Sum, uint32_t &gain)