ATLAS Offline Software
Loading...
Searching...
No Matches
LArRodBlockStructure.h
Go to the documentation of this file.
1//Dear emacs, this is -*- c++ -*-
2
3/*
4 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
5*/
6
7
8#ifndef LARBYTESTREAM_LARRODBLOCKSTRUCTURE_H
9#define LARBYTESTREAM_LARRODBLOCKSTRUCTURE_H
28
29// #include "eformat/RODHeader.h"
31#include <stdint.h>
32#include <iostream>
33#include <vector>
34#include <map>
35#include <utility>
36
37//#define LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
38
39//class LArCablingService;
40class LArOnlineID;
41class LArRawChannel;
42class LArDigit;
44class LArCalibDigit;
46
48{
49protected:
50 // ----------------- Header words indexes -----------------
51 enum {
52 NWTot, // Number of words in DSP block
54 FEBID, // FEB ID
56 FEBSN, // FEB Serial Number
58 endtag // This tag needs to be an odd number, see *) for constructor
59 };
60
61public :
62 // constructor
64 virtual ~LArRodBlockStructure();
65
66 // ----------------- Encoding methods -----------------
67 // Never to be used while decoding!
68 virtual void initializeFragment(std::vector<uint32_t>& fragment);
69 virtual void initializeFEB(const uint32_t id);
70 virtual void setNumberOfSamples(const uint8_t n);
71 virtual void setNumberOfGains(const uint8_t n);
72 virtual void setTDCPhase(const uint8_t n); //useful only TB SW validation
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);
80 virtual void setNTrigger (const uint16_t NTrigger);
81 virtual void finalizeFEB();
82 virtual void setEx(double);
83 virtual void setEy(double);
84 virtual void setEz(double);
85 virtual void setSumE(double);
86 //Function to sort RawData Container before encoding. Unfortunatly, virtal template member functions are not allowed.
87 virtual void sortDataVector(std::vector<const LArRawChannel*>& );
88 virtual void sortDataVector( std::vector<const LArDigit*>& );
89 virtual void sortDataVector( std::vector<const LArCalibDigit*>& );
90 virtual void sortDataVector( std::vector<const LArAccumulatedCalibDigit*>& );
91 virtual void sortDataVector( std::vector<const LArAccumulatedDigit*>& );
92 // build full ROD fragment
93 // virtual void concatinateFEBs(RODHeader* fullHeader=NULL);
94 virtual void concatinateFEBs( );
95 //Check features of this RodBlock
96 virtual bool canSetEnergy() { return false;}
97 virtual bool canSetRawData() {return false;}
98 virtual bool canSetRawDataFixed() {return false;}
99 virtual bool canSetCalibration() {return false;}
100 virtual bool canSetNTrigger() {return false;}
101 virtual bool canIncludeRawData() {return false;}
102
103 // ----------------- Decoding methods -----------------
104 // Never to be used while encoding!
105 // set full ROD fragment before trying to get anything!
106 inline bool setFragment(const uint32_t* p, uint32_t n);
107 // virtual bool nextFEB(RODHeader* fullHeader=NULL);
108 inline bool nextFEB ( );
109 inline uint32_t getNumberOfWords() const;
110 inline uint32_t getFEBID() const;
111 inline uint32_t getFEBSN() const;
112
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;
117 virtual inline uint32_t getVROBFebId();
118 virtual inline int32_t getVROBEx() const;
119 virtual inline int32_t getVROBEy() const;
120 virtual inline int32_t getVROBEz() const;
121 virtual inline int32_t getVROBSumE() const;
122 virtual inline uint32_t hasCalibBlock() const {return 0;} ;
123 virtual inline uint32_t hasAccumBlock() const {return 0;} ;
124 virtual inline uint32_t hasPhysicsBlock() const {return 0;} ;
125 virtual inline uint32_t hasRawDataBlock() const {return 0;} ;
126 virtual inline uint32_t hasControlWords() const {return 0;} ;
127
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);
132
133 // Get functions related to hasCalibBlock
134 virtual inline bool getPulsed(unsigned channelNumber) const;
135 virtual inline uint16_t getDAC() const;
136 virtual inline uint16_t getDelay() const;
137 virtual inline uint16_t getNTrigger() const;
138 virtual inline uint16_t getStepIndex() const;
139 virtual inline uint16_t getNStep() const;
140
141 virtual uint8_t getTDCPhase() const; //useful only TB SW validation
142 virtual int setGain(const int GainValue); //Define fixed gain in case of fixed gain mode.
143
144 virtual uint32_t getNumberOfSamples() const;
145 virtual uint32_t getNumberOfGains() const;
146
147 // Information access for Dsp and Feb headers decoding return 0 if information is absent
148 virtual uint16_t getResults1Size() const;
149 virtual uint16_t getResults2Size() const;
150 virtual uint16_t getRawDataSize() const;
151 virtual uint16_t getNbSweetCells1() const;
152 virtual uint16_t getNbSweetCells2() const;
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;
157 virtual uint32_t getStatus() const;
158 virtual uint32_t getDspCodeVersion() const;
159 virtual int32_t getDspEventCounter() const;
160
161 virtual uint32_t onlineCheckSum() const;
162 virtual uint32_t offlineCheckSum() const;
163 // To decode the virtual ROB fragment
164 virtual int setFragmentVirtualROB(const uint32_t* p, uint32_t n);
165
166 // print the full ROD fragment
167 virtual void dumpFragment();
168 inline void setFirstSample(const int rearrangeFirstSample)
169 {m_rearrangeFirstSample=rearrangeFirstSample;}
170
171 //inline uint32_t FebToOfflineGain(const uint32_t gain) const;
172 //inline uint32_t OfflineToFebGain(const uint32_t gain) const;
173 inline uint32_t RawToOfflineGain(const uint32_t gain) const;
174 inline uint32_t OfflineToRawGain(const uint32_t gain) const;
175 virtual inline int FebToRodChannel(int ch) const
176 { return (ch>>3) + ((ch&0x7)<<4); };
177 inline bool report_error ( void ) const { return m_error_next_feb;}
178
179 protected:
180 // ----------------- Encoding methods -----------------
181 // The following functions write to m_vFragment (vector)
182 inline void setHeader16(const unsigned n, const uint16_t w); // n should be choosen from the above enum
183 inline void setHeader32(const unsigned n, const uint32_t w); // n should be choosen from the above enum
184
185 // ----------------- Decoding methods -----------------
186 // The method to call to reset pointers and counters
187 virtual void resetPointers() { return; }
188 // The method to call to set pointers and counters
189 virtual bool setPointers() { return true;}
190 // The following functions read from m_vFragment (vector) (to be used during encoding)
191 inline uint16_t getVectorHeader16(const unsigned n) const; // n should be choosen from the above enum
192 inline uint32_t getVectorHeader32(const unsigned n) const; // n should be choosen from the above enum
193 // The following functions read from m_FebBlock (uint32_t*) (to be used during decoding)
194 inline uint16_t getHeader16(const unsigned n) const; // n should be choosen from the above enum
195 inline uint32_t getHeader32(const unsigned n) const; // n should be choosen from the above enum
196 // The following funcitons are Little Endian versions for backward compatibility
197 inline uint16_t LE_getHeader16(const unsigned n) const; // n should be choosen from the above enum
198 inline void LE_setHeader16(const unsigned n, const uint16_t w); // n should be choosen from the above enum
199 inline uint16_t LE_getVectorHeader16(const unsigned n) const; // n should be choosen from the above enum
200
201 // set/read the bitmap for a ROD channel
202 inline void setBit(uint32_t *const p, const unsigned chan);
203 inline int getBit(const uint32_t *const p, const unsigned chan) const;
204
205 // ----------------- Data members -----------------
206
207 int32_t m_Ex;
208 int32_t m_Ey;
209 int32_t m_Ez;
210 int32_t m_SumE;
211#ifndef NDEBUG
212 // In Debug mode, many messages are printed for the setEx/y/z method
213 // Let's avoid them
214 uint32_t m_numberOfEx;
215 uint32_t m_numberOfEy;
216 uint32_t m_numberOfEz;
218#endif
219
220 //Offsets for the fixed size Blocks..
221 unsigned short m_iHeadBlockSize;
222 //Only for encoding: Block for Header
223 //std::vector<uint32_t> m_HeaderBlock;
224 //Number of channels per FEB
226 //Full ROD fragment for decoding
227 const uint32_t* m_FebBlock; //Pointer to the first element of the current FEB-Fragement (used only for decoding!)
228 const uint32_t* m_RodBlock; //Pointer to the very beginning of the ROD-Block
231 std::vector<uint32_t> *m_vFragment; //Pointer to the vector that holds the current FEB-block (used only for encoding!)
232 std::vector<uint32_t> *m_pRODblock; //Pointer to the ROD data vector
233 typedef std::map<uint32_t, std::vector<uint32_t> > FEBMAPTYPE;
234 FEBMAPTYPE m_mFebBlocks; //Map of feb-Blocks (for encoding only);
235 //static uint32_t FebToOfflineGainMap[3];
236 //static uint32_t OfflineToFebGainMap[3];
237 static const uint32_t m_RawToOfflineGainMap[4];
238 static const uint32_t m_OfflineToRawGainMap[3];
240 // Free gain mode needs raw data to be rearranged
242 // error in the next FEB
244 // Jump from one virtual ROB
247 const uint32_t* m_virtualROBPointer;
249};
250
251// Implementation of inline-functions:
252inline bool LArRodBlockStructure::setFragment(const uint32_t* p, uint32_t n)
253{
255 m_FebBlock = p;
257 m_RodBlockSize = n;
258 uint32_t BlockSize = 0;
259
260 if (n==0) {
261 std::cout << "Error while decoding LArByteStream: Got Rod block size 0" << std::endl;
262 return false;
263 }
264
265 BlockSize = getNumberOfWords();
266 if (BlockSize>n) {
267 std::cout << "Error while decoding LArByteStream: Found FEB block of size " << BlockSize << " in a ROD block of size " << n << std::endl;
268 return false;
269 }
270 m_FebBlockSize = BlockSize;
271
272 m_error_next_feb = false;
273 //std::cout << "1: FEB found with size " << m_FebBlockSize << std::endl;
274
275 return setPointers();
276}
277
278/* Decode the virtual ROB fragment. If data is inconsistent with
279 data size, return 0 */
281 uint32_t n){
286 if ( n<2 ) { std::cout << "Error" << std::endl; return 0;}
287 m_virtualROBJump = ((*p)>>16)>>1; // Divide by two (two FEBs-1ROB)
288 m_ROB_to_decode = ( (*p) & 0xFFFF )<<1; // Multiply by two
289 if ( (n - m_virtualROBJump*m_ROB_to_decode-1) ){
290 std::cout << "Error AGAIN" << std::endl;
291 return 0;
292 }
293 m_virtualROBPointer = (uint32_t*)(p+1);
294 return m_ROB_to_decode;
295}
296
297inline uint32_t LArRodBlockStructure::getFEBID() const
298{return getHeader32(FEBID);}
299
300inline uint32_t LArRodBlockStructure::getFEBSN() const
301{return getHeader32(FEBSN);}
302
303inline int32_t LArRodBlockStructure::getEx() const {
304 return 0;
305}
306
307inline int32_t LArRodBlockStructure::getEy() const {
308 return 0;
309}
310
311inline int32_t LArRodBlockStructure::getEz() const {
312 return 0;
313}
314
315inline int32_t LArRodBlockStructure::getSumE() const {
316 return 0;
317}
318
320return 0;
321}
322
323inline int32_t LArRodBlockStructure::getVROBEx() const{
324return 0;
325}
326
327inline int32_t LArRodBlockStructure::getVROBEy() const{
328return 0;
329}
330
331inline int32_t LArRodBlockStructure::getVROBEz() const{
332return 0;
333}
334
336return 0;
337}
338
339/*
340inline int LArRodBlockStructure::FebToRodChannel(int ch) const
341 //{return ch/8 + 16 * (ch%8);}
342{return (ch>>3) + ((ch&0x7)<<4);}
343
344inline int LArRodBlockStructure::RodToFebChannel(int ch) const
345 //{return ch/16 + 8 * (ch%16);}
346{return (ch>>4) + ((ch&0xf)<<3);}
347*/
348
349inline uint32_t LArRodBlockStructure::RawToOfflineGain(const uint32_t gain) const
350{return m_RawToOfflineGainMap[gain];} //For efficency, don't check range
351
352inline uint32_t LArRodBlockStructure::OfflineToRawGain(const uint32_t gain) const
353{return m_OfflineToRawGainMap[gain];} //For efficency, don't check range
354
355inline uint16_t LArRodBlockStructure::getHeader16(const unsigned n) const // n should be choosen from the above enum
356{
357 // std::cout << "getHeader16: " << m_FebBlock << " " << m_FebBlock[5] << " "
358 // << n << " " << (n>>1) << " " << (m_FebBlock[5]&0xffff) << std::endl;
359 if (n&0x1) //n is a odd number
360 return m_FebBlock[n>>1] & 0xffff; //1,3,5... are fetched from lower bits
361 else //n is a even number
362 return m_FebBlock[n>>1] >> 16; //0,2,4... are fetched from higher bits
363}
364
365inline uint32_t LArRodBlockStructure::getHeader32(const unsigned n) const // n should be choosen from the above enum
366{return m_FebBlock[n>>1];}
367
368inline uint16_t LArRodBlockStructure::getVectorHeader16(const unsigned n) const // n should be choosen from the above enum
369{ if (n&0x1) //n is a odd number
370 return (std::as_const(*m_vFragment).at(n>>1) & 0xffff);
371 else //n is a even number
372 return (std::as_const(*m_vFragment).at(n>>1) >> 16);
373}
374
375inline uint32_t LArRodBlockStructure::getVectorHeader32(const unsigned n) const // n should be choosen from the above enum
376{
377 return (*m_vFragment)[n>>1];
378}
379
380inline void LArRodBlockStructure::setHeader16(const unsigned n, const uint16_t w)
381{
382#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
383 if ((unsigned)n>=m_vFragment->size()*2) {
384 std::cout << "Error WRITE BEYOND ARRAY BONDARY!" << std::endl;
385 std::abort();
386 }
387#endif
388 if (n&0x1) // n is a odd number
389 m_vFragment->at(n>>1)=((m_vFragment->at(n>>1) & 0xffff0000) | w);
390 else
391 m_vFragment->at(n>>1)=((m_vFragment->at(n>>1) & 0xffff) | (w << 16));
392}
393
394inline void LArRodBlockStructure::setHeader32(const unsigned n, const uint32_t w)
395{
396#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
397 if ((unsigned)n>=m_vFragment->size()*2) {
398 std::cout << "Error WRITE BEYOND ARRAY BONDARY!" << std::endl;
399 std::abort();
400 }
401#endif
402 m_vFragment->at(n>>1) = w;
403}
404
405inline uint16_t LArRodBlockStructure::LE_getHeader16(const unsigned n) const // n should be choosen from the above enum
406{
407 return (reinterpret_cast<const uint16_t*>(m_FebBlock))[n];
408}
409
410inline uint16_t LArRodBlockStructure::LE_getVectorHeader16(const unsigned n) const // n should be choosen from the above enum
411{
412 const uint32_t* data32 = std::as_const(*m_vFragment).data();
413 const uint16_t* data16 = reinterpret_cast<const uint16_t*> (data32);
414 return data16[n];
415}
416
417inline void LArRodBlockStructure::LE_setHeader16(const unsigned n, const uint16_t w)
418{
419#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
420 if ((unsigned)n>=m_vFragment->size()*2) {
421 std::cout << "LArRodBlockStructure::LE_setHeader16 Error: WRITE BEYOND ARRAY BONDARY!" << std::endl;
422 std::abort();
423 }
424#endif
425 reinterpret_cast<uint16_t*>(m_vFragment->data())[n] = w;
426}
427
429{
430 return getHeader32(NWTot);
431}
432
433inline int LArRodBlockStructure::getBit(const uint32_t *const p, const unsigned chan) const
434{// chan = (0,127)
435 // int a = chan/32;
436 // int r = chan%32;
437 int a = chan>>5;
438 int r = chan&0x1f;
439 // a = (0,3), r = ( 0, 31 )
440 return (*(p+a)>>r) & 0x1;
441}
442
443
444inline void LArRodBlockStructure::setBit(uint32_t *const p, const unsigned chan)
445{
446 // chan = (0,127)
447 // int a = chan/32;
448 // int r = chan%32;
449 int a = chan>>5;
450 int r = chan&0x1f;
451 // a = (0,3), r = ( 0, 31 )
452 *(p+a) |= (1<<r) ;
453 return;
454}
455
456inline int LArRodBlockStructure::getNextEnergy(int&, int32_t&, int32_t&, int32_t&,uint32_t&)
457{
458 std::cout << "Error: Function getNextEnergy not implemented in this instance of LArRodBlockStructure!\n";
459 return 0;
460}
461
462inline bool LArRodBlockStructure::getPulsed(unsigned) const
463{
464 std::cout << "Error: Function getPulsed not implemented in this instance of LArRodBlockStructure!\n";
465 return 0;
466}
467
468inline uint16_t LArRodBlockStructure::getDAC() const
469{
470 std::cout << "Error: Function getDAC not implemented in this instance of LArRodBlockStructure!\n";
471 return 0;
472}
473
474inline uint16_t LArRodBlockStructure::getDelay() const
475{
476 std::cout << "Error: Function getDelay not implemented in this instance of LArRodBlockStructure!\n";
477 return 0;
478}
479
481{
482 std::cout << "Error: Function getNTrigger not implemented in this instance of LArRodBlockStructure!\n";
483 return 0;
484}
485
487{
488 std::cout << "Error: Function getStepIndex not implemented in this instance of LArRodBlockStructure!\n";
489 return 0;
490}
491inline uint16_t LArRodBlockStructure::getNStep() const
492{
493 std::cout << "Error: Function getNStep not implemented in this instance of LArRodBlockStructure!\n";
494 return 0;
495}
496
498{
500
501 const int32_t FebOffset = m_FebBlockSize+m_MiddleHeaderSize;
502 const int32_t LeftSize = m_RodBlockSize-FebOffset+m_RodBlock-m_FebBlock;
503 if ( LeftSize<=0 ) return false; //No next feb
504
505 m_FebBlock += FebOffset; //Jump to the next FEB fragment
506 const int32_t BlockSize = getNumberOfWords();
507 //std::cout << "LeftSize=" << LeftSize << " BlockSize=" << BlockSize << std::endl;
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;
510 m_error_next_feb = true;
511 return false;
512 }
513 //std::cout << "Second FEB ok, size= " << LeftSize <<std::endl;
514
515 //m_FebBlockSize = LeftSize; //should be =BlockSize;
516 m_FebBlockSize=BlockSize;
517
518 //std::cout << "2: FEB found with size " << m_FebBlockSize << std::endl;
519 setPointers();
520 return true;
521}
522
523#endif
static Double_t a
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.
Definition LArDigit.h:25
Liquid Argon ROD output object base class.
virtual void sortDataVector(std::vector< const LArRawChannel * > &)
virtual uint16_t getCtrl1(uint32_t adc) const
bool setFragment(const uint32_t *p, uint32_t n)
virtual uint32_t hasPhysicsBlock() const
virtual bool canSetRawDataFixed()
virtual uint16_t getNStep() const
virtual int32_t getEz() const
virtual int32_t getVROBEx() const
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 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 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 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
void LE_setHeader16(const unsigned n, const uint16_t w)
virtual int FebToRodChannel(int ch) const
virtual uint16_t getCtrl2(uint32_t adc) const
std::map< uint32_t, std::vector< uint32_t > > FEBMAPTYPE
virtual uint8_t getTDCPhase() 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 uint16_t getStepIndex() const
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
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)
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)
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)
int r
Definition globals.cxx:22