ATLAS Offline Software
Loading...
Searching...
No Matches
LArRodBlockPhysicsV4 Class Reference

#include <LArRodBlockPhysicsV4.h>

Inheritance diagram for LArRodBlockPhysicsV4:
Collaboration diagram for LArRodBlockPhysicsV4:

Public Types

enum  {
  NWTot , NWTot_h , FEBID , FEBID_h ,
  FEB_SN , FEB_SN_h , ResultsOff1 , ResultsDim1 ,
  ResultsOff2 , ResultsDim2 , RawDataBlkOff , RawDataBlkDim ,
  EventStatus , EventStatus_h , NGains , NSamples ,
  FirstSampleIndex , FebConfig , InFPGAFormat , InFPGAFormat_h ,
  endtag
}

Public Member Functions

 LArRodBlockPhysicsV4 (IMessageSvc *msgSvc)
virtual int getNextEnergy (int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)
virtual int getNextRawData (int &channelNumber, std::vector< short > &samples, uint32_t &gain)
virtual uint16_t getResults1Size () const
virtual uint16_t getResults2Size () const
virtual uint16_t getRawDataSize () const
virtual uint32_t getNumberOfSamples () const
virtual uint32_t getNumberOfGains () const
virtual uint32_t getRadd (uint32_t adc, uint32_t sample) const
virtual uint16_t getCtrl1 (uint32_t adc) const
virtual uint16_t getCtrl2 (uint32_t adc) const
virtual uint16_t getCtrl3 (uint32_t adc) const
virtual uint32_t getStatus () const
virtual uint32_t onlineCheckSum () const
virtual uint32_t offlineCheckSum () const
virtual uint32_t hasCalibBlock () const
virtual uint32_t hasPhysicsBlock () const
virtual uint32_t hasRawDataBlock () const
virtual uint32_t hasControlWords () const
virtual uint16_t getNumberOfHotCells () const
virtual int32_t getEx () const
virtual int32_t getEy () const
virtual int32_t getEz () const
virtual int16_t getHottestCellIndex ()
virtual int32_t getHottestCellEnergy () const
virtual int setGain (const int)
uint16_t getFebConfig () const
uint16_t getFirstSampleIndex () const
virtual bool canSetCalibration ()
virtual void initializeFragment (std::vector< uint32_t > &fragment)
virtual void initializeFEB (const uint32_t id)
virtual void setNumberOfSamples (const uint8_t n)
virtual void setNumberOfGains (const uint8_t n)
virtual void setTDCPhase (const uint8_t n)
virtual void setNextEnergy (const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
virtual void setRawData (const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual void setRawDataFixed (const int channel, const std::vector< short > &samples, const uint32_t gain)
virtual void setEtQ (const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
virtual void setDAC (const uint16_t DACValue)
virtual void setDelay (const uint16_t DelayValue)
virtual void setPulsed (const unsigned channelNumber)
virtual void setNTrigger (const uint16_t NTrigger)
virtual void finalizeFEB ()
virtual void setEx (double)
virtual void setEy (double)
virtual void setEz (double)
virtual void setSumE (double)
virtual void sortDataVector (std::vector< const LArRawChannel * > &)
virtual void sortDataVector (std::vector< const LArDigit * > &)
virtual void sortDataVector (std::vector< const LArCalibDigit * > &)
virtual void sortDataVector (std::vector< const LArAccumulatedCalibDigit * > &)
virtual void sortDataVector (std::vector< const LArAccumulatedDigit * > &)
virtual void concatinateFEBs ()
virtual bool canSetEnergy ()
virtual bool canSetRawData ()
virtual bool canSetRawDataFixed ()
virtual bool canSetNTrigger ()
virtual bool canIncludeRawData ()
bool setFragment (const uint32_t *p, uint32_t n)
bool nextFEB ()
uint32_t getNumberOfWords () const
uint32_t getFEBID () const
uint32_t getFEBSN () const
virtual int32_t getSumE () const
virtual uint32_t getVROBFebId ()
virtual int32_t getVROBEx () const
virtual int32_t getVROBEy () const
virtual int32_t getVROBEz () const
virtual int32_t getVROBSumE () const
virtual uint32_t hasAccumBlock () const
virtual int getNextAccumulatedCalibDigit (int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &Samples2Sum, uint32_t &nStepTriggers, uint32_t &gain)
virtual int getNextAccumulatedDigit (int &channelNumber, std::vector< uint64_t > &SamplesSum, std::vector< uint64_t > &corr2Sum, uint32_t &gain)
virtual bool getPulsed (unsigned channelNumber) const
virtual uint16_t getDAC () const
virtual uint16_t getDelay () const
virtual uint16_t getNTrigger () const
virtual uint16_t getStepIndex () const
virtual uint16_t getNStep () const
virtual uint8_t getTDCPhase () const
virtual uint16_t getNbSweetCells1 () const
virtual uint16_t getNbSweetCells2 () const
virtual uint32_t getDspCodeVersion () const
virtual int32_t getDspEventCounter () const
virtual int setFragmentVirtualROB (const uint32_t *p, uint32_t n)
virtual void dumpFragment ()
void setFirstSample (const int rearrangeFirstSample)
uint32_t RawToOfflineGain (const uint32_t gain) const
uint32_t OfflineToRawGain (const uint32_t gain) const
virtual int FebToRodChannel (int ch) const
bool report_error (void) const

Static Public Member Functions

static std::string BlockType ()

Protected Types

enum  {
  NWTot , NWTot_h , FEBID , FEBID_h ,
  FEBSN , FEBSN_h , endtag
}
typedef std::map< uint32_t, std::vector< uint32_t > > FEBMAPTYPE

Protected Member Functions

void setHeader16 (const unsigned n, const uint16_t w)
void setHeader32 (const unsigned n, const uint32_t w)
uint16_t getVectorHeader16 (const unsigned n) const
uint32_t getVectorHeader32 (const unsigned n) const
uint16_t getHeader16 (const unsigned n) const
uint32_t getHeader32 (const unsigned n) const
uint16_t LE_getHeader16 (const unsigned n) const
void LE_setHeader16 (const unsigned n, const uint16_t w)
uint16_t LE_getVectorHeader16 (const unsigned n) const
void setBit (uint32_t *const p, const unsigned chan)
int getBit (const uint32_t *const p, const unsigned chan) const

Protected Attributes

int32_t m_Ex
int32_t m_Ey
int32_t m_Ez
int32_t m_SumE
uint32_t m_numberOfEx
uint32_t m_numberOfEy
uint32_t m_numberOfEz
uint32_t m_numberOfSumE
unsigned short m_iHeadBlockSize
int m_channelsPerFEB
const uint32_t * m_FebBlock
const uint32_t * m_RodBlock
int32_t m_FebBlockSize
int32_t m_RodBlockSize
std::vector< uint32_t > * m_vFragment
std::vector< uint32_t > * m_pRODblock
FEBMAPTYPE m_mFebBlocks
int32_t m_MiddleHeaderSize
unsigned int m_rearrangeFirstSample
bool m_error_next_feb
uint32_t m_virtualROBJump
int32_t m_ROB_to_decode
const uint32_t * m_virtualROBPointer
const uint32_t * m_virtualROBPointerLocal
MsgStream m_logstr

Static Protected Attributes

static const uint32_t m_RawToOfflineGainMap [4] ={0, 2, 1,0}
static const uint32_t m_OfflineToRawGainMap [3] ={3,2,1}

Private Member Functions

virtual void resetPointers ()
virtual bool setPointers ()

Private Attributes

int m_EnergyIndex = 0
int m_RawDataIndex = 0
int m_TimeQualityIndex = 0
int m_TowerIndex = 0
const uint16_t * m_EnergyPointer = nullptr
const uint16_t * m_TimeQualityPointer = nullptr
const uint16_t * m_RawDataPointer = nullptr
const uint32_t * m_GainPointer = nullptr
const uint32_t * m_MaskPointer = nullptr
const uint16_t * m_HotCellsPointer = nullptr
const uint8_t * m_TowerPointer = nullptr
const int32_t * m_SumPointer = nullptr
int m_fixedGain

Detailed Description

Definition at line 31 of file LArRodBlockPhysicsV4.h.

Member Typedef Documentation

◆ FEBMAPTYPE

typedef std::map<uint32_t, std::vector<uint32_t> > LArRodBlockStructure::FEBMAPTYPE
protectedinherited

Definition at line 227 of file LArRodBlockStructure.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protectedinherited
Enumerator
NWTot 
NWTot_h 
FEBID 
FEBID_h 
FEBSN 
FEBSN_h 
endtag 

Definition at line 50 of file LArRodBlockStructure.h.

50 {
51 NWTot, // Number of words in DSP block
52 NWTot_h,
53 FEBID, // FEB ID
54 FEBID_h,
55 FEBSN, // FEB Serial Number
56 FEBSN_h,
57 endtag // This tag needs to be an odd number, see *) for constructor
58 };

◆ anonymous enum

anonymous enum
Enumerator
NWTot 
NWTot_h 
FEBID 
FEBID_h 
FEB_SN 
FEB_SN_h 
ResultsOff1 
ResultsDim1 
ResultsOff2 
ResultsDim2 
RawDataBlkOff 
RawDataBlkDim 
EventStatus 
EventStatus_h 
NGains 
NSamples 
FirstSampleIndex 
FebConfig 
InFPGAFormat 
InFPGAFormat_h 
endtag 

Definition at line 35 of file LArRodBlockPhysicsV4.h.

35 {
36 NWTot, // First words: DSP event header
37 NWTot_h,
38 FEBID,
39 FEBID_h,
40 FEB_SN, // FEB serial number
41 FEB_SN_h, // FEB serial number
42 ResultsOff1, // Size of results (Physics averages in DSP)
43 ResultsDim1, // Offset to results
44 ResultsOff2, // Size of times (in physics)
45 ResultsDim2, // Offset to times (in physics)
47 RawDataBlkDim, // Raw FEB event offset
48 EventStatus, // Bits describing the event
50 NGains,
51 NSamples,
54 InFPGAFormat, // added 08.09.2005 - wrong 28.09.2005?
56 endtag //This tag needs to be an odd number, see *) for constructor
57 };

Constructor & Destructor Documentation

◆ LArRodBlockPhysicsV4()

LArRodBlockPhysicsV4::LArRodBlockPhysicsV4 ( IMessageSvc * msgSvc)

Definition at line 23 of file LArRodBlockPhysicsV4.cxx.

25{
26 m_iHeadBlockSize=endtag/2; // The implicit cast rounds down to the right size
29}
static std::string BlockType()
LArRodBlockStructure(IMessageSvc *msgSvc, const std::string &blockType)
@ LARNGAIN
Definition CaloGain.h:19

Member Function Documentation

◆ BlockType()

std::string LArRodBlockPhysicsV4::BlockType ( )
inlinestatic

Definition at line 62 of file LArRodBlockPhysicsV4.h.

62{ return std::string("RodBlockPhysicsV4");}

◆ canIncludeRawData()

virtual bool LArRodBlockStructure::canIncludeRawData ( )
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 100 of file LArRodBlockStructure.h.

100{return false;}

◆ canSetCalibration()

virtual bool LArRodBlockPhysicsV4::canSetCalibration ( )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 123 of file LArRodBlockPhysicsV4.h.

123{return false;}

◆ canSetEnergy()

virtual bool LArRodBlockStructure::canSetEnergy ( )
inlinevirtualinherited

◆ canSetNTrigger()

virtual bool LArRodBlockStructure::canSetNTrigger ( )
inlinevirtualinherited

Definition at line 99 of file LArRodBlockStructure.h.

99{return false;}

◆ canSetRawData()

virtual bool LArRodBlockStructure::canSetRawData ( )
inlinevirtualinherited

◆ canSetRawDataFixed()

virtual bool LArRodBlockStructure::canSetRawDataFixed ( )
inlinevirtualinherited

Reimplemented in LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 97 of file LArRodBlockStructure.h.

97{return false;}

◆ concatinateFEBs()

void LArRodBlockStructure::concatinateFEBs ( )
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, LArRodBlockPhysicsV6, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 79 of file LArRodBlockStructure.cxx.

80{
81 std::cout << "Error: Function concatinateFEBs not implemented in this instance of LArRodBlockStructure!\n";
82 return;
83}

◆ dumpFragment()

void LArRodBlockStructure::dumpFragment ( )
virtualinherited

Definition at line 173 of file LArRodBlockStructure.cxx.

174{
175 std::cout << "Error: Function dumpFragment() not implemented in this instance of LArRodBlockStructure!\n";
176 return;
177}

◆ FebToRodChannel()

virtual int LArRodBlockStructure::FebToRodChannel ( int ch) const
inlinevirtualinherited

◆ finalizeFEB()

void LArRodBlockStructure::finalizeFEB ( )
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, LArRodBlockPhysicsV6, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 192 of file LArRodBlockStructure.cxx.

193{
194 std::cout << "Error: Function finalizeFEB not implemented in this instance of LArRodBlockStructure!\n";
195 return;
196}

◆ getBit()

int LArRodBlockStructure::getBit ( const uint32_t *const p,
const unsigned chan ) const
inlineprotectedinherited

Definition at line 416 of file LArRodBlockStructure.h.

417{// chan = (0,127)
418 // int a = chan/32;
419 // int r = chan%32;
420 int a = chan>>5;
421 int r = chan&0x1f;
422 // a = (0,3), r = ( 0, 31 )
423 return (*(p+a)>>r) & 0x1;
424}
static Double_t a
int r
Definition globals.cxx:22

◆ getCtrl1()

uint16_t LArRodBlockPhysicsV4::getCtrl1 ( uint32_t adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 235 of file LArRodBlockPhysicsV4.cxx.

236{
237 if(!m_RawDataPointer) return 0;
238 int index=5;
240 return x;
241}
#define x
const uint16_t * m_RawDataPointer
str index
Definition DeMoScan.py:362
setWord1 uint16_t

◆ getCtrl2()

uint16_t LArRodBlockPhysicsV4::getCtrl2 ( uint32_t adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 243 of file LArRodBlockPhysicsV4.cxx.

244{
245 if(!m_RawDataPointer) return 0;
246 int index=4;
248 return x;
249}

◆ getCtrl3()

uint16_t LArRodBlockPhysicsV4::getCtrl3 ( uint32_t adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 251 of file LArRodBlockPhysicsV4.cxx.

252{
253 if(!m_RawDataPointer) return 0;
254 int index=7;
256 return x;
257}

◆ getDAC()

uint16_t LArRodBlockStructure::getDAC ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

Definition at line 451 of file LArRodBlockStructure.h.

452{
453 std::cout << "Error: Function getDAC not implemented in this instance of LArRodBlockStructure!\n";
454 return 0;
455}

◆ getDelay()

uint16_t LArRodBlockStructure::getDelay ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

Definition at line 457 of file LArRodBlockStructure.h.

458{
459 std::cout << "Error: Function getDelay not implemented in this instance of LArRodBlockStructure!\n";
460 return 0;
461}

◆ getDspCodeVersion()

uint32_t LArRodBlockStructure::getDspCodeVersion ( ) const
virtualinherited

Definition at line 256 of file LArRodBlockStructure.cxx.

257{
258 int i=getNumberOfWords()-2;
259 return m_FebBlock[i];
260}
uint32_t getNumberOfWords() const

◆ getDspEventCounter()

int32_t LArRodBlockStructure::getDspEventCounter ( ) const
virtualinherited

Definition at line 262 of file LArRodBlockStructure.cxx.

263{
264 int i=getNumberOfWords()-1;
265 return m_FebBlock[i];
266}

◆ getEx()

int32_t LArRodBlockPhysicsV4::getEx ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 215 of file LArRodBlockPhysicsV4.h.

216{
217 if(m_SumPointer) return m_SumPointer[0];
218 return 0;
219}

◆ getEy()

int32_t LArRodBlockPhysicsV4::getEy ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 221 of file LArRodBlockPhysicsV4.h.

222{
223 if(m_SumPointer) return m_SumPointer[1];
224 return 0;
225}

◆ getEz()

int32_t LArRodBlockPhysicsV4::getEz ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 227 of file LArRodBlockPhysicsV4.h.

228{
229 if(m_SumPointer) return m_SumPointer[2];
230 return 0;
231}

◆ getFebConfig()

uint16_t LArRodBlockPhysicsV4::getFebConfig ( ) const
inline

Definition at line 126 of file LArRodBlockPhysicsV4.h.

127{
128 return getHeader16(FebConfig);
129}
uint16_t getHeader16(const unsigned n) const

◆ getFEBID()

uint32_t LArRodBlockStructure::getFEBID ( ) const
inlineinherited

Definition at line 292 of file LArRodBlockStructure.h.

293{return getHeader32(FEBID);}
uint32_t getHeader32(const unsigned n) const

◆ getFEBSN()

uint32_t LArRodBlockStructure::getFEBSN ( ) const
inlineinherited

Definition at line 295 of file LArRodBlockStructure.h.

296{return getHeader32(FEBSN);}

◆ getFirstSampleIndex()

uint16_t LArRodBlockPhysicsV4::getFirstSampleIndex ( ) const
inline

Definition at line 131 of file LArRodBlockPhysicsV4.h.

132{
134}

◆ getHeader16()

uint16_t LArRodBlockStructure::getHeader16 ( const unsigned n) const
inlineprotectedinherited

Definition at line 340 of file LArRodBlockStructure.h.

341{
342 if (n&0x1) //n is a odd number
343 return m_FebBlock[n>>1] & 0xffff; //1,3,5... are fetched from lower bits
344 else //n is a even number
345 return m_FebBlock[n>>1] >> 16; //0,2,4... are fetched from higher bits
346}

◆ getHeader32()

uint32_t LArRodBlockStructure::getHeader32 ( const unsigned n) const
inlineprotectedinherited

Definition at line 348 of file LArRodBlockStructure.h.

349{return m_FebBlock[n>>1];}

◆ getHottestCellEnergy()

int32_t LArRodBlockPhysicsV4::getHottestCellEnergy ( ) const
inlinevirtual

Definition at line 239 of file LArRodBlockPhysicsV4.h.

240{
241 uint16_t encodedEnergy; // 16 bits Encoded Energy word
242 int32_t aux;
243 uint16_t range; // 2 bits range
244 int32_t sign=1;
245
246 if(!m_TowerPointer) return 0;
248
249 if (encodedEnergy&0x8000) sign=-1;
250 range = ((encodedEnergy)>>13)&0x0003; // range is encoded in bits 14 and 13
251
252 aux = (int32_t) (encodedEnergy&0x1FFF);
253 if (range==1) aux=(aux<<3)+4; // shift left by 3 bits and add 4 MeV
254 else if (range==2) aux=(aux<<6)+32; // shift left by 6 bits and add 32 MeV
255 else if (range==3) aux=(aux<<9)+256; // shift left by 9 bits and add 256 MeV
256
257 return sign*aux;
258}
int sign(int a)
const uint16_t * m_EnergyPointer

◆ getHottestCellIndex()

int16_t LArRodBlockPhysicsV4::getHottestCellIndex ( )
inlinevirtual

Definition at line 233 of file LArRodBlockPhysicsV4.h.

234{
236 return -1;
237}

◆ getNbSweetCells1()

uint16_t LArRodBlockStructure::getNbSweetCells1 ( ) const
virtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 253 of file LArRodBlockStructure.cxx.

253{ return 0; }

◆ getNbSweetCells2()

uint16_t LArRodBlockStructure::getNbSweetCells2 ( ) const
virtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 254 of file LArRodBlockStructure.cxx.

254{ return 0; }

◆ getNextAccumulatedCalibDigit()

int LArRodBlockStructure::getNextAccumulatedCalibDigit ( int & channelNumber,
std::vector< uint64_t > & SamplesSum,
std::vector< uint64_t > & Samples2Sum,
uint32_t & nStepTriggers,
uint32_t & gain )
virtualinherited

Reimplemented in LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

Definition at line 92 of file LArRodBlockStructure.cxx.

93{
94 std::cout << "Error: Function getNextAccumulatedCalibDigit not implemented in this instance of LArRodBlockStructure!\n";
95 return 0;
96}

◆ getNextAccumulatedDigit()

int LArRodBlockStructure::getNextAccumulatedDigit ( int & channelNumber,
std::vector< uint64_t > & SamplesSum,
std::vector< uint64_t > & corr2Sum,
uint32_t & gain )
virtualinherited

Reimplemented in LArRodBlockAccumulatedV3.

Definition at line 98 of file LArRodBlockStructure.cxx.

99{
100 std::cout << "Error: Function getNextAccumulatedDigit not implemented in this instance of LArRodBlockStructure!\n";
101 return 0;
102}

◆ getNextEnergy()

int LArRodBlockPhysicsV4::getNextEnergy ( int & channelNumber,
int32_t & energy,
int32_t & time,
int32_t & quality,
uint32_t & gain )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 136 of file LArRodBlockPhysicsV4.h.

137{
138 #ifdef LARBSDBGOUTPUT
139 MsgStream logstr(Athena::getMessageSvc(), BlockType());
140 #endif
141
142 LARBSDBG("in LArRodBlockPhysicsV4::getNextEnergy.");
143 LARBSDBG("m_channelsPerFEB=" << m_channelsPerFEB);
144 if (m_EnergyIndex>=m_channelsPerFEB) // Already beyond maximal number of channels
145 return 0;
146 if (!m_EnergyPointer) // No data block present
147 return 0;
148
149 unsigned rodChannelNumber=m_EnergyIndex; // Index of Channel in ROD-Block
150 channelNumber=((rodChannelNumber&0xe)<<2) + ((rodChannelNumber&0x1)<<6) + (rodChannelNumber>>4); //channel number of the FEB
151
152 // get information available for all cells
153 // Energy on a 16 bit word and decode ranges
154 uint16_t encodedEnergy; // 16 bits Encoded Energy word
155 int32_t aux;
156 uint16_t range; // 2 bits range
158
159 LARBSDBG("-------->>>> in LArRodBlockPhysicsV4::getNextEnergy : decode energy.....");
160 // decode energy
161 if(m_EnergyIndex & 0x1) encodedEnergy = m_EnergyPointer[m_EnergyIndex-1]; // Big/Little Endien stuff
162 else encodedEnergy = m_EnergyPointer[m_EnergyIndex+1]; // Big/Little Endien stuff
163
164 aux = (int32_t) (encodedEnergy&0x1fff);
165 range = (encodedEnergy & 0xc000) >> 14;
166 sign = encodedEnergy & 0x2000;
167 aux <<= 3*range;
168 if(sign) aux = -aux;
169 energy = aux;
170
171 // gain in 2 bits of a 32 bits word
172 gain = (uint32_t) ((m_GainPointer[m_EnergyIndex>>4] >> (m_EnergyIndex&0xf)*2) & 0x3);
174
175 // Get Time and Quality if the information is present according to summary block
176 uint32_t hasTQ = (uint32_t) ((m_MaskPointer[m_EnergyIndex>>5] >> (m_EnergyIndex&0x1f)) &0x1);
178 if (m_TimeQualityPointer && hasTQ) // Data has Time and Quality information
179 {
183
184#ifdef LARBSDBGOUTPUT
185 logstr << MYLEVEL <<"This cell has time and Quality information "<<endmsg;
186#endif
187 }
188 else // Data has no Time and Quality information
189 {
190 time=0;
191 quality=-1;
192 }
193
194
195#ifdef LARBSDBGOUTPUT
196 logstr << MYLEVEL <<"Range = "<<range<<endmsg;
197 logstr << MYLEVEL <<"Sign = "<<sign<<endmsg;
198 logstr << MYLEVEL <<" Encoded Energy ="<< MSG::hex << encodedEnergy << MSG::dec << " E=" << energy
199 << " t=" << time
200 << " Q=" << quality
201 << " G=" << gain
202 << " channel Number=" << channelNumber
203 << endmsg;
204#endif
205
206 return 1;
207}
#define endmsg
#define MYLEVEL
#define LARBSDBG(text)
This class provides decoding/encoding from/to ROD format.
const uint32_t * m_GainPointer
const uint32_t * m_MaskPointer
const uint16_t * m_TimeQualityPointer
uint32_t RawToOfflineGain(const uint32_t gain) const
IMessageSvc * getMessageSvc(bool quiet=false)
time(flags, cells_name, *args, **kw)
setEventNumber uint32_t

◆ getNextRawData()

int LArRodBlockPhysicsV4::getNextRawData ( int & channelNumber,
std::vector< short > & samples,
uint32_t & gain )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 114 of file LArRodBlockPhysicsV4.cxx.

115{
116#ifdef LARBSDBGOUTPUT
117 MsgStream logstr(Athena::getMessageSvc(), BlockType());
118 //Debug output
119 logstr << MYLEVEL << "Let s go in getNextRawData..." << endmsg;
120 logstr << MYLEVEL << "GetNextRawData for FEB 0x" << MSG::hex << (uint32_t)getHeader32(FEBID) << MSG::dec << endmsg;
121 logstr << MYLEVEL << "m_RawDataPointer=" << m_RawDataPointer << " m_RawDataIndex="<< m_RawDataIndex
122 << " m_channelsPerFEB=" << m_channelsPerFEB << endmsg;
123#endif
124
125 if (m_RawDataIndex>=m_channelsPerFEB) { //Already beyond maximal number of channels
126#ifdef LARBSDBGOUTPUT
127 logstr << MYLEVEL << "Maximum number of channels reached" << endmsg;
128#endif
129 return 0;
130 }
131 if (!m_RawDataPointer) { //Block does not exist
132#ifdef LARBSDBGOUTPUT
133 logstr << MYLEVEL << "No Raw Data Block in this FEB" << endmsg;
134#endif
135 return 0;
136 }
137
138 // Get next channel
139 unsigned rodChannelNumber=m_RawDataIndex; // Index of Channel in ROD-Block
140 channelNumber=((rodChannelNumber&0xe)<<2) + ((rodChannelNumber&0x1)<<6) + (rodChannelNumber>>4); //channel number of the FEB
141 //channelNumber=(rodChannelNumber>>4) + ((rodChannelNumber&0xf)<<3); //channel number of the FEB
142 uint32_t febgain;
143 const unsigned int nsamples = getHeader16(NSamples) & 0xff;
144 const unsigned int ngains = getHeader16(NGains);
145
146#ifdef LARBSDBGOUTPUT
147 logstr << MYLEVEL << "This FEB has " << nsamples << " samples" << endmsg;
148 logstr << MYLEVEL << "This FEB has " << ngains << " gains" << endmsg;
149#endif
150
151 if(ngains==0 || nsamples==0) return 0;
152 int s_size = nsamples+1;
153 int offset = 12;
154 int index;
155 index = s_size*m_RawDataIndex + offset;
156 uint16_t s[2];
157 s[0] = m_RawDataPointer[index++]>>2;
158 febgain = m_RawDataPointer[index++];
159 samples.push_back(s[0]);
160 for(unsigned int i=0;i<nsamples/2;i++) {
161 s[1] = m_RawDataPointer[index++]>>2;
162 s[0] = m_RawDataPointer[index++]>>2;
163 samples.push_back(s[0]);
164 samples.push_back(s[1]);
165 }
166 gain=RawToOfflineGain(febgain);
167
168#ifdef LARBSDBGOUTPUT
169 logstr << MYLEVEL << " ===> ROD Channel = " << m_RawDataIndex << endmsg;
170 logstr << MYLEVEL << " ===> FEB Channel = " << channelNumber << endmsg;
171 logstr << MYLEVEL << " ===> Gain = " << gain << endmsg;
172 for(int i=0;i<nsamples;i++)
173 logstr << MYLEVEL << " ===> sample " << i << " = " << samples[i] << endmsg;
174 int n = m_RawDataIndex;
175 int32_t e,t,q;
176 uint32_t g;
178#endif
180 unsigned rearrangeFirstSample=0;
182 rearrangeFirstSample=m_rearrangeFirstSample; //Overwrite by jobOptions
183 else
184 rearrangeFirstSample=getFirstSampleIndex();
185 if (rearrangeFirstSample && rearrangeFirstSample<samples.size()) //FIXME: Very ugly hack! See explanation in LArRodDecoder.h file
186 {//Change e.g. 3 0 1 2 4 to 0 1 2 3 4
187 short movedSample=samples[0];
188 for (unsigned i=1;i<=rearrangeFirstSample;i++)
189 samples[i-1]=samples[i];
190 samples[rearrangeFirstSample]=movedSample;
191 }
192#ifdef LARBSDBGOUTPUT
193 logstr << MYLEVEL << "GetNextRawData for FEB finished 0x" << MSG::hex << (uint32_t)getHeader32(FEBID) << MSG::dec << endmsg;
194#endif
195 return 1;
196}
uint16_t getFirstSampleIndex() const
virtual int getNextEnergy(int &channelNumber, int32_t &energy, int32_t &time, int32_t &quality, uint32_t &gain)

◆ getNStep()

uint16_t LArRodBlockStructure::getNStep ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3, and LArRodBlockCalibrationV3.

Definition at line 474 of file LArRodBlockStructure.h.

475{
476 std::cout << "Error: Function getNStep not implemented in this instance of LArRodBlockStructure!\n";
477 return 0;
478}

◆ getNTrigger()

uint16_t LArRodBlockStructure::getNTrigger ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

Definition at line 463 of file LArRodBlockStructure.h.

464{
465 std::cout << "Error: Function getNTrigger not implemented in this instance of LArRodBlockStructure!\n";
466 return 0;
467}

◆ getNumberOfGains()

uint32_t LArRodBlockPhysicsV4::getNumberOfGains ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 203 of file LArRodBlockPhysicsV4.cxx.

204{
205 return getHeader16(NGains);
206}

◆ getNumberOfHotCells()

uint16_t LArRodBlockPhysicsV4::getNumberOfHotCells ( ) const
inlinevirtual

Definition at line 209 of file LArRodBlockPhysicsV4.h.

210{
212 return 0;
213}
const uint16_t * m_HotCellsPointer

◆ getNumberOfSamples()

uint32_t LArRodBlockPhysicsV4::getNumberOfSamples ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 198 of file LArRodBlockPhysicsV4.cxx.

199{
200 return getHeader16(NSamples);
201}

◆ getNumberOfWords()

uint32_t LArRodBlockStructure::getNumberOfWords ( ) const
inlineinherited

Definition at line 411 of file LArRodBlockStructure.h.

412{
413 return getHeader32(NWTot);
414}

◆ getPulsed()

bool LArRodBlockStructure::getPulsed ( unsigned channelNumber) const
inlinevirtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

Definition at line 445 of file LArRodBlockStructure.h.

446{
447 std::cout << "Error: Function getPulsed not implemented in this instance of LArRodBlockStructure!\n";
448 return 0;
449}

◆ getRadd()

uint32_t LArRodBlockPhysicsV4::getRadd ( uint32_t adc,
uint32_t sample ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 223 of file LArRodBlockPhysicsV4.cxx.

224{
225 if(!m_RawDataPointer) return 0;
226 int index;
227 if(sample==0) index=6;
228 else if(sample & 0x1) index=7+sample-1;
229 else index=7+sample+1;
231 if(adc>=8) return x>>8;
232 return x&0xff;
233}

◆ getRawDataSize()

uint16_t LArRodBlockPhysicsV4::getRawDataSize ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 218 of file LArRodBlockPhysicsV4.cxx.

219{
221}

◆ getResults1Size()

uint16_t LArRodBlockPhysicsV4::getResults1Size ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 208 of file LArRodBlockPhysicsV4.cxx.

209{
210 return getHeader16(ResultsDim1);
211}

◆ getResults2Size()

uint16_t LArRodBlockPhysicsV4::getResults2Size ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 213 of file LArRodBlockPhysicsV4.cxx.

214{
215 return getHeader16(ResultsDim2);
216}

◆ getStatus()

uint32_t LArRodBlockPhysicsV4::getStatus ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 259 of file LArRodBlockPhysicsV4.cxx.

260{
261 if(getNumberOfWords()<EventStatus/2) return 0;
263 return x;
264}

◆ getStepIndex()

uint16_t LArRodBlockStructure::getStepIndex ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3, and LArRodBlockCalibrationV3.

Definition at line 469 of file LArRodBlockStructure.h.

470{
471 std::cout << "Error: Function getStepIndex not implemented in this instance of LArRodBlockStructure!\n";
472 return 0;
473}

◆ getSumE()

int32_t LArRodBlockStructure::getSumE ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 310 of file LArRodBlockStructure.h.

310 {
311 return 0;
312}

◆ getTDCPhase()

uint8_t LArRodBlockStructure::getTDCPhase ( ) const
virtualinherited

Reimplemented in LArRodBlockAccumulatedV3, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, LArRodBlockCalibrationV3, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 147 of file LArRodBlockStructure.cxx.

148{
149 std::cout << "Error: Function getTDCPhase not implemented in this instance of LArRodBlockStructure!\n";
150 return 0;
151}

◆ getVectorHeader16()

uint16_t LArRodBlockStructure::getVectorHeader16 ( const unsigned n) const
inlineprotectedinherited

Definition at line 351 of file LArRodBlockStructure.h.

352{ if (n&0x1) //n is a odd number
353 return (std::as_const(*m_vFragment).at(n>>1) & 0xffff);
354 else //n is a even number
355 return (std::as_const(*m_vFragment).at(n>>1) >> 16);
356}

◆ getVectorHeader32()

uint32_t LArRodBlockStructure::getVectorHeader32 ( const unsigned n) const
inlineprotectedinherited

Definition at line 358 of file LArRodBlockStructure.h.

359{
360 return (*m_vFragment)[n>>1];
361}
std::vector< uint32_t > * m_vFragment

◆ getVROBEx()

int32_t LArRodBlockStructure::getVROBEx ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 318 of file LArRodBlockStructure.h.

318 {
319return 0;
320}

◆ getVROBEy()

int32_t LArRodBlockStructure::getVROBEy ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 322 of file LArRodBlockStructure.h.

322 {
323return 0;
324}

◆ getVROBEz()

int32_t LArRodBlockStructure::getVROBEz ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 326 of file LArRodBlockStructure.h.

326 {
327return 0;
328}

◆ getVROBFebId()

uint32_t LArRodBlockStructure::getVROBFebId ( )
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 314 of file LArRodBlockStructure.h.

314 {
315return 0;
316}

◆ getVROBSumE()

int32_t LArRodBlockStructure::getVROBSumE ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 330 of file LArRodBlockStructure.h.

330 {
331return 0;
332}

◆ hasAccumBlock()

virtual uint32_t LArRodBlockStructure::hasAccumBlock ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3.

Definition at line 121 of file LArRodBlockStructure.h.

121{return 0;} ;

◆ hasCalibBlock()

virtual uint32_t LArRodBlockPhysicsV4::hasCalibBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 84 of file LArRodBlockPhysicsV4.h.

84{return 0;} ;

◆ hasControlWords()

virtual uint32_t LArRodBlockPhysicsV4::hasControlWords ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 87 of file LArRodBlockPhysicsV4.h.

87{return getHeader16(RawDataBlkOff);} ;

◆ hasPhysicsBlock()

virtual uint32_t LArRodBlockPhysicsV4::hasPhysicsBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 85 of file LArRodBlockPhysicsV4.h.

85{return getHeader16(ResultsOff1);} ;

◆ hasRawDataBlock()

virtual uint32_t LArRodBlockPhysicsV4::hasRawDataBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 86 of file LArRodBlockPhysicsV4.h.

86{return getHeader16(RawDataBlkOff);} ;

◆ initializeFEB()

void LArRodBlockStructure::initializeFEB ( const uint32_t id)
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, LArRodBlockPhysicsV6, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 180 of file LArRodBlockStructure.cxx.

181{
182 std::cout << "Error: Function initializeFEB not implemented in this instance of LArRodBlockStructure!\n";
183 return;
184}

◆ initializeFragment()

void LArRodBlockStructure::initializeFragment ( std::vector< uint32_t > & fragment)
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, LArRodBlockPhysicsV6, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 186 of file LArRodBlockStructure.cxx.

187{
188 std::cout << "Error: Function initializeFragment not implemented in this instance of LArRodBlockStructure!\n";
189 return;
190}

◆ LE_getHeader16()

uint16_t LArRodBlockStructure::LE_getHeader16 ( const unsigned n) const
inlineprotectedinherited

Definition at line 388 of file LArRodBlockStructure.h.

389{
390 return (reinterpret_cast<const uint16_t*>(m_FebBlock))[n];
391}

◆ LE_getVectorHeader16()

uint16_t LArRodBlockStructure::LE_getVectorHeader16 ( const unsigned n) const
inlineprotectedinherited

Definition at line 393 of file LArRodBlockStructure.h.

394{
395 const uint32_t* data32 = std::as_const(*m_vFragment).data();
396 const uint16_t* data16 = reinterpret_cast<const uint16_t*> (data32);
397 return data16[n];
398}

◆ LE_setHeader16()

void LArRodBlockStructure::LE_setHeader16 ( const unsigned n,
const uint16_t w )
inlineprotectedinherited

Definition at line 400 of file LArRodBlockStructure.h.

401{
402#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
403 if ((unsigned)n>=m_vFragment->size()*2) {
404 std::cout << "LArRodBlockStructure::LE_setHeader16 Error: WRITE BEYOND ARRAY BONDARY!" << std::endl;
405 std::abort();
406 }
407#endif
408 reinterpret_cast<uint16_t*>(m_vFragment->data())[n] = w;
409}

◆ nextFEB()

bool LArRodBlockStructure::nextFEB ( )
inlineinherited

Definition at line 480 of file LArRodBlockStructure.h.

481{
483
484 const int32_t FebOffset = m_FebBlockSize+m_MiddleHeaderSize;
485 const int32_t LeftSize = m_RodBlockSize-FebOffset+m_RodBlock-m_FebBlock;
486 if ( LeftSize<=0 ) return false; //No next feb
487
488 m_FebBlock += FebOffset; //Jump to the next FEB fragment
489 const int32_t BlockSize = getNumberOfWords();
490 if (BlockSize>LeftSize) {
491 std::cout << "Error while decoding LArByteStream: Found FEB block of size " << BlockSize << " in a ROD block of size " << LeftSize << std::endl;
492 m_error_next_feb = true;
493 return false;
494 }
495
496 m_FebBlockSize=BlockSize;
497
498 setPointers();
499 return true;
500}

◆ offlineCheckSum()

uint32_t LArRodBlockPhysicsV4::offlineCheckSum ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 274 of file LArRodBlockPhysicsV4.cxx.

275{
276 int end = getNumberOfWords()-3;
277 uint32_t sum = 0;
278 for(int i=0;i<end;i++) {
279 sum += m_FebBlock[i];
280 }
281 return sum & 0x7fffffff;
282}

◆ OfflineToRawGain()

uint32_t LArRodBlockStructure::OfflineToRawGain ( const uint32_t gain) const
inlineinherited

Definition at line 337 of file LArRodBlockStructure.h.

338{return m_OfflineToRawGainMap[gain];} //For efficency, don't check range
static const uint32_t m_OfflineToRawGainMap[3]

◆ onlineCheckSum()

uint32_t LArRodBlockPhysicsV4::onlineCheckSum ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 266 of file LArRodBlockPhysicsV4.cxx.

267{
268 int index = getNumberOfWords()-1;
269 if(index<m_iHeadBlockSize) return 0;
271 return sum;
272}

◆ RawToOfflineGain()

uint32_t LArRodBlockStructure::RawToOfflineGain ( const uint32_t gain) const
inlineinherited

Definition at line 334 of file LArRodBlockStructure.h.

335{return m_RawToOfflineGainMap[gain];} //For efficency, don't check range
static const uint32_t m_RawToOfflineGainMap[4]

◆ report_error()

bool LArRodBlockStructure::report_error ( void ) const
inlineinherited

Definition at line 173 of file LArRodBlockStructure.h.

173{ return m_error_next_feb;}

◆ resetPointers()

void LArRodBlockPhysicsV4::resetPointers ( )
privatevirtual

◆ setBit()

void LArRodBlockStructure::setBit ( uint32_t *const p,
const unsigned chan )
inlineprotectedinherited

Definition at line 427 of file LArRodBlockStructure.h.

428{
429 // chan = (0,127)
430 // int a = chan/32;
431 // int r = chan%32;
432 int a = chan>>5;
433 int r = chan&0x1f;
434 // a = (0,3), r = ( 0, 31 )
435 *(p+a) |= (1<<r) ;
436 return;
437}

◆ setDAC()

void LArRodBlockStructure::setDAC ( const uint16_t DACValue)
virtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >.

Definition at line 55 of file LArRodBlockStructure.cxx.

56{
57 std::cout << "Error: Function setDAC not implemented in this instance of LArRodBlockStructure!\n";
58 return;
59}

◆ setDelay()

void LArRodBlockStructure::setDelay ( const uint16_t DelayValue)
virtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >.

Definition at line 61 of file LArRodBlockStructure.cxx.

62{
63 std::cout << "Error: Function setDelay not implemented in this instance of LArRodBlockStructure!\n";
64 return;
65}

◆ setEtQ()

void LArRodBlockStructure::setEtQ ( const int channel,
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain )
virtualinherited

Definition at line 118 of file LArRodBlockStructure.cxx.

119{
120 std::cout << "Error: Function setEtQ not implemented in this instance of LArRodBlockStructure!\n";
121 return;
122}

◆ setEx()

void LArRodBlockStructure::setEx ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 198 of file LArRodBlockStructure.cxx.

199{
200 // Do not set anything
201 return;
202}

◆ setEy()

void LArRodBlockStructure::setEy ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 204 of file LArRodBlockStructure.cxx.

205{
206 // Do not set anything
207 return;
208}

◆ setEz()

void LArRodBlockStructure::setEz ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 210 of file LArRodBlockStructure.cxx.

211{
212 // Do not set anything
213 return;
214}

◆ setFirstSample()

void LArRodBlockStructure::setFirstSample ( const int rearrangeFirstSample)
inlineinherited

Definition at line 166 of file LArRodBlockStructure.h.

167 {m_rearrangeFirstSample=rearrangeFirstSample;}

◆ setFragment()

bool LArRodBlockStructure::setFragment ( const uint32_t * p,
uint32_t n )
inlineinherited

Definition at line 248 of file LArRodBlockStructure.h.

249{
251 m_FebBlock = p;
254 uint32_t BlockSize = 0;
255
256 if (n==0) {
257 std::cout << "Error while decoding LArByteStream: Got Rod block size 0" << std::endl;
258 return false;
259 }
260
261 BlockSize = getNumberOfWords();
262 if (BlockSize>n) {
263 std::cout << "Error while decoding LArByteStream: Found FEB block of size " << BlockSize << " in a ROD block of size " << n << std::endl;
264 return false;
265 }
266 m_FebBlockSize = BlockSize;
267
268 m_error_next_feb = false;
269
270 return setPointers();
271}

◆ setFragmentVirtualROB()

int LArRodBlockStructure::setFragmentVirtualROB ( const uint32_t * p,
uint32_t n )
inlinevirtualinherited

Definition at line 275 of file LArRodBlockStructure.h.

276 {
281 if ( n<2 ) { std::cout << "Error" << std::endl; return 0;}
282 m_virtualROBJump = ((*p)>>16)>>1; // Divide by two (two FEBs-1ROB)
283 m_ROB_to_decode = ( (*p) & 0xFFFF )<<1; // Multiply by two
284 if ( (n - m_virtualROBJump*m_ROB_to_decode-1) ){
285 std::cout << "Error AGAIN" << std::endl;
286 return 0;
287 }
289 return m_ROB_to_decode;
290}
const uint32_t * m_virtualROBPointerLocal
const uint32_t * m_virtualROBPointer

◆ setGain()

virtual int LArRodBlockPhysicsV4::setGain ( const int )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 97 of file LArRodBlockPhysicsV4.h.

97{ return 1; };

◆ setHeader16()

void LArRodBlockStructure::setHeader16 ( const unsigned n,
const uint16_t w )
inlineprotectedinherited

Definition at line 363 of file LArRodBlockStructure.h.

364{
365#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
366 if ((unsigned)n>=m_vFragment->size()*2) {
367 std::cout << "Error WRITE BEYOND ARRAY BONDARY!" << std::endl;
368 std::abort();
369 }
370#endif
371 if (n&0x1) // n is a odd number
372 m_vFragment->at(n>>1)=((m_vFragment->at(n>>1) & 0xffff0000) | w);
373 else
374 m_vFragment->at(n>>1)=((m_vFragment->at(n>>1) & 0xffff) | (w << 16));
375}

◆ setHeader32()

void LArRodBlockStructure::setHeader32 ( const unsigned n,
const uint32_t w )
inlineprotectedinherited

Definition at line 377 of file LArRodBlockStructure.h.

378{
379#ifdef LARBYTESTREAMRODBLOCK_CHCKBOUNDARIES
380 if ((unsigned)n>=m_vFragment->size()*2) {
381 std::cout << "Error WRITE BEYOND ARRAY BONDARY!" << std::endl;
382 std::abort();
383 }
384#endif
385 m_vFragment->at(n>>1) = w;
386}

◆ setNextEnergy()

void LArRodBlockStructure::setNextEnergy ( const int channel,
const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain )
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 104 of file LArRodBlockStructure.cxx.

105{
106 std::cout << "Error: Function setNextEnergy not implemented in this instance of LArRodBlockStructure!\n";
107 return;
108}

◆ setNTrigger()

void LArRodBlockStructure::setNTrigger ( const uint16_t NTrigger)
virtualinherited

Definition at line 73 of file LArRodBlockStructure.cxx.

74{
75 std::cout << "Error: Function setNTrigger not implemented in this instance of LArRodBlockStructure!\n";
76 return;
77}

◆ setNumberOfGains()

void LArRodBlockStructure::setNumberOfGains ( const uint8_t n)
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 136 of file LArRodBlockStructure.cxx.

137{
138 std::cout << "Error: Function setNumberOfGains not implemented in this instance of LArRodBlockStructure!\n";
139 return;
140}

◆ setNumberOfSamples()

void LArRodBlockStructure::setNumberOfSamples ( const uint8_t n)
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, and LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 130 of file LArRodBlockStructure.cxx.

131{
132 std::cout << "Error: Function setNumberOfSamples not implemented in this instance of LArRodBlockStructure!\n";
133 return;
134}

◆ setPointers()

bool LArRodBlockPhysicsV4::setPointers ( )
privatevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 48 of file LArRodBlockPhysicsV4.cxx.

49{
54
56 {
57 int off = -8;
59 if (getHeader16(ResultsDim1)>=8)
60 m_GainPointer=reinterpret_cast<const uint32_t*>(m_FebBlock+getHeader16(ResultsOff1)+off);
61 if (getHeader16(ResultsDim1)>=12)
63 if (getHeader16(ResultsDim1)>=13)
64 m_HotCellsPointer=reinterpret_cast<const uint16_t*> (m_FebBlock+getHeader16(ResultsOff1)+12+off);
66 m_EnergyPointer=reinterpret_cast<const uint16_t*> (m_FebBlock+getHeader16(ResultsOff1)+13+off);
67 }
69 if (getHeader16(ResultsOff2)>=4)
70 m_TowerPointer=reinterpret_cast<const uint8_t*>(m_FebBlock+getHeader16(ResultsOff2)+off);
71 if (getHeader16(ResultsOff2)>=7)
72 m_SumPointer=reinterpret_cast<const int32_t*>(m_FebBlock+getHeader16(ResultsOff2)+4+off);
74 m_TimeQualityPointer=reinterpret_cast<const uint16_t*>(m_FebBlock+getHeader16(ResultsOff2)+7+off);
75 }
77 m_RawDataPointer=reinterpret_cast<const uint16_t*>(m_FebBlock+getHeader16(RawDataBlkOff)+off);
78
79#ifdef LARBSDBGOUTPUT
80 MsgStream logstr(Athena::getMessageSvc(), BlockType());
81 logstr << MYLEVEL << "***********************************************************************"<< endmsg;
82 logstr << MYLEVEL << "Header values :"<< endmsg;
83 logstr << MYLEVEL << "************************************************************************"<< endmsg;
84 logstr << MYLEVEL << "Fragment @ = 0x" << MSG::hex << m_FebBlock << endmsg;
85 logstr << MYLEVEL << "NWTot = " << MSG::dec << getNumberOfWords() << endmsg;
86 logstr << MYLEVEL << "FebID = 0x" << MSG::hex << getHeader32(FEBID) << endmsg;
87 logstr << MYLEVEL << "FebSN = 0x" << MSG::hex << getHeader32(FEB_SN) << endmsg;
88 logstr << MYLEVEL << "ResultsOff1 = 0x" << MSG::hex << getHeader16(ResultsOff1) << endmsg;
89 logstr << MYLEVEL << "ResultsDim1 = 0x" << MSG::hex << getHeader16(ResultsDim1) << endmsg;
90 logstr << MYLEVEL << "ResultsOff2 = 0x" << MSG::hex << getHeader16(ResultsOff2) << endmsg;
91 logstr << MYLEVEL << "ResultsDim2 = 0x" << MSG::hex << getHeader16(ResultsDim2) << endmsg;
92 logstr << MYLEVEL << "RawDataBlkOff = 0x" << MSG::hex << getHeader16(RawDataBlkOff) << endmsg;
93 logstr << MYLEVEL << "RawDataBlkDim = 0x" << MSG::hex << getHeader16(RawDataBlkDim) << endmsg;
94 logstr << MYLEVEL << "************************************************************************"<< MSG::dec << endmsg;
95
96 int size = getNumberOfWords();
97 for(int i=0;i<size;i++) {
98 logstr << MYLEVEL << MSG::hex << i << " : " << MSG::hex << m_FebBlock+i << " : " << MSG::hex << m_FebBlock[i] << endmsg;
99 }
100
101 if(m_MaskPointer) size = 4; else size = 0;
102 logstr << MYLEVEL << "Mask Block size = " << MSG::hex << size << endmsg;
103 logstr << MYLEVEL << "Mask Block address = " << MSG::hex << m_MaskPointer << endmsg;
104 for(int i=0;i<size;i++) {
105 logstr << MYLEVEL << i << " : " << MSG::hex << m_MaskPointer[i] << endmsg;
106 }
107 logstr << MYLEVEL << "End of Mask Block" << endmsg;
108#endif
109 }
110
111 return true;
112}

◆ setPulsed()

void LArRodBlockStructure::setPulsed ( const unsigned channelNumber)
virtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >.

Definition at line 67 of file LArRodBlockStructure.cxx.

68{
69 std::cout << "Error: Function setPulsed not implemented in this instance of LArRodBlockStructure!\n";
70 return;
71}

◆ setRawData()

void LArRodBlockStructure::setRawData ( const int channel,
const std::vector< short > & samples,
const uint32_t gain )
virtualinherited

Reimplemented in LArRodBlockPhysicsV0, LArRodBlockPhysicsV1, LArRodBlockPhysicsV2, LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 111 of file LArRodBlockStructure.cxx.

112{
113 std::cout << "Error: Function setRawData not implemented in this instance of LArRodBlockStructure!\n";
114 return;
115}

◆ setRawDataFixed()

void LArRodBlockStructure::setRawDataFixed ( const int channel,
const std::vector< short > & samples,
const uint32_t gain )
virtualinherited

Reimplemented in LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 124 of file LArRodBlockStructure.cxx.

125{
126 std::cout << "Error: Function setRawDataFixed not implemented in this instance of LArRodBlockStructure!\n";
127 return;
128}

◆ setSumE()

void LArRodBlockStructure::setSumE ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 216 of file LArRodBlockStructure.cxx.

217{
218 // Do not set anything
219 return;
220}

◆ setTDCPhase()

void LArRodBlockStructure::setTDCPhase ( const uint8_t n)
virtualinherited

Reimplemented in LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 142 of file LArRodBlockStructure.cxx.

143{
144 std::cout << "Error: Function setTDCPhase not implemented in this instance of LArRodBlockStructure!\n";
145 return;
146}

◆ sortDataVector() [1/5]

void LArRodBlockStructure::sortDataVector ( std::vector< const LArAccumulatedCalibDigit * > & )
virtualinherited

◆ sortDataVector() [2/5]

void LArRodBlockStructure::sortDataVector ( std::vector< const LArAccumulatedDigit * > & )
virtualinherited

◆ sortDataVector() [3/5]

void LArRodBlockStructure::sortDataVector ( std::vector< const LArCalibDigit * > & )
virtualinherited

◆ sortDataVector() [4/5]

void LArRodBlockStructure::sortDataVector ( std::vector< const LArDigit * > & )
virtualinherited

◆ sortDataVector() [5/5]

void LArRodBlockStructure::sortDataVector ( std::vector< const LArRawChannel * > & )
virtualinherited

Member Data Documentation

◆ m_channelsPerFEB

int LArRodBlockStructure::m_channelsPerFEB
protectedinherited

Definition at line 219 of file LArRodBlockStructure.h.

◆ m_EnergyIndex

int LArRodBlockPhysicsV4::m_EnergyIndex = 0
private

Definition at line 103 of file LArRodBlockPhysicsV4.h.

◆ m_EnergyPointer

const uint16_t* LArRodBlockPhysicsV4::m_EnergyPointer = nullptr
private

Definition at line 107 of file LArRodBlockPhysicsV4.h.

◆ m_error_next_feb

bool LArRodBlockStructure::m_error_next_feb
protectedinherited

Definition at line 237 of file LArRodBlockStructure.h.

◆ m_Ex

int32_t LArRodBlockStructure::m_Ex
protectedinherited

Definition at line 203 of file LArRodBlockStructure.h.

◆ m_Ey

int32_t LArRodBlockStructure::m_Ey
protectedinherited

Definition at line 204 of file LArRodBlockStructure.h.

◆ m_Ez

int32_t LArRodBlockStructure::m_Ez
protectedinherited

Definition at line 205 of file LArRodBlockStructure.h.

◆ m_FebBlock

const uint32_t* LArRodBlockStructure::m_FebBlock
protectedinherited

Definition at line 221 of file LArRodBlockStructure.h.

◆ m_FebBlockSize

int32_t LArRodBlockStructure::m_FebBlockSize
protectedinherited

Definition at line 223 of file LArRodBlockStructure.h.

◆ m_fixedGain

int LArRodBlockPhysicsV4::m_fixedGain
private

Definition at line 117 of file LArRodBlockPhysicsV4.h.

◆ m_GainPointer

const uint32_t* LArRodBlockPhysicsV4::m_GainPointer = nullptr
private

Definition at line 110 of file LArRodBlockPhysicsV4.h.

◆ m_HotCellsPointer

const uint16_t* LArRodBlockPhysicsV4::m_HotCellsPointer = nullptr
private

Definition at line 112 of file LArRodBlockPhysicsV4.h.

◆ m_iHeadBlockSize

unsigned short LArRodBlockStructure::m_iHeadBlockSize
protectedinherited

Definition at line 217 of file LArRodBlockStructure.h.

◆ m_logstr

MsgStream LArRodBlockStructure::m_logstr
protectedinherited

Definition at line 244 of file LArRodBlockStructure.h.

◆ m_MaskPointer

const uint32_t* LArRodBlockPhysicsV4::m_MaskPointer = nullptr
private

Definition at line 111 of file LArRodBlockPhysicsV4.h.

◆ m_mFebBlocks

FEBMAPTYPE LArRodBlockStructure::m_mFebBlocks
protectedinherited

Definition at line 228 of file LArRodBlockStructure.h.

◆ m_MiddleHeaderSize

int32_t LArRodBlockStructure::m_MiddleHeaderSize
protectedinherited

Definition at line 233 of file LArRodBlockStructure.h.

◆ m_numberOfEx

uint32_t LArRodBlockStructure::m_numberOfEx
protectedinherited

Definition at line 210 of file LArRodBlockStructure.h.

◆ m_numberOfEy

uint32_t LArRodBlockStructure::m_numberOfEy
protectedinherited

Definition at line 211 of file LArRodBlockStructure.h.

◆ m_numberOfEz

uint32_t LArRodBlockStructure::m_numberOfEz
protectedinherited

Definition at line 212 of file LArRodBlockStructure.h.

◆ m_numberOfSumE

uint32_t LArRodBlockStructure::m_numberOfSumE
protectedinherited

Definition at line 213 of file LArRodBlockStructure.h.

◆ m_OfflineToRawGainMap

const uint32_t LArRodBlockStructure::m_OfflineToRawGainMap ={3,2,1}
staticprotectedinherited

Definition at line 17 of file LArRodBlockStructure.h.

◆ m_pRODblock

std::vector<uint32_t>* LArRodBlockStructure::m_pRODblock
protectedinherited

Definition at line 226 of file LArRodBlockStructure.h.

◆ m_RawDataIndex

int LArRodBlockPhysicsV4::m_RawDataIndex = 0
private

Definition at line 104 of file LArRodBlockPhysicsV4.h.

◆ m_RawDataPointer

const uint16_t* LArRodBlockPhysicsV4::m_RawDataPointer = nullptr
private

Definition at line 109 of file LArRodBlockPhysicsV4.h.

◆ m_RawToOfflineGainMap

const uint32_t LArRodBlockStructure::m_RawToOfflineGainMap ={0, 2, 1,0}
staticprotectedinherited

Definition at line 16 of file LArRodBlockStructure.h.

◆ m_rearrangeFirstSample

unsigned int LArRodBlockStructure::m_rearrangeFirstSample
protectedinherited

Definition at line 235 of file LArRodBlockStructure.h.

◆ m_ROB_to_decode

int32_t LArRodBlockStructure::m_ROB_to_decode
protectedinherited

Definition at line 240 of file LArRodBlockStructure.h.

◆ m_RodBlock

const uint32_t* LArRodBlockStructure::m_RodBlock
protectedinherited

Definition at line 222 of file LArRodBlockStructure.h.

◆ m_RodBlockSize

int32_t LArRodBlockStructure::m_RodBlockSize
protectedinherited

Definition at line 224 of file LArRodBlockStructure.h.

◆ m_SumE

int32_t LArRodBlockStructure::m_SumE
protectedinherited

Definition at line 206 of file LArRodBlockStructure.h.

◆ m_SumPointer

const int32_t* LArRodBlockPhysicsV4::m_SumPointer = nullptr
private

Definition at line 114 of file LArRodBlockPhysicsV4.h.

◆ m_TimeQualityIndex

int LArRodBlockPhysicsV4::m_TimeQualityIndex = 0
private

Definition at line 105 of file LArRodBlockPhysicsV4.h.

◆ m_TimeQualityPointer

const uint16_t* LArRodBlockPhysicsV4::m_TimeQualityPointer = nullptr
private

Definition at line 108 of file LArRodBlockPhysicsV4.h.

◆ m_TowerIndex

int LArRodBlockPhysicsV4::m_TowerIndex = 0
private

Definition at line 106 of file LArRodBlockPhysicsV4.h.

◆ m_TowerPointer

const uint8_t* LArRodBlockPhysicsV4::m_TowerPointer = nullptr
private

Definition at line 113 of file LArRodBlockPhysicsV4.h.

◆ m_vFragment

std::vector<uint32_t>* LArRodBlockStructure::m_vFragment
protectedinherited

Definition at line 225 of file LArRodBlockStructure.h.

◆ m_virtualROBJump

uint32_t LArRodBlockStructure::m_virtualROBJump
protectedinherited

Definition at line 239 of file LArRodBlockStructure.h.

◆ m_virtualROBPointer

const uint32_t* LArRodBlockStructure::m_virtualROBPointer
protectedinherited

Definition at line 241 of file LArRodBlockStructure.h.

◆ m_virtualROBPointerLocal

const uint32_t* LArRodBlockStructure::m_virtualROBPointerLocal
protectedinherited

Definition at line 242 of file LArRodBlockStructure.h.


The documentation for this class was generated from the following files: