ATLAS Offline Software
Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Private Attributes | Static Private Attributes | List of all members
LArRodBlockPhysicsV3 Class Reference

#include <LArRodBlockPhysicsV3.h>

Inheritance diagram for LArRodBlockPhysicsV3:
Collaboration diagram for LArRodBlockPhysicsV3:

Public Member Functions

 LArRodBlockPhysicsV3 ()
 
std::string BlockType ()
 
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 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 setEx (double Ex)
 
virtual void setEy (double Ey)
 
virtual void setEz (double Ez)
 
virtual void finalizeFEB ()
 
virtual void concatinateFEBs ()
 
virtual void sortDataVector (std::vector< const LArRawChannel * > &)
 
virtual void sortDataVector (std::vector< const LArDigit * > &)
 
virtual bool canSetEnergy ()
 
virtual bool canSetRawData ()
 
template<class RAWDATA >
bool operator() (const RAWDATA *ch1, const RAWDATA *ch2) const
 
virtual void setEThreshold (uint16_t thres)
 
virtual void setOffTimeCut (uint16_t TimeCut)
 
virtual int setGain (const int)
 
virtual bool setPointers ()
 
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 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 uint16_t getNumberOfHotCells () const
 
virtual uint16_t getNumberOfHotCellsInTime () const
 
virtual uint16_t getHotCellThreshold () const
 
virtual uint16_t getOfftimeThreshold () const
 
virtual int32_t getEx () const
 
virtual int32_t getEy () const
 
virtual int32_t getEz () const
 
virtual uint16_t getHottestCellIndex ()
 
virtual uint32_t getHottestCellEnergy () const
 
virtual uint32_t hasPhysicsBlock () const
 
virtual uint32_t hasRawDataBlock () const
 
virtual uint32_t hasControlWordBlock () const
 
template<class RAWDATA >
bool operator() ()(const RAWDATA *ch1
 
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 setTDCPhase (const uint8_t n)
 
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 setSumE (double)
 
virtual void sortDataVector (std::vector< const LArCalibDigit * > &)
 
virtual void sortDataVector (std::vector< const LArAccumulatedCalibDigit * > &)
 
virtual void sortDataVector (std::vector< const LArAccumulatedDigit * > &)
 
virtual bool canSetRawDataFixed ()
 
virtual bool canSetCalibration ()
 
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 hasCalibBlock () const
 
virtual uint32_t hasAccumBlock () const
 
virtual uint32_t hasControlWords () 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 getResults1Size () const
 
virtual uint16_t getResults2Size () const
 
virtual uint16_t getRawDataSize () const
 
virtual uint16_t getNbSweetCells1 () const
 
virtual uint16_t getNbSweetCells2 () const
 
virtual uint32_t getDspCodeVersion () const
 
virtual int32_t getDspEventCounter () const
 
virtual uint32_t onlineCheckSum () const
 
virtual uint32_t offlineCheckSum () 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
 
bool report_error (void) const
 

Protected Types

enum  {
  NWTot, NWTot_h, FEBID, FEBID_h,
  FEB_SN, FEB_SN_h, NGainNSamples, SumBlkOffset,
  CounterBlkOffset, EBlkOffset, GainBlkOffset, FebInfoBlkOffset,
  TimeQualityBlkOffset, RawDataBlkOffset, Status2, Status1,
  BCID, EventID, endtag
}
 
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
 

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

void clearBlocks ()
 
virtual void resetPointers ()
 
int FebToRodChannel (int ch) const
 
void setNextEnergy (const uint16_t energy, const int16_t time, const int16_t quality, const uint32_t gain)
 

Private Attributes

std::vector< uint32_t > m_SumBlkBlock
 
std::vector< uint32_t > m_CounterBlkBlock
 
std::vector< uint32_t > m_EnergyBlock
 
std::vector< uint32_t > m_GainBlock
 
std::vector< uint32_t > m_FebInfoBlock
 
std::vector< uint32_t > m_TimeQualityBlock
 
std::vector< uint32_t > m_RawDataBlock
 
int m_RawDataCounter = 0
 
int m_RawDataIndex = 0
 
int m_CounterIndex = 0
 
int m_EnergyIndex = 0
 
int m_FebInfoIndex = 0
 
int m_GainIndex = 0
 
int m_TimeQualityIndex = 0
 
int m_SumBlkIndex = 0
 
const uint32_t * m_SumBlkPtr
 
const uint16_t * m_CounterPtr
 
const uint16_t * m_EnergyPtr
 
const int16_t * m_TimeQualityPtr
 
const uint32_t * m_GainPtr
 
const int16_t * m_FebInfoDataPtr
 
const int16_t * m_RawDataPtr
 
const uint32_t * m_RawDataFlagsPtr
 
int m_NSumBlkWords
 
int m_NCounterBlkWords
 
int m_NEnergyBlkWords
 
int m_NGainBlkWords
 
int m_NFebInfoBlkWords
 
int m_NFlaggingWords
 
uint16_t m_numberHotCell = 0U
 
uint16_t m_numberHotCellOffTime = 0U
 
uint16_t m_EnergyThreshold
 
int16_t m_OffTimeCut
 
uint16_t m_HottestCellIndex
 
uint32_t m_HottestCellEnergy
 
const LArOnlineIDm_onlineHelper
 
MsgStream m_logstr
 

Static Private Attributes

static const uint32_t m_DummyBitMap [4] ={0,0,0,0}
 

Detailed Description

Definition at line 49 of file LArRodBlockPhysicsV3.h.

Member Typedef Documentation

◆ FEBMAPTYPE

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

Definition at line 233 of file LArRodBlockStructure.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
protected
Enumerator
NWTot 
NWTot_h 
FEBID 
FEBID_h 
FEB_SN 
FEB_SN_h 
NGainNSamples 
SumBlkOffset 
CounterBlkOffset 
EBlkOffset 
GainBlkOffset 
FebInfoBlkOffset 
TimeQualityBlkOffset 
RawDataBlkOffset 
Status2 
Status1 
BCID 
EventID 
endtag 

Definition at line 57 of file LArRodBlockPhysicsV3.h.

57  {
58  NWTot,
59  NWTot_h,
60  FEBID,
61  FEBID_h,
62  FEB_SN,
63  FEB_SN_h,
64  NGainNSamples, // number of samples sent by the FEB and used at the raw data level in the dsp to apply Optimal Filtering
65  SumBlkOffset, // summary block offset (fixed length)
66  CounterBlkOffset, // counter block offset (fixed length)
67  EBlkOffset, // Energy block offset (fixed length)
68  GainBlkOffset, // Gain block offset (fixed length)
69  FebInfoBlkOffset, // Technical FEB information usefull for offline correction
70  TimeQualityBlkOffset, // Time and quality variable length block
71  RawDataBlkOffset, // Raw data block offset
72  Status2, // This element and the ones below this are not used by the converter
73  Status1,
74  BCID,
75  EventID,
76  // endtag1, // remove if the number of words is even
77  endtag
78  };

◆ anonymous enum

anonymous enum
protectedinherited
Enumerator
NWTot 
NWTot_h 
FEBID 
FEBID_h 
FEBSN 
FEBSN_h 
endtag 

Definition at line 51 of file LArRodBlockStructure.h.

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

Constructor & Destructor Documentation

◆ LArRodBlockPhysicsV3()

LArRodBlockPhysicsV3::LArRodBlockPhysicsV3 ( )

Definition at line 37 of file LArRodBlockPhysicsV3.cxx.

39 {
40  // retrieve onlineHelper
41  const LArOnlineID* online_id;
43  ISvcLocator* svcLoc = Gaudi::svcLocator( );
44  StatusCode sc =svcLoc->service( "DetectorStore", detStore );
45  if (sc.isFailure()) {
46  m_logstr << MSG::ERROR << "Unable to locate DetectorStore" << endmsg;
47  std::abort();
48  }
49  sc = detStore->retrieve(online_id, "LArOnlineID");
50  if (sc.isFailure()) {
51  m_logstr << MSG::FATAL << "Could not get LArOnlineID helper !" << endmsg;
52  std::abort();
53  }
54  else {
55  m_onlineHelper=online_id;
56  m_logstr << MSG::DEBUG << " Found the LArOnlineID helper. " << endmsg;
57  }
58 
59  m_iHeadBlockSize=endtag/2; // The implicit cast rounds down to the right size
60  m_NSumBlkWords=4; // BL : words of 32 bits here
63  m_NEnergyBlkWords=128*16/32;
64  m_NGainBlkWords=128*2/32;
65 
66  // Move this to properties of the algorithm but set default values.
67  m_EnergyThreshold = 100; // MeV
68  m_OffTimeCut = 30; // ns
69 
71 
73  m_vFragment=NULL;
74  m_FebBlock=NULL;
75  m_pRODblock=NULL;
76 
77  m_Ex=0;
78  m_Ey=0;
79  m_Ez=0;
80  m_HottestCellIndex=255; // 255 is unphysical since cells index are between 0 and 127 per FEB.
82 
83  m_CounterPtr=NULL;
84  m_EnergyPtr=NULL;
85  m_FebInfoDataPtr=NULL;
86  m_GainPtr=NULL;
87  m_RawDataFlagsPtr=NULL;
88  m_RawDataPtr=NULL;
89  m_SumBlkPtr=NULL;
90  m_TimeQualityPtr=NULL;
91 }

Member Function Documentation

◆ BlockType()

std::string LArRodBlockPhysicsV3::BlockType ( )
inline

Definition at line 81 of file LArRodBlockPhysicsV3.h.

81 { return std::string("RodBlockPhysicsV3");}

◆ canIncludeRawData()

virtual bool LArRodBlockStructure::canIncludeRawData ( )
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6, and LArRodBlockPhysicsV5.

Definition at line 101 of file LArRodBlockStructure.h.

101 {return false;}

◆ canSetCalibration()

virtual bool LArRodBlockStructure::canSetCalibration ( )
inlinevirtualinherited

◆ canSetEnergy()

virtual bool LArRodBlockPhysicsV3::canSetEnergy ( )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 102 of file LArRodBlockPhysicsV3.h.

102 { return true;}

◆ canSetNTrigger()

virtual bool LArRodBlockStructure::canSetNTrigger ( )
inlinevirtualinherited

Definition at line 100 of file LArRodBlockStructure.h.

100 {return false;}

◆ canSetRawData()

virtual bool LArRodBlockPhysicsV3::canSetRawData ( )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 103 of file LArRodBlockPhysicsV3.h.

103 {return true;}

◆ canSetRawDataFixed()

virtual bool LArRodBlockStructure::canSetRawDataFixed ( )
inlinevirtualinherited

Reimplemented in LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 98 of file LArRodBlockStructure.h.

98 {return false;}

◆ clearBlocks()

void LArRodBlockPhysicsV3::clearBlocks ( )
private

Definition at line 94 of file LArRodBlockPhysicsV3.cxx.

95 {
96  m_SumBlkBlock.clear();
97  m_CounterBlkBlock.clear();
98  m_EnergyBlock.clear();
99  m_GainBlock.clear();
100  m_TimeQualityBlock.clear();
101  m_RawDataBlock.clear();
102  m_FebInfoBlock.clear();
103 }

◆ concatinateFEBs()

void LArRodBlockPhysicsV3::concatinateFEBs ( )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 678 of file LArRodBlockPhysicsV3.cxx.

679 {
680  //std::cout << "Concatinating FEBs. Have "<< m_mFebBlocks.size() <<" febs." << std::endl;
681  FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin();
682  FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end();
683  FEBMAPTYPE::const_iterator feb_it;
684  for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) {
685  if (feb_it!=feb_it_b) //Not first Feb
686 /*
687  if (fullHeader) {//Add middle header
688  m_pRODblock->push_back(fullHeader->version().full());//Format Version number
689  m_pRODblock->push_back(fullHeader->source_id()); //Source identifer
690  m_pRODblock->push_back(fullHeader->run_no());
691  m_pRODblock->push_back(fullHeader->lvl1_id()); //Level 1 identifer
692  m_pRODblock->push_back(fullHeader->bc_id()); //Bunch Crossing identifer
693  m_pRODblock->push_back(fullHeader->lvl1_type()); //Level 1 trigger type
694  m_pRODblock->push_back(fullHeader->detev_type()); //Detector event type
695  }
696  else //No ROD-Header
697 */
698  m_pRODblock->resize( m_pRODblock->size()+m_MiddleHeaderSize);
699 
700  //Add feb data to rod data block
701  m_pRODblock->insert (m_pRODblock->end(),
702  feb_it->second.begin(), feb_it->second.end());
703  } //end for feb_it
704 
705  m_mFebBlocks.clear();
706  return;
707 }

◆ dumpFragment()

void LArRodBlockStructure::dumpFragment ( )
virtualinherited

Definition at line 175 of file LArRodBlockStructure.cxx.

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

◆ FebToRodChannel()

int LArRodBlockPhysicsV3::FebToRodChannel ( int  ch) const
inlineprivatevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 211 of file LArRodBlockPhysicsV3.h.

213 {return (ch>>3) + ((ch&0x7)<<4);
214 // return ch;
215 }

◆ finalizeFEB()

void LArRodBlockPhysicsV3::finalizeFEB ( )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 498 of file LArRodBlockPhysicsV3.cxx.

499 {
500 //Complete non-complete Energy block
502  setNextEnergy((uint16_t)0,(int16_t)32767,(int32_t)-32767,(uint32_t)0);//E=0,t=32767,q=-32767,G=0
503 
504  uint16_t n;
505  uint16_t BlockOffset;
506 
507  // Summary block....
508  n = m_SumBlkBlock.size();
509  BlockOffset=LE_getVectorHeader16(SumBlkOffset);
510  //Check if Summary Block exists and is not yet part of the fragment
511  LARBSDBG("Checking for Summary Block n=" << n << "BlockOffset=" << BlockOffset);
512  if (n && !BlockOffset)
513  {
515  BlockOffset=LE_getVectorHeader16(SumBlkOffset);
516  m_logstr << MSG::DEBUG << "In finalizeFEB-------------------->>>>> " << "Checking for Summary Block : length= " << n << " BlockOffset=" << BlockOffset << endmsg;
517  for (unsigned i=0;i<n;i++)
518  m_vFragment->push_back(m_SumBlkBlock[i]);
519  }
520 
521  // Counter block....
522 
523  // fill info from counters
524  ShortLong twoValues{};
525  twoValues.s[0]=(uint16_t)m_numberHotCell;
526  twoValues.s[1]=(uint16_t)m_numberHotCellOffTime;
527  m_CounterBlkBlock.push_back(twoValues.l);
528 
529  twoValues.s[0]=(uint16_t)m_EnergyThreshold;
530  twoValues.s[1]=(uint16_t)m_OffTimeCut;
531  m_CounterBlkBlock.push_back(twoValues.l);
532 
533  // Write the Energy threshold used to determine which cell is a hot cell in the first
534  // 32 bit word of the counters
535  // Write the Energy Ex of the ROD block in a 32 bits word
536  // Write the Energy Ey of the ROD block in a 32 bits word
537  // Ex and Ey have to be 32 bits words as they are sums of multiple 16 bits words
538 
539 
540 
541 
542 /* uint32_t aux;
543  aux = abs(m_Ex);
544  if (m_Ex<0) aux|=0x80000000;
545  m_CounterBlkBlock.push_back(aux);
546  aux = abs(m_Ey);
547  if (m_Ey<0) aux|=0x80000000;
548  m_CounterBlkBlock.push_back(aux);
549 */
550 
551  uint32_t* aux = (uint32_t*)&m_Ex;
552  m_CounterBlkBlock.push_back(*aux);
553  aux = (uint32_t*)&m_Ey;
554  m_CounterBlkBlock.push_back(*aux);
555 
556  // write the hottest cell index for that FEB and its energy in MeV
557 
558  twoValues.s[0]=(uint16_t)((m_HottestCellIndex<<9)|((uint16_t)((m_HottestCellEnergy>>16))&0x01FF));
559  twoValues.s[1]=(uint16_t)m_HottestCellEnergy;
560  m_CounterBlkBlock.push_back(twoValues.l);
561 
562  aux = (uint32_t*)&m_Ez;
563  m_CounterBlkBlock.push_back(*aux);
564 
565  n = m_CounterBlkBlock.size();
567  //Check if Counter Block exists and is not yet part of the fragment
568  LARBSDBG("Checking for Counter Block n=" << n << "BlockOffset=" << BlockOffset);
569  if (n && !BlockOffset)
570  {
573  m_logstr << MSG::INFO << "In finalyseFEB-------------------->>>>> " << "Checking for Counter Block : length= " << n << " BlockOffset=" << BlockOffset << endmsg;
574  for (unsigned i=0;i<n;i++)
575  m_vFragment->push_back(m_CounterBlkBlock[i]);
576  }
577 
578  // Energy block...
579  n = m_EnergyBlock.size();
580  BlockOffset=LE_getVectorHeader16(EBlkOffset);
581  LARBSDBG("Checking Energy Block n=" << n << "BlockOffset=" << BlockOffset);
582  //Check if Energy-Block exists and is not yet part of the fragment
583  if (n && !BlockOffset)
584  {
586  BlockOffset=LE_getVectorHeader16(EBlkOffset);
587  m_logstr << MSG::DEBUG << "In finalyseFEB-------------------->>>>> " << "Checking for Energy Block : length= " << n << " BlockOffset=" << BlockOffset << endmsg;
588  //m_logstr << MSG::DEBUG << "In finalyseFEB-------------------->>>>> " << "Checking for Energy Block : m_EnergyIndex= " << m_EnergyIndex << endmsg;
589  for(unsigned int i=0;i<n;i++)
590  m_vFragment->push_back(m_EnergyBlock[i]);
591  }
592 
593  // Gain block...
594  n = m_GainBlock.size();
595  BlockOffset=LE_getVectorHeader16(GainBlkOffset);
596  LARBSDBG("Checking Gain Block n=" << n << "BlockOffset=" << BlockOffset);
597  //Check if Gain-Block exists and is not yet part of the fragment
598  if (n && !BlockOffset)
599  {
601  BlockOffset=LE_getVectorHeader16(GainBlkOffset);
602  //m_logstr << MSG::DEBUG << "In finalyseFEB-------------------->>>>> " << "Checking for Gain Block : length= " << n << " BlockOffset=" << BlockOffset << endmsg;
603  for(unsigned int i=0;i<n;i++)
604  m_vFragment->push_back(m_GainBlock[i]);
605  }
606 
607 
608  // FeBInfo Block... // offline encoder just put dummy info there
609  for (int nword=0; nword<m_NFebInfoBlkWords ; nword++)
610  m_FebInfoBlock.push_back(0L);
611 
612  n = m_FebInfoBlock.size();
614  LARBSDBG("Checking FebInfo Block n=" << n << "BlockOffset=" << BlockOffset);
615  //Check if Gain-Block exists and is not yet part of the fragment
616  if (n && !BlockOffset)
617  {
620  //m_logstr << MSG::DEBUG << "In finalyseFEB-------------------->>>>> " << "Checking for FEB Info Block : length= " << n << " BlockOffset=" << BlockOffset << endmsg;
621  for(unsigned int i=0;i<n;i++)
622  m_vFragment->push_back(m_FebInfoBlock[i]);
623  }
624 
625  // Time and Quality block
626  n = m_TimeQualityBlock.size();
628  LARBSDBG("Checking Time and Quality Block n=" << n << "BlockOffset=" << BlockOffset);
629  //Check if Time and Quality Block exists and is not yet part of the fragment
630  if (n && !BlockOffset)
631  {
634  m_logstr << MSG::DEBUG << "In finalyseFEB-------------------->>>>> " << "Checking for Time and Quality Block : length= " << n << " BlockOffset=" << BlockOffset << endmsg;
635  for(unsigned int i=0;i<n;i++)
636  m_vFragment->push_back(m_TimeQualityBlock[i]);
637  }
638 
639  // Raw data
640  LARBSDBG("Checking Raw Data Block");
641  n = m_RawDataBlock.size();
643  LARBSDBG("Checking Raw Data Block. n=" << n << "BlockOffset=" << BlockOffset);
644  //Check if Raw Data block exists and is not yet part of the fragment
645  if ((n>m_NFlaggingWords) && (!BlockOffset))
646  {
648  for(unsigned int i=0;i<n;i++)
649  m_vFragment->push_back(m_RawDataBlock[i]);
650  }
651  setHeader32(NWTot,m_vFragment->size());
652 
653  // m_logstr << MSG::DEBUG << "############################################################################>>>>> " << endmsg;
654  // m_logstr << MSG::DEBUG << "In finalyseFEB-------------------->>>>> Ofsets summary (en hexa) : " << endmsg;
655  // m_logstr << MSG::DEBUG << "Summary Block Offset : " << LE_getVectorHeader16(SumBlkOffset) << endmsg;
656  // m_logstr << MSG::DEBUG << "Counter Block Offset : " << LE_getVectorHeader16(CounterBlkOffset) << endmsg;
657  // m_logstr << MSG::DEBUG << "Energy Block Offset : " << LE_getVectorHeader16(EBlkOffset) << endmsg;
658  // m_logstr << MSG::DEBUG << "Gain Block Offset : " << LE_getVectorHeader16(GainBlkOffset) << endmsg;
659  // m_logstr << MSG::DEBUG << "Gain Block Offset : " << LE_getVectorHeader16(FebInfoBlkOffset) << endmsg;
660  // m_logstr << MSG::DEBUG << "Raw Data Block Offset: " << LE_getVectorHeader16(RawDataBlkOffset) << endmsg;
661  // m_logstr << MSG::DEBUG << "Number of hot cells : " << m_numberHotCell << endmsg;
662  // m_logstr << MSG::DEBUG << "############################################################################>>>>> " << endmsg;
663 
664  m_logstr << MYLEVEL << "***********************************************************************"<< endmsg;
665  m_logstr << MYLEVEL << "m_HottestCellIndex : "<< m_HottestCellIndex << endmsg;
666  m_logstr << MYLEVEL << "m_HottestCellEnergy : "<< m_HottestCellEnergy << endmsg;
667  m_logstr << MYLEVEL << "***********************************************************************"<< endmsg;
668  m_logstr << MYLEVEL << "m_Ex : "<< m_Ex << endmsg;
669  m_logstr << MYLEVEL << "m_Ey : "<< m_Ey << endmsg;
670  m_logstr << MYLEVEL << "***********************************************************************"<< endmsg;
671 
672 
673  clearBlocks();
674  return;
675 }

◆ getBit()

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

Definition at line 433 of file LArRodBlockStructure.h.

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 }

◆ getCtrl1()

uint16_t LArRodBlockPhysicsV3::getCtrl1 ( uint32_t  adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 815 of file LArRodBlockPhysicsV3.cxx.

816 {
819  x=x>>16;
820  uint16_t ctrl=x;
821  return ctrl;
822 }

◆ getCtrl2()

uint16_t LArRodBlockPhysicsV3::getCtrl2 ( uint32_t  adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 824 of file LArRodBlockPhysicsV3.cxx.

825 {
828  x=x&0xffff;
829  uint16_t ctrl=x;
830  return ctrl;
831 }

◆ getCtrl3()

uint16_t LArRodBlockPhysicsV3::getCtrl3 ( uint32_t  adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 833 of file LArRodBlockPhysicsV3.cxx.

834 {
837  x=x>>16;
838  uint16_t ctrl=x;
839  return ctrl;
840 }

◆ getDAC()

uint16_t LArRodBlockStructure::getDAC ( ) const
inlinevirtualinherited

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

Definition at line 468 of file LArRodBlockStructure.h.

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

◆ getDelay()

uint16_t LArRodBlockStructure::getDelay ( ) const
inlinevirtualinherited

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

Definition at line 474 of file LArRodBlockStructure.h.

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

◆ getDspCodeVersion()

uint32_t LArRodBlockStructure::getDspCodeVersion ( ) const
virtualinherited

Definition at line 258 of file LArRodBlockStructure.cxx.

259 {
260  int i=getNumberOfWords()-2;
261  return m_FebBlock[i];
262 }

◆ getDspEventCounter()

int32_t LArRodBlockStructure::getDspEventCounter ( ) const
virtualinherited

Definition at line 264 of file LArRodBlockStructure.cxx.

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

◆ getEx()

int32_t LArRodBlockPhysicsV3::getEx ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 315 of file LArRodBlockPhysicsV3.h.

316 {
317 /* int32_t ex;
318  uint16_t aux;
319  aux = *(m_CounterPtr+4);
320  ex = (int32_t)((*(m_CounterPtr+5)<<16)|(aux & (~(1<<16))));
321  ex=(ex&0x01FFFFFF);
322  if ((*(m_CounterPtr+5))&(1<<15)) // number id negative
323  ex = -ex;
324  return ex;*/
325  const uint32_t* copy32u = reinterpret_cast<const uint32_t*>(m_CounterPtr+4);
326  return *copy32u;
327 }

◆ getEy()

int32_t LArRodBlockPhysicsV3::getEy ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 329 of file LArRodBlockPhysicsV3.h.

330 {
331 /* int32_t ey;
332  uint16_t aux;
333  aux = *(m_CounterPtr+6);
334  ey = (int32_t)((*(m_CounterPtr+7)<<16)|(aux & (~(1<<16))));
335  ey=(ey&0x01FFFFFF);
336  if ((*(m_CounterPtr+7))&(1<<15)) // number id negative
337  ey = -ey;
338  return ey;*/
339  const uint32_t* copy32u = reinterpret_cast<const uint32_t*>(m_CounterPtr+6);
340  return *copy32u;
341 }

◆ getEz()

int32_t LArRodBlockPhysicsV3::getEz ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 343 of file LArRodBlockPhysicsV3.h.

344 {
345  const uint32_t* aux = reinterpret_cast<const uint32_t*>(m_CounterPtr+10);
346  return *aux;
347 }

◆ getFEBID()

uint32_t LArRodBlockStructure::getFEBID ( ) const
inlineinherited

Definition at line 297 of file LArRodBlockStructure.h.

298 {return getHeader32(FEBID);}

◆ getFEBSN()

uint32_t LArRodBlockStructure::getFEBSN ( ) const
inlineinherited

Definition at line 300 of file LArRodBlockStructure.h.

301 {return getHeader32(FEBSN);}

◆ getHeader16()

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

Definition at line 355 of file LArRodBlockStructure.h.

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 }

◆ getHeader32()

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

Definition at line 365 of file LArRodBlockStructure.h.

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

◆ getHotCellThreshold()

uint16_t LArRodBlockPhysicsV3::getHotCellThreshold ( ) const
inlinevirtual

Definition at line 306 of file LArRodBlockPhysicsV3.h.

307 {
308  return (uint16_t) (*(m_CounterPtr+2));
309 }

◆ getHottestCellEnergy()

uint32_t LArRodBlockPhysicsV3::getHottestCellEnergy ( ) const
inlinevirtual

Definition at line 354 of file LArRodBlockPhysicsV3.h.

355 {
356 
357  uint32_t aux;
358  aux = * ((uint32_t *)(m_CounterPtr+8));
359  return (aux&0x01FFFFFF);
360 }

◆ getHottestCellIndex()

uint16_t LArRodBlockPhysicsV3::getHottestCellIndex ( )
inlinevirtual

Definition at line 349 of file LArRodBlockPhysicsV3.h.

350 {
351  return ((uint16_t) (*(m_CounterPtr+8)>>9));
352 }

◆ getNbSweetCells1()

uint16_t LArRodBlockStructure::getNbSweetCells1 ( ) const
virtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 255 of file LArRodBlockStructure.cxx.

255 { return 0; }

◆ getNbSweetCells2()

uint16_t LArRodBlockStructure::getNbSweetCells2 ( ) const
virtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 256 of file LArRodBlockStructure.cxx.

256 { 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 LArRodBlockCalibrationV3.

Definition at line 94 of file LArRodBlockStructure.cxx.

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

◆ 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 100 of file LArRodBlockStructure.cxx.

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

◆ getNextEnergy()

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

Reimplemented from LArRodBlockStructure.

Definition at line 217 of file LArRodBlockPhysicsV3.h.

218 {
219  LARBSDBG("in LArRodBlockPhysicsV3::getNextEnergy.");
220  LARBSDBG("m_channelsPerFEB=" << m_channelsPerFEB);
221  if (m_EnergyIndex>=m_channelsPerFEB) //Already beyond maximal number of channels
222  return 0;
223  if (!m_EnergyPtr) //No data block present
224  return 0;
225  uint16_t tQ; // TimeQuality word
226 
227  unsigned rodChannelNumber=m_EnergyIndex; // Index of Channel in ROD-Block
228  // channelNumber=rodChannelNumber; // Arno claims he is using FEB numbering
229  channelNumber=(rodChannelNumber>>4) + ((rodChannelNumber&0xf)<<3); //channel number of the FEB
230 
231  // get information available for all cells
232  // Energy on a 16 bit word and decode ranges
233 
234  uint16_t encodedEnergy; // 16 bits Encoded Energy word
235  int32_t aux;
236  uint16_t range; // 2 bits range
237  int32_t sign=1;
238 
239  LARBSDBG("-------->>>> in LArRodBlockPhysicsV3::getNextEnergy : decode energy.....");
240  // decode energy
241  encodedEnergy = m_EnergyPtr[m_EnergyIndex];
242  m_EnergyIndex++;
243 
244  if (encodedEnergy&0x8000) sign=-1;
245  range = ((encodedEnergy)>>13)&0x0003; // range is encoded in bits 14 and 13
246 
247  aux = (int32_t) (encodedEnergy&0x1FFF);
248  if (range==1) aux=(aux<<3)+4; // shift left by 3 bits and add 4 MeV
249  else if (range==2) aux=(aux<<6)+32; // shift left by 6 bits and add 32 MeV
250  else if (range==3) aux=(aux<<9)+256; // shift left by 9 bits and add 256 MeV
251  energy = sign*aux;
252 
253  // gain in 2 bits of a 32 bits word
254 
255  gain=(uint32_t)((m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
256 
257  // Decode Time and Quality if the information is present according to summary block
258 
259  if (getBit(m_SumBlkPtr,rodChannelNumber)) // Data has Time and Quality information
260  {
262 
263 #ifdef LARBSDBGOUTPUT
264  m_logstr <<MSG::DEBUG<<"This cell has time and Quality information "<<endmsg;
265 #endif
266 
267  // Decode Time, Quality
268  // Q in bits 0-3
269  // t in bits 4-15
270 
271  quality = (int32_t) (tQ & 0x003f);
272  tQ = tQ>>4;
273  time = (tQ<<4) + 8; // unit is 16 ps
275  }
276  else // Data has no Time and Quality information
277  {
278  time=0;
279  quality=-1;
280  }
281 
282 
283 #ifdef LARBSDBGOUTPUT
284  m_logstr <<MSG::DEBUG<<"Range = "<<range<<endmsg;
285  m_logstr <<MSG::DEBUG<<"Sign = "<<sign<<endmsg;
286  m_logstr << MSG::DEBUG<<" Encoded Energy ="<< encodedEnergy << " E=" << energy
287  << " t=" << time
288  << " Q=" << quality
289  << " G=" << gain
290  << " channel Number=" << channelNumber
291  << endmsg;
292 #endif
293 
294  return 1;
295 }

◆ getNextRawData()

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

Reimplemented from LArRodBlockStructure.

Definition at line 709 of file LArRodBlockPhysicsV3.cxx.

710 {
711  LARBSDBG("in LArRodBlockPhysicsV3::getNextRawData.");
712  LARBSDBG("m_RawDataCounter=" << m_RawDataCounter << " m_RawDataIndex="<< m_RawDataIndex);
713  LARBSDBG("m_channelsPerFEB=" << m_channelsPerFEB);
714  if(m_FebBlockSize<=m_iHeadBlockSize) return 0;
716 
718  if (!flags)
719  return 0; //Block not existing
720  if (m_RawDataCounter>=m_channelsPerFEB) //Already beyond maximal number of channels
721  return 0;
722 
723  LARBSDBG("Flags="<<flags);
724 
725  while (!getBit(m_RawDataFlagsPtr,m_RawDataCounter)) //Look for next filled channel
726  {++m_RawDataCounter;
727  LARBSDBG("RawDataCounter ist now " << m_RawDataCounter);
728  if (m_RawDataCounter>=m_channelsPerFEB) //No more channel available
729  return 0;
730  }
731  LARBSDBG("Found filled channel at positon " << m_RawDataCounter);
732  //Found next filled channel
733  channelNumber=m_RawDataCounter;
734  //channelNumber=(m_RawDataCounter>>4) + ((m_RawDataCounter&0xf)<<3); //Convert ROD to FEB channel ordering
735  unsigned int nsamples = LE_getHeader16(NGainNSamples) & 0x00FF;
736  LARBSDBG("This run has " << nsamples << " samples");
738  LARBSDBG( "index="<<index);
739  ++m_RawDataIndex;
740  LARBSDBG("In getnextRawData(). index= " << index);
741  gain=3-((m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
742  if(gain>=CaloGain::LARNGAIN) return 0;
743  for(unsigned int i=0;i<nsamples;i++) {
744  uint16_t x;
745  if((index+i)%2==0)
746  x=m_RawDataPtr[index+i+1];
747  else
748  x=m_RawDataPtr[index+i-1];
749  samples.push_back((short) (x & 0xfff));
750  }
752 
753  if (m_rearrangeFirstSample && m_rearrangeFirstSample<samples.size()) //FIXME: Very ugly hack! See explanation in LArRodDecoder.h file
754  {//Change e.g. 3 0 1 2 4 to 0 1 2 3 4
755  short movedSample=samples[0];
756  for (unsigned i=1;i<=m_rearrangeFirstSample;i++)
757  samples[i-1]=samples[i];
758  samples[m_rearrangeFirstSample]=movedSample;
759  }
760 
761  return 1;
762 }

◆ getNStep()

uint16_t LArRodBlockStructure::getNStep ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockCalibrationV3, and LArRodBlockAccumulatedV3.

Definition at line 491 of file LArRodBlockStructure.h.

492 {
493  std::cout << "ERROR: Function getNStep not implemented in this instance of LArRodBlockStructure!\n";
494  return 0;
495 }

◆ getNTrigger()

uint16_t LArRodBlockStructure::getNTrigger ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockCalibrationV3, LArRodBlockCalibrationV2, LArRodBlockCalibrationV1, and LArRodBlockAccumulatedV3.

Definition at line 480 of file LArRodBlockStructure.h.

481 {
482  std::cout << "ERROR: Function getNTrigger not implemented in this instance of LArRodBlockStructure!\n";
483  return 0;
484 }

◆ getNumberOfGains()

virtual uint32_t LArRodBlockPhysicsV3::getNumberOfGains ( ) const
virtual

Reimplemented from LArRodBlockStructure.

◆ getNumberOfHotCells()

uint16_t LArRodBlockPhysicsV3::getNumberOfHotCells ( ) const
inlinevirtual

Definition at line 297 of file LArRodBlockPhysicsV3.h.

298 {
299  return (uint16_t) (*m_CounterPtr);
300 }

◆ getNumberOfHotCellsInTime()

uint16_t LArRodBlockPhysicsV3::getNumberOfHotCellsInTime ( ) const
inlinevirtual

Definition at line 301 of file LArRodBlockPhysicsV3.h.

302 {
303  return (uint16_t) *(m_CounterPtr+1);
304 }

◆ getNumberOfSamples()

virtual uint32_t LArRodBlockPhysicsV3::getNumberOfSamples ( ) const
virtual

Reimplemented from LArRodBlockStructure.

◆ getNumberOfWords()

uint32_t LArRodBlockStructure::getNumberOfWords ( ) const
inlineinherited

Definition at line 428 of file LArRodBlockStructure.h.

429 {
430  return getHeader32(NWTot);
431 }

◆ getOfftimeThreshold()

uint16_t LArRodBlockPhysicsV3::getOfftimeThreshold ( ) const
inlinevirtual

Definition at line 310 of file LArRodBlockPhysicsV3.h.

311 {
312  return (uint16_t) (*(m_CounterPtr+3));
313 }

◆ getPulsed()

bool LArRodBlockStructure::getPulsed ( unsigned  channelNumber) const
inlinevirtualinherited

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

Definition at line 462 of file LArRodBlockStructure.h.

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

◆ getRadd()

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

Reimplemented from LArRodBlockStructure.

Definition at line 805 of file LArRodBlockPhysicsV3.cxx.

806 {
809  //if(sample&0x1) x=x&0xffff;
810  //else
811  x=x&0xffff;
812  return x;
813 }

◆ getRawDataSize()

uint16_t LArRodBlockStructure::getRawDataSize ( ) const
virtualinherited

◆ getResults1Size()

uint16_t LArRodBlockStructure::getResults1Size ( ) const
virtualinherited

◆ getResults2Size()

uint16_t LArRodBlockStructure::getResults2Size ( ) const
virtualinherited

◆ getStatus()

uint32_t LArRodBlockPhysicsV3::getStatus ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 842 of file LArRodBlockPhysicsV3.cxx.

843 {
844  if(getNumberOfWords()<Status2/2) return 0;
846  return x;
847 }

◆ getStepIndex()

uint16_t LArRodBlockStructure::getStepIndex ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockCalibrationV3, and LArRodBlockAccumulatedV3.

Definition at line 486 of file LArRodBlockStructure.h.

487 {
488  std::cout << "ERROR: Function getStepIndex not implemented in this instance of LArRodBlockStructure!\n";
489  return 0;
490 }

◆ getSumE()

int32_t LArRodBlockStructure::getSumE ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 315 of file LArRodBlockStructure.h.

315  {
316  return 0;
317 }

◆ getTDCPhase()

uint8_t LArRodBlockStructure::getTDCPhase ( ) const
virtualinherited

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

Definition at line 149 of file LArRodBlockStructure.cxx.

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

◆ getVectorHeader16()

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

Definition at line 368 of file LArRodBlockStructure.h.

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 }

◆ getVectorHeader32()

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

Definition at line 375 of file LArRodBlockStructure.h.

376 {
377  return (*m_vFragment)[n>>1];
378 }

◆ getVROBEx()

int32_t LArRodBlockStructure::getVROBEx ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6, and LArRodBlockPhysicsV5.

Definition at line 323 of file LArRodBlockStructure.h.

323  {
324 return 0;
325 }

◆ getVROBEy()

int32_t LArRodBlockStructure::getVROBEy ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6, and LArRodBlockPhysicsV5.

Definition at line 327 of file LArRodBlockStructure.h.

327  {
328 return 0;
329 }

◆ getVROBEz()

int32_t LArRodBlockStructure::getVROBEz ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6, and LArRodBlockPhysicsV5.

Definition at line 331 of file LArRodBlockStructure.h.

331  {
332 return 0;
333 }

◆ getVROBFebId()

uint32_t LArRodBlockStructure::getVROBFebId ( )
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6, and LArRodBlockPhysicsV5.

Definition at line 319 of file LArRodBlockStructure.h.

319  {
320 return 0;
321 }

◆ getVROBSumE()

int32_t LArRodBlockStructure::getVROBSumE ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 335 of file LArRodBlockStructure.h.

335  {
336 return 0;
337 }

◆ hasAccumBlock()

virtual uint32_t LArRodBlockStructure::hasAccumBlock ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3.

Definition at line 123 of file LArRodBlockStructure.h.

123 {return 0;} ;

◆ hasCalibBlock()

virtual uint32_t LArRodBlockStructure::hasCalibBlock ( ) const
inlinevirtualinherited

◆ hasControlWordBlock()

virtual uint32_t LArRodBlockPhysicsV3::hasControlWordBlock ( ) const
inlinevirtual

Definition at line 143 of file LArRodBlockPhysicsV3.h.

143 {return LE_getHeader16(RawDataBlkOffset);} ;

◆ hasControlWords()

virtual uint32_t LArRodBlockStructure::hasControlWords ( ) const
inlinevirtualinherited

◆ hasPhysicsBlock()

virtual uint32_t LArRodBlockPhysicsV3::hasPhysicsBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 141 of file LArRodBlockPhysicsV3.h.

141 {return LE_getHeader16(EBlkOffset);} ;

◆ hasRawDataBlock()

virtual uint32_t LArRodBlockPhysicsV3::hasRawDataBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 142 of file LArRodBlockPhysicsV3.h.

142 {return LE_getHeader16(RawDataBlkOffset);} ;

◆ initializeFEB()

void LArRodBlockPhysicsV3::initializeFEB ( const uint32_t  id)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 478 of file LArRodBlockPhysicsV3.cxx.

479 {
481  if (m_vFragment->size()<m_iHeadBlockSize) //Got empty or spoiled fragment
482  {
483  m_vFragment->resize(m_iHeadBlockSize,0); //Initialize FEB-Header
484  setHeader32(FEBID,id); //Set Feb ID
485  }
486 
487  m_SumBlkBlock.resize(0);
488  m_CounterBlkBlock.resize(0);
489  m_EnergyBlock.resize(0);
490  m_GainBlock.resize(0);
491  m_FebInfoBlock.resize(0);
492  m_RawDataBlock.resize(0);
493 
494  resetPointers();
495 
496 }

◆ initializeFragment()

void LArRodBlockPhysicsV3::initializeFragment ( std::vector< uint32_t > &  fragment)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 450 of file LArRodBlockPhysicsV3.cxx.

451 {
452  m_pRODblock=&fragment; //remember pointer to fragment
453  if (fragment.size()>m_iHeadBlockSize) { //Got filled fragment
454  unsigned int sizeRead=0;
455  //Store existing data in the FEB-Map
456  while (sizeRead<fragment.size()) {
458  FebIter=fragment.begin()+sizeRead; //Store pointer to current Feb-Header
459  m_FebBlock=&(*FebIter); //Set m_FebBlock in order to use getHeader-functions.
460  uint32_t currFEBid=getHeader32(FEBID); //Get this FEB-ID
461  uint16_t currFebSize=getNumberOfWords(); //Size of this FEB-Block
462  //std::cout << "FebID=" << currFEBid << " FEBSize=" << currFebSize << " Vector size=" << fragment.size() << std::endl;
463  if (FebIter+currFebSize>fragment.end()) {
464  fragment.clear(); //Clear existing vector
465  m_logstr << MSG::ERROR << "Got inconsistent ROD-Fragment!" << endmsg;
466  return;
467  }
468  m_mFebBlocks[currFEBid].assign(FebIter,FebIter+currFebSize); //Copy data from ROD-fragment into FEB-Block
469  sizeRead+=currFebSize+m_MiddleHeaderSize; //6 is the middle header size
470  LARBSDBG("Found FEB-id " << currFEBid << " in existing ROD-Fragment");
471  } // end while
472  }
473  fragment.clear(); //Clear existing vector
474  return;
475 }

◆ LE_getHeader16()

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

Definition at line 405 of file LArRodBlockStructure.h.

406 {
407  return (reinterpret_cast<const uint16_t*>(m_FebBlock))[n];
408 }

◆ LE_getVectorHeader16()

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

Definition at line 410 of file LArRodBlockStructure.h.

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 }

◆ LE_setHeader16()

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

Definition at line 417 of file LArRodBlockStructure.h.

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  ((uint16_t*)(&(m_vFragment->front())))[n] = w;
426 }

◆ nextFEB()

bool LArRodBlockStructure::nextFEB ( )
inlineinherited

Definition at line 497 of file LArRodBlockStructure.h.

498 {
499  resetPointers();
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 }

◆ offlineCheckSum()

uint32_t LArRodBlockStructure::offlineCheckSum ( ) const
virtualinherited

Reimplemented in LArRodBlockPhysicsV4.

Definition at line 163 of file LArRodBlockStructure.cxx.

164 {
165  int end = getNumberOfWords()-3;
166  int start = 1;
167  uint32_t sum = 0;
169  for(int i=start;i<end;i++) {
170  sum += m_FebBlock[i];
171  }
172  return sum & 0x7fffffff;
173 }

◆ OfflineToRawGain()

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

Definition at line 352 of file LArRodBlockStructure.h.

353 {return m_OfflineToRawGainMap[gain];} //For efficency, don't check range

◆ onlineCheckSum()

uint32_t LArRodBlockStructure::onlineCheckSum ( ) const
virtualinherited

Reimplemented in LArRodBlockPhysicsV4.

Definition at line 155 of file LArRodBlockStructure.cxx.

156 {
157  int offset = getNumberOfWords()-1;
158  if(offset>=m_FebBlockSize) return 0;
159  if(offset<0) return 0;
160  return m_FebBlock[offset];
161 }

◆ operator()() [1/2]

template<class RAWDATA >
bool LArRodBlockPhysicsV3::operator() ( ) const

◆ operator()() [2/2]

template<class RAWDATA >
bool LArRodBlockPhysicsV3::operator() ( const RAWDATA *  ch1,
const RAWDATA *  ch2 
) const

◆ RawToOfflineGain()

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

Definition at line 349 of file LArRodBlockStructure.h.

350 {return m_RawToOfflineGainMap[gain];} //For efficency, don't check range

◆ report_error()

bool LArRodBlockStructure::report_error ( void  ) const
inlineinherited

Definition at line 177 of file LArRodBlockStructure.h.

177 { return m_error_next_feb;}

◆ resetPointers()

void LArRodBlockPhysicsV3::resetPointers ( )
inlineprivatevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 105 of file LArRodBlockPhysicsV3.cxx.

106 {
108  m_RawDataIndex=0;
109  m_CounterIndex=0;
110  m_EnergyIndex=0;
111  m_GainIndex=0;
113  m_SumBlkIndex=0;
114  m_FebInfoIndex=0;
115 
117  m_numberHotCell=0;
118  m_Ex=0;
119  m_Ey=0;
120  m_Ez=0;
121  m_HottestCellIndex=255; // 255 is unphysical since cells index are between 0 and 127 per FEB.
123 }

◆ setBit()

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

Definition at line 444 of file LArRodBlockStructure.h.

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 }

◆ setDAC()

void LArRodBlockStructure::setDAC ( const uint16_t  DACValue)
virtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >.

Definition at line 57 of file LArRodBlockStructure.cxx.

58 {
59  std::cout << "ERROR: Function setDAC not implemented in this instance of LArRodBlockStructure!\n";
60  return;
61 }

◆ setDelay()

void LArRodBlockStructure::setDelay ( const uint16_t  DelayValue)
virtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >.

Definition at line 63 of file LArRodBlockStructure.cxx.

64 {
65  std::cout << "ERROR: Function setDelay not implemented in this instance of LArRodBlockStructure!\n";
66  return;
67 }

◆ setEThreshold()

void LArRodBlockPhysicsV3::setEThreshold ( uint16_t  thres)
virtual

Definition at line 850 of file LArRodBlockPhysicsV3.cxx.

851 {
852  m_EnergyThreshold=thres;
853 }

◆ 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 120 of file LArRodBlockStructure.cxx.

121 {
122  std::cout << "ERROR: Function setEtQ not implemented in this instance of LArRodBlockStructure!\n";
123  return;
124 }

◆ setEx()

void LArRodBlockPhysicsV3::setEx ( double  Ex)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 860 of file LArRodBlockPhysicsV3.cxx.

861 {
862  m_Ex=(int32_t)Ex;
863  return;
864 }

◆ setEy()

void LArRodBlockPhysicsV3::setEy ( double  Ey)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 865 of file LArRodBlockPhysicsV3.cxx.

866 {
867  m_Ey=(int32_t)Ey;
868  return;
869 }

◆ setEz()

void LArRodBlockPhysicsV3::setEz ( double  Ez)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 871 of file LArRodBlockPhysicsV3.cxx.

872 {
873  m_Ez=(int32_t)Ez;
874  return;
875 }

◆ setFirstSample()

void LArRodBlockStructure::setFirstSample ( const int  rearrangeFirstSample)
inlineinherited

Definition at line 168 of file LArRodBlockStructure.h.

169  {m_rearrangeFirstSample=rearrangeFirstSample;}

◆ setFragment()

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

Definition at line 252 of file LArRodBlockStructure.h.

253 {
254  resetPointers();
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 }

◆ setFragmentVirtualROB()

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

Definition at line 280 of file LArRodBlockStructure.h.

281  {
282  m_ROB_to_decode=0;
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  }
294  return m_ROB_to_decode;
295 }

◆ setGain()

virtual int LArRodBlockPhysicsV3::setGain ( const int  )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 115 of file LArRodBlockPhysicsV3.h.

115 { return 1; };

◆ setHeader16()

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

Definition at line 380 of file LArRodBlockStructure.h.

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 }

◆ setHeader32()

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

Definition at line 394 of file LArRodBlockStructure.h.

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 }

◆ setNextEnergy() [1/2]

void LArRodBlockPhysicsV3::setNextEnergy ( const int  channel,
const int32_t  energy,
const int32_t  time,
const int32_t  quality,
const uint32_t  gain 
)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 223 of file LArRodBlockPhysicsV3.cxx.

225 {
226  m_logstr << MYLEVEL << "setNextEnergy-------------------->>>>>********************** new format V3 ***********" << endmsg;
227  m_logstr << MYLEVEL << "Channel=" << channel << " energy =" << energy << endmsg;
228  int rcNb=FebToRodChannel(channel);
229  //rcNb ist supposed to equal or bigger than m_EIndex.
230  //In the latter case, we fill up the missing channels with zero
231  if (rcNb<m_EnergyIndex) {
232  m_logstr << MSG::ERROR << "LArRODBlockStructure ERROR: Internal error. Channels not ordered correctly. rcNb=" << rcNb
233  << " m_EnergyIndex=" << m_EnergyIndex << endmsg;
234  return;
235  }
236 
237  //Fill up missing channels with zeros:
238  while (m_EnergyIndex<rcNb)
239  setNextEnergy((int16_t)0,(int16_t)32767,(int16_t)-32767,(uint32_t)0);
240 
241 
242  // update fi needed the hottest cell info
243  // m_logstr << MYLEVEL << "Before " << endmsg;
244  // m_logstr << MYLEVEL << "m_HottestCellIndex : "<< m_HottestCellIndex << endmsg;
245  // m_logstr << MYLEVEL << "m_HottestCellEnergy : "<< m_HottestCellEnergy << endmsg;
246 
247  if ((energy>0)&&(energy>(int)m_HottestCellEnergy))
248  {
251  }
252 
253  // m_logstr << MYLEVEL << "After " << endmsg;
254  // m_logstr << MYLEVEL << "m_HottestCellIndex : "<< m_HottestCellIndex << endmsg;
255  // m_logstr << MYLEVEL << "m_HottestCellEnergy : "<< m_HottestCellEnergy << endmsg;
256 
257 
258  // transform 32 bits data into 16 bits data
259 
260  uint16_t theenergy;
261  uint32_t abse,EncodedE;
262  int16_t thetime,thequality;
263  int32_t sign;
264 
265  thetime = (int16_t) time >> 4;
266  thequality = (int16_t) quality;
267 
268  sign=(energy>=0?1:-1); // get sign of energy
269  abse=(uint32_t)abs(energy);
270 
271  EncodedE=abse; // range 0
272 
273  if ((abse>8192)&&(abse<65536))
274  {
275  EncodedE=((abse>>3)|0x2000); // range 1 : drop last 3 bits and put range bits (bits 14 and 13 = 01)
276  }
277  else if ((abse>65535)&&(abse<524288))
278  {
279  EncodedE=((abse>>6)|0x4000); // range 2 : drop last 6 bits and put range bits (bits 14 and 13 = 10)
280  }
281  else if ((abse>524288))
282  {
283  EncodedE=((abse>>9)|0x6000); // range 3 : drop last 9 bits and put range bits (bits 14 and 13 = 11)
284  }
285 
286  // treat sign now :
287 
288  if (sign<0) EncodedE |= 0x8000;
289  theenergy = (uint16_t) EncodedE;
290 
291 
292  // Add data...
293 
294  m_logstr << MYLEVEL << "setNextEnergy-------------------->>>>> Energy = "<< energy << " Encoded Energy =" << theenergy << endmsg;
295 
296  if (abse> m_EnergyThreshold)
297  {
298  setNextEnergy(theenergy,thetime,thequality,gain);
299  }
300  else
301  {
302  setNextEnergy(theenergy,(int16_t)32767,(int16_t)-32767,gain);
303  }
304  return;
305 }

◆ setNextEnergy() [2/2]

void LArRodBlockPhysicsV3::setNextEnergy ( const uint16_t  energy,
const int16_t  time,
const int16_t  quality,
const uint32_t  gain 
)
private

Definition at line 308 of file LArRodBlockPhysicsV3.cxx.

309 {
310 
311  if (m_EnergyIndex>=m_channelsPerFEB) //Use m_EIndex to count total number of channels
312  {m_logstr << MSG::ERROR << "LArRodBlockStructure ERROR: Attempt to write Energy for channel "
313  << m_EnergyIndex << " channels into a FEB!" <<endmsg;
314  return;
315  }
316  LARBSDBG("LArRodBlockStructure: Setting Energy for channel " << m_EnergyIndex << ". E=" << energy);
317 
318  m_logstr << MYLEVEL << "In setNextEnergy-------------------->>>>> time = " << time << " quality=" << quality << endmsg;
319 
320  // write for all cells energy and hardware gain
321 
322  // Energy
323 
324  m_EnergyIndex++; //Use m_EIndex to count the channels put in the Energy block
325 
326  ShortLong twoValues{};
327  if (m_EnergyIndex%2) // m_EIndex-1 is even
328  {
329  twoValues.s[0]= energy;
330  twoValues.s[1]=0;
331  }
332  else
333  { //Even number: Merging with previous block
334  uint32_t oneValue=m_EnergyBlock[m_EnergyBlock.size()-1]; //Take last element of vector
335  m_EnergyBlock.pop_back();
336  uint16_t* valptr=reinterpret_cast<uint16_t*>(&oneValue);
337  twoValues.s[0]=valptr[0];
338  twoValues.s[1]=(uint16_t)energy;
339  }
340 
341  //m_logstr << MSG::DEBUG << "In setNextEnergy-------------------->>>>> Length of m_EnergyBlock =" << m_EnergyBlock.size() << endmsg;
342 
343  LARBSDBG("Writing words: val0= " << twoValues.s[0] << " val1= " << twoValues.s[1]);
344  m_EnergyBlock.push_back(twoValues.l);
345  LARBSDBG("Writing Raw data to E block. E=" << energy);
346 
347  // update summary block
348  // Summary block is one bit per cell
349 
350  int mylocalBitwiseIndex = (int) (m_EnergyIndex-1)%32; // 1 bits in SB per channel
351  // m_logstr << MYLEVEL << "In setNextEnergy-------------------->> Summary Block Construction " << endmsg;
352  // m_logstr << MYLEVEL << "In setNextEnergy-------------------->> mylocalBitwiseIndex= " << mylocalBitwiseIndex << endmsg;
353  if (mylocalBitwiseIndex==0) // need for a new 32 bits word to store SM info of that cell
354  {
355  // m_logstr << MYLEVEL << "In setNextEnergy-------------------->> Set new 32 bits word " << endmsg;
356  uint32_t SB;
357  SB = (quality==-32767?0x00000000:0x00000001);
358  m_SumBlkBlock.push_back(SB);
359  }
360  else
361  {
362  // m_logstr << MYLEVEL << "In setNextEnergy-------------------->> Use existing 32 bits word " << endmsg;
363  uint32_t SB=m_SumBlkBlock[m_GainBlock.size()-1]; //Take out last element of vector
364  m_SumBlkBlock.pop_back();
365  SB=(SB<<1)|(quality==-32767?0x00000000:0x00000001);
366  m_SumBlkBlock.push_back(SB);
367  }
368 
369  // Hardware gain
370 
371  mylocalBitwiseIndex = (m_EnergyIndex-1)%16; // 2 bits of gain per channel
372  if (mylocalBitwiseIndex==0) // need for a new 32 bits word to store the gain of that cell
373  {
374  m_GainBlock.push_back(gain&0x00000003);
375  }
376  else
377  {
378  uint32_t encodedgains=m_GainBlock[m_GainBlock.size()-1]; //Take out last element of vector
379  m_GainBlock.pop_back();
380  encodedgains=(encodedgains<<2)|(gain&0x00000003);
381  m_GainBlock.push_back(encodedgains);
382  }
383 
384  // write Time and Chi2 for cells above HighEnergyCellCut threshold
385 
386  // m_logstr << MYLEVEL << "In setNextEnergy-------------------->>>>> treat Time and Chi2" << endmsg;
387 
388  if (quality!=-32767) // Do write Time and Chi2 information
389  {
390  // m_logstr << MSG::DEBUG << "In setNextEnergy-------------------->>>>> treat Time and Chi2 of that hot cell " << endmsg;
391  // count the number of hot cells
392  m_numberHotCell++;
393  // count the number of cells offtime
395 
396  mylocalBitwiseIndex = (m_numberHotCell-1)%2; // 16 bits per channel
397  ShortLong twoValues{};
398  if (mylocalBitwiseIndex==0) // need for a new 32 bits word to store the time quality of that cell
399  {
400  twoValues.s[0]=0;
401  twoValues.s[1]=0;
402  twoValues.s[0]=(int16_t)(time)|((quality>>10)&0x003F); // Quality on the first 6 bits and Time on the last 10 bits;
403  }
404  else
405  { //Even number: Merging with previous block
406  uint32_t oneValue=m_TimeQualityBlock[m_TimeQualityBlock.size()-1]; //Take last element of vector
407  m_TimeQualityBlock.pop_back();
408  int16_t* valptr=reinterpret_cast<int16_t*>(&oneValue);
409  twoValues.s[0]=valptr[0];
410  twoValues.s[1]=(int16_t)(time)|((quality>>12)&0x003F); // Quality on the first 4 bits and Time on the last 12 bits;
411  }
412  m_TimeQualityBlock.push_back(twoValues.l);
413  }
414 
415 }

◆ setNTrigger()

void LArRodBlockStructure::setNTrigger ( const uint16_t  NTrigger)
virtualinherited

Definition at line 75 of file LArRodBlockStructure.cxx.

76 {
77  std::cout << "ERROR: Function setNTrigger not implemented in this instance of LArRodBlockStructure!\n";
78  return;
79 }

◆ setNumberOfGains()

void LArRodBlockPhysicsV3::setNumberOfGains ( const uint8_t  n)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 216 of file LArRodBlockPhysicsV3.cxx.

218  LE_setHeader16(NGainNSamples,(oldword & 0x00FF) | (n<<8));
219 }

◆ setNumberOfSamples()

void LArRodBlockPhysicsV3::setNumberOfSamples ( const uint8_t  n)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 211 of file LArRodBlockPhysicsV3.cxx.

213  LE_setHeader16(NGainNSamples,(oldword & 0xFF00) | n);
214 }

◆ setOffTimeCut()

void LArRodBlockPhysicsV3::setOffTimeCut ( uint16_t  TimeCut)
virtual

Definition at line 855 of file LArRodBlockPhysicsV3.cxx.

856 {
857 m_OffTimeCut=TimeCut;
858 }

◆ setPointers()

bool LArRodBlockPhysicsV3::setPointers ( )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 126 of file LArRodBlockPhysicsV3.cxx.

127 {//Set pointers to data blocks (pesuming, they exist)
129  {
132  else m_SumBlkPtr=(const uint32_t*)m_DummyBitMap;
133 
136  else m_CounterPtr=(const uint16_t*)m_DummyBitMap;
137 
140  else m_EnergyPtr=(const uint16_t*)m_DummyBitMap;
141 
144  else m_GainPtr=(const uint32_t*)m_DummyBitMap;
145 
149 
152  else m_RawDataPtr=(const int16_t*)m_DummyBitMap;
153 
157 
158 #ifdef LARBSDBGOUTPUT
159  m_logstr << MYLEVEL << "***********************************************************************"<< endmsg;
160  m_logstr << MYLEVEL << "Energy Pointed values :"<< endmsg;
161  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
162  m_logstr << MYLEVEL << "LE_getHeader16(SumBlkOffset) = "<< MSG::hex << LE_getHeader16(SumBlkOffset) << endmsg;
163  m_logstr << MYLEVEL << "LE_getHeader16(CounterBlkOffset) = "<< MSG::hex << LE_getHeader16(CounterBlkOffset) << endmsg;
164  m_logstr << MYLEVEL << "LE_getHeader16(GainBlkOffset) = "<< MSG::hex << LE_getHeader16(GainBlkOffset) << endmsg;
165  m_logstr << MYLEVEL << "LE_getHeader16(EBlkOffset) = "<< MSG::hex << LE_getHeader16(EBlkOffset) << endmsg;
166  m_logstr << MYLEVEL << "LE_getHeader16(FebInfoBlkOffset) = "<< MSG::hex << LE_getHeader16(FebInfoBlkOffset) << endmsg;
167  m_logstr << MYLEVEL << "LE_getHeader16(TimeQualityBlkOffset) = "<< MSG::hex << LE_getHeader16(TimeQualityBlkOffset) << endmsg;
168  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
169 
170  m_logstr << MYLEVEL << "********************* SumBlck ************************************"<< endmsg;
171  for(int toto=0;toto<4;toto++)
172  m_logstr << MYLEVEL << "hexa = 0x" << MSG::hex << m_SumBlkPtr[toto] << endmsg;
173  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
174 
175  m_logstr << MYLEVEL << "********************* CounterBlck ************************************"<< endmsg;
176  for(int toto=0;toto<10;toto++) m_logstr << MYLEVEL << "hexa = 0x" << MSG::hex << m_CounterPtr[toto] << endmsg;
177  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
178 
179  m_logstr << MYLEVEL << "********************* FebInfoBlck ************************************"<< endmsg;
180  for(int toto=0;toto<4;toto++) m_logstr << MYLEVEL << "hexa = 0x" << MSG::hex << m_FebInfoDataPtr[toto] << endmsg;
181  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
182 
183 
184  m_logstr << MYLEVEL << "********************* Energies ************************************"<< endmsg;
185  for(int toto=0;toto<128;toto++)
186  m_logstr << MYLEVEL << "hexa = 0x" << MSG::hex << m_EnergyPtr[toto] << endmsg;
187  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
188 
189  m_logstr << MYLEVEL << "********************* Time & Quality ************************************"<< endmsg;
190  for(int toto=0;toto<10;toto++)
191  m_logstr << MYLEVEL << "hexa = 0x" << MSG::hex << m_TimeQualityPtr[toto] << endmsg;
192  m_logstr << MYLEVEL << "************************************************************************"<< endmsg;
193 #endif
194 
195  }
196  else
197  {
198  m_SumBlkPtr=NULL;
199  m_CounterPtr=NULL;
200  m_EnergyPtr=NULL;
201  m_TimeQualityPtr=NULL;
202  m_GainPtr=NULL;
203  m_FebInfoDataPtr=NULL;
204  m_RawDataPtr=NULL;
205  m_RawDataFlagsPtr=NULL;
206  }
207 
208  return true;
209 }

◆ setPulsed()

void LArRodBlockStructure::setPulsed ( const unsigned  channelNumber)
virtualinherited

Reimplemented in LArRodBlockCalibrationV0< DSPHEADER >.

Definition at line 69 of file LArRodBlockStructure.cxx.

70 {
71  std::cout << "ERROR: Function setPulsed not implemented in this instance of LArRodBlockStructure!\n";
72  return;
73 }

◆ setRawData()

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

Reimplemented from LArRodBlockStructure.

Definition at line 417 of file LArRodBlockPhysicsV3.cxx.

417  {
418  //Convert Feb to Rod Channel Number:
419  //int rcNb=(channel>>3) + ((channel&0x7)<<4);
420  int rcNb=FebToRodChannel(channel);
421  if (rcNb>=m_channelsPerFEB)
422  {m_logstr << MSG::ERROR << "Attempt to write Energy for channel " << rcNb << " channels into a FEB!" << endmsg;
423  return;
424  }
425  unsigned int nsamples = LE_getVectorHeader16(NGainNSamples) & 0x00FF;
426  if(samples.size() != nsamples) {
427  m_logstr << MSG::ERROR << "Number of samples mismatch!\n";
428  m_logstr << " nsamples =" << nsamples;
429  m_logstr << " samples.size() =" << samples.size() << endmsg;
430  std::abort();
431  }
432 
433  setBit(&m_RawDataBlock[0],rcNb);
434  //Samples have 12 bit and are shifted to the left by 2 bits.
435  // odd samples in high bits, even samples in low bits
436  if((nsamples/2)*2!=nsamples) { //odd number of samples - gain is alone
437  m_RawDataBlock.push_back((gain<<30) | samples[0]<<2);
438  for (unsigned int i=1;i<nsamples;i+=2)
439  m_RawDataBlock.push_back((samples[i+1]<<18) | samples[i]<<2);
440  }
441  else { //even number of samples - gain is packed with sample 0
442  m_RawDataBlock.push_back((gain<<30) | (samples[1]<<18) | samples[0]<<2);
443  for (unsigned int i=2;i<nsamples;i+=2)
444  m_RawDataBlock.push_back((samples[i+1]<<18) | samples[i]<<2);
445  }
446 }

◆ setRawDataFixed()

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

Reimplemented in LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 126 of file LArRodBlockStructure.cxx.

127 {
128  std::cout << "ERROR: Function setRawDataFixed not implemented in this instance of LArRodBlockStructure!\n";
129  return;
130 }

◆ setSumE()

void LArRodBlockStructure::setSumE ( double  )
virtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 218 of file LArRodBlockStructure.cxx.

219 {
220  // Do not set anything
221  return;
222 }

◆ setTDCPhase()

void LArRodBlockStructure::setTDCPhase ( const uint8_t  n)
virtualinherited

Reimplemented in LArRodBlockTransparentV0< DSPHEADER >.

Definition at line 144 of file LArRodBlockStructure.cxx.

145 {
146  std::cout << "ERROR: Function setTDCPhase not implemented in this instance of LArRodBlockStructure!\n";
147  return;
148 }

◆ sortDataVector() [1/10]

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

Definition at line 239 of file LArRodBlockStructure.cxx.

240 {return;}

◆ sortDataVector() [2/10]

void LArRodBlockStructure::sortDataVector

Definition at line 90 of file LArRodBlockStructure.cxx.

240 {return;}

◆ sortDataVector() [3/10]

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

Definition at line 242 of file LArRodBlockStructure.cxx.

243 {return;}

◆ sortDataVector() [4/10]

void LArRodBlockStructure::sortDataVector

Definition at line 91 of file LArRodBlockStructure.cxx.

243 {return;}

◆ sortDataVector() [5/10]

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

Definition at line 236 of file LArRodBlockStructure.cxx.

237 {return;}

◆ sortDataVector() [6/10]

void LArRodBlockStructure::sortDataVector

Definition at line 89 of file LArRodBlockStructure.cxx.

237 {return;}

◆ sortDataVector() [7/10]

void LArRodBlockStructure::sortDataVector

Definition at line 88 of file LArRodBlockStructure.cxx.

234 {return;}

◆ sortDataVector() [8/10]

virtual void LArRodBlockPhysicsV3::sortDataVector ( std::vector< const LArDigit * > &  )
virtual

Reimplemented from LArRodBlockStructure.

◆ sortDataVector() [9/10]

void LArRodBlockStructure::sortDataVector

Definition at line 87 of file LArRodBlockStructure.cxx.

231 {return;}

◆ sortDataVector() [10/10]

virtual void LArRodBlockPhysicsV3::sortDataVector ( std::vector< const LArRawChannel * > &  )
virtual

Reimplemented from LArRodBlockStructure.

Member Data Documentation

◆ m_channelsPerFEB

int LArRodBlockStructure::m_channelsPerFEB
protectedinherited

Definition at line 225 of file LArRodBlockStructure.h.

◆ m_CounterBlkBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_CounterBlkBlock
private

Definition at line 157 of file LArRodBlockPhysicsV3.h.

◆ m_CounterIndex

int LArRodBlockPhysicsV3::m_CounterIndex = 0
private

Definition at line 168 of file LArRodBlockPhysicsV3.h.

◆ m_CounterPtr

const uint16_t* LArRodBlockPhysicsV3::m_CounterPtr
private

Definition at line 176 of file LArRodBlockPhysicsV3.h.

◆ m_DummyBitMap

const uint32_t LArRodBlockPhysicsV3::m_DummyBitMap ={0,0,0,0}
staticprivate

Definition at line 201 of file LArRodBlockPhysicsV3.h.

◆ m_EnergyBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_EnergyBlock
private

Definition at line 158 of file LArRodBlockPhysicsV3.h.

◆ m_EnergyIndex

int LArRodBlockPhysicsV3::m_EnergyIndex = 0
private

Definition at line 169 of file LArRodBlockPhysicsV3.h.

◆ m_EnergyPtr

const uint16_t* LArRodBlockPhysicsV3::m_EnergyPtr
private

Definition at line 177 of file LArRodBlockPhysicsV3.h.

◆ m_EnergyThreshold

uint16_t LArRodBlockPhysicsV3::m_EnergyThreshold
private

Definition at line 194 of file LArRodBlockPhysicsV3.h.

◆ m_error_next_feb

bool LArRodBlockStructure::m_error_next_feb
protectedinherited

Definition at line 243 of file LArRodBlockStructure.h.

◆ m_Ex

int32_t LArRodBlockStructure::m_Ex
protectedinherited

Definition at line 207 of file LArRodBlockStructure.h.

◆ m_Ey

int32_t LArRodBlockStructure::m_Ey
protectedinherited

Definition at line 208 of file LArRodBlockStructure.h.

◆ m_Ez

int32_t LArRodBlockStructure::m_Ez
protectedinherited

Definition at line 209 of file LArRodBlockStructure.h.

◆ m_FebBlock

const uint32_t* LArRodBlockStructure::m_FebBlock
protectedinherited

Definition at line 227 of file LArRodBlockStructure.h.

◆ m_FebBlockSize

int32_t LArRodBlockStructure::m_FebBlockSize
protectedinherited

Definition at line 229 of file LArRodBlockStructure.h.

◆ m_FebInfoBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_FebInfoBlock
private

Definition at line 160 of file LArRodBlockPhysicsV3.h.

◆ m_FebInfoDataPtr

const int16_t* LArRodBlockPhysicsV3::m_FebInfoDataPtr
private

Definition at line 180 of file LArRodBlockPhysicsV3.h.

◆ m_FebInfoIndex

int LArRodBlockPhysicsV3::m_FebInfoIndex = 0
private

Definition at line 170 of file LArRodBlockPhysicsV3.h.

◆ m_GainBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_GainBlock
private

Definition at line 159 of file LArRodBlockPhysicsV3.h.

◆ m_GainIndex

int LArRodBlockPhysicsV3::m_GainIndex = 0
private

Definition at line 171 of file LArRodBlockPhysicsV3.h.

◆ m_GainPtr

const uint32_t* LArRodBlockPhysicsV3::m_GainPtr
private

Definition at line 179 of file LArRodBlockPhysicsV3.h.

◆ m_HottestCellEnergy

uint32_t LArRodBlockPhysicsV3::m_HottestCellEnergy
private

Definition at line 197 of file LArRodBlockPhysicsV3.h.

◆ m_HottestCellIndex

uint16_t LArRodBlockPhysicsV3::m_HottestCellIndex
private

Definition at line 196 of file LArRodBlockPhysicsV3.h.

◆ m_iHeadBlockSize

unsigned short LArRodBlockStructure::m_iHeadBlockSize
protectedinherited

Definition at line 221 of file LArRodBlockStructure.h.

◆ m_logstr

MsgStream LArRodBlockPhysicsV3::m_logstr
private

Definition at line 207 of file LArRodBlockPhysicsV3.h.

◆ m_mFebBlocks

FEBMAPTYPE LArRodBlockStructure::m_mFebBlocks
protectedinherited

Definition at line 234 of file LArRodBlockStructure.h.

◆ m_MiddleHeaderSize

int32_t LArRodBlockStructure::m_MiddleHeaderSize
protectedinherited

Definition at line 239 of file LArRodBlockStructure.h.

◆ m_NCounterBlkWords

int LArRodBlockPhysicsV3::m_NCounterBlkWords
private

Definition at line 185 of file LArRodBlockPhysicsV3.h.

◆ m_NEnergyBlkWords

int LArRodBlockPhysicsV3::m_NEnergyBlkWords
private

Definition at line 186 of file LArRodBlockPhysicsV3.h.

◆ m_NFebInfoBlkWords

int LArRodBlockPhysicsV3::m_NFebInfoBlkWords
private

Definition at line 188 of file LArRodBlockPhysicsV3.h.

◆ m_NFlaggingWords

int LArRodBlockPhysicsV3::m_NFlaggingWords
private

Definition at line 190 of file LArRodBlockPhysicsV3.h.

◆ m_NGainBlkWords

int LArRodBlockPhysicsV3::m_NGainBlkWords
private

Definition at line 187 of file LArRodBlockPhysicsV3.h.

◆ m_NSumBlkWords

int LArRodBlockPhysicsV3::m_NSumBlkWords
private

Definition at line 184 of file LArRodBlockPhysicsV3.h.

◆ m_numberHotCell

uint16_t LArRodBlockPhysicsV3::m_numberHotCell = 0U
private

Definition at line 192 of file LArRodBlockPhysicsV3.h.

◆ m_numberHotCellOffTime

uint16_t LArRodBlockPhysicsV3::m_numberHotCellOffTime = 0U
private

Definition at line 193 of file LArRodBlockPhysicsV3.h.

◆ m_numberOfEx

uint32_t LArRodBlockStructure::m_numberOfEx
protectedinherited

Definition at line 214 of file LArRodBlockStructure.h.

◆ m_numberOfEy

uint32_t LArRodBlockStructure::m_numberOfEy
protectedinherited

Definition at line 215 of file LArRodBlockStructure.h.

◆ m_numberOfEz

uint32_t LArRodBlockStructure::m_numberOfEz
protectedinherited

Definition at line 216 of file LArRodBlockStructure.h.

◆ m_numberOfSumE

uint32_t LArRodBlockStructure::m_numberOfSumE
protectedinherited

Definition at line 217 of file LArRodBlockStructure.h.

◆ m_OfflineToRawGainMap

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

Definition at line 238 of file LArRodBlockStructure.h.

◆ m_OffTimeCut

int16_t LArRodBlockPhysicsV3::m_OffTimeCut
private

Definition at line 195 of file LArRodBlockPhysicsV3.h.

◆ m_onlineHelper

const LArOnlineID* LArRodBlockPhysicsV3::m_onlineHelper
private

Definition at line 200 of file LArRodBlockPhysicsV3.h.

◆ m_pRODblock

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

Definition at line 232 of file LArRodBlockStructure.h.

◆ m_RawDataBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_RawDataBlock
private

Definition at line 162 of file LArRodBlockPhysicsV3.h.

◆ m_RawDataCounter

int LArRodBlockPhysicsV3::m_RawDataCounter = 0
private

Definition at line 166 of file LArRodBlockPhysicsV3.h.

◆ m_RawDataFlagsPtr

const uint32_t* LArRodBlockPhysicsV3::m_RawDataFlagsPtr
private

Definition at line 182 of file LArRodBlockPhysicsV3.h.

◆ m_RawDataIndex

int LArRodBlockPhysicsV3::m_RawDataIndex = 0
private

Definition at line 167 of file LArRodBlockPhysicsV3.h.

◆ m_RawDataPtr

const int16_t* LArRodBlockPhysicsV3::m_RawDataPtr
private

Definition at line 181 of file LArRodBlockPhysicsV3.h.

◆ m_RawToOfflineGainMap

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

Definition at line 237 of file LArRodBlockStructure.h.

◆ m_rearrangeFirstSample

unsigned int LArRodBlockStructure::m_rearrangeFirstSample
protectedinherited

Definition at line 241 of file LArRodBlockStructure.h.

◆ m_ROB_to_decode

int32_t LArRodBlockStructure::m_ROB_to_decode
protectedinherited

Definition at line 246 of file LArRodBlockStructure.h.

◆ m_RodBlock

const uint32_t* LArRodBlockStructure::m_RodBlock
protectedinherited

Definition at line 228 of file LArRodBlockStructure.h.

◆ m_RodBlockSize

int32_t LArRodBlockStructure::m_RodBlockSize
protectedinherited

Definition at line 230 of file LArRodBlockStructure.h.

◆ m_SumBlkBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_SumBlkBlock
private

Definition at line 156 of file LArRodBlockPhysicsV3.h.

◆ m_SumBlkIndex

int LArRodBlockPhysicsV3::m_SumBlkIndex = 0
private

Definition at line 173 of file LArRodBlockPhysicsV3.h.

◆ m_SumBlkPtr

const uint32_t* LArRodBlockPhysicsV3::m_SumBlkPtr
private

Definition at line 175 of file LArRodBlockPhysicsV3.h.

◆ m_SumE

int32_t LArRodBlockStructure::m_SumE
protectedinherited

Definition at line 210 of file LArRodBlockStructure.h.

◆ m_TimeQualityBlock

std::vector<uint32_t> LArRodBlockPhysicsV3::m_TimeQualityBlock
private

Definition at line 161 of file LArRodBlockPhysicsV3.h.

◆ m_TimeQualityIndex

int LArRodBlockPhysicsV3::m_TimeQualityIndex = 0
private

Definition at line 172 of file LArRodBlockPhysicsV3.h.

◆ m_TimeQualityPtr

const int16_t* LArRodBlockPhysicsV3::m_TimeQualityPtr
private

Definition at line 178 of file LArRodBlockPhysicsV3.h.

◆ m_vFragment

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

Definition at line 231 of file LArRodBlockStructure.h.

◆ m_virtualROBJump

uint32_t LArRodBlockStructure::m_virtualROBJump
protectedinherited

Definition at line 245 of file LArRodBlockStructure.h.

◆ m_virtualROBPointer

const uint32_t* LArRodBlockStructure::m_virtualROBPointer
protectedinherited

Definition at line 247 of file LArRodBlockStructure.h.

◆ m_virtualROBPointerLocal

const uint32_t* LArRodBlockStructure::m_virtualROBPointerLocal
protectedinherited

Definition at line 248 of file LArRodBlockStructure.h.


The documentation for this class was generated from the following files:
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
LArRodBlockPhysicsV3::m_OffTimeCut
int16_t m_OffTimeCut
Definition: LArRodBlockPhysicsV3.h:195
beamspotman.r
def r
Definition: beamspotman.py:676
plotBeamSpotCompare.x1
x1
Definition: plotBeamSpotCompare.py:216
LArRodBlockPhysicsV3::m_onlineHelper
const LArOnlineID * m_onlineHelper
Definition: LArRodBlockPhysicsV3.h:200
LArRodBlockStructure::m_vFragment
std::vector< uint32_t > * m_vFragment
Definition: LArRodBlockStructure.h:231
LArRodBlockPhysicsV3::CounterBlkOffset
@ CounterBlkOffset
Definition: LArRodBlockPhysicsV3.h:66
LArRodBlockStructure::FEBID_h
@ FEBID_h
Definition: LArRodBlockStructure.h:55
LArRodBlockPhysicsV3::m_RawDataFlagsPtr
const uint32_t * m_RawDataFlagsPtr
Definition: LArRodBlockPhysicsV3.h:182
sendEI_SPB.ch
ch
Definition: sendEI_SPB.py:35
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
python.Constants.FATAL
int FATAL
Definition: Control/AthenaCommon/python/Constants.py:19
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
LArRodBlockPhysicsV3::m_DummyBitMap
static const uint32_t m_DummyBitMap[4]
Definition: LArRodBlockPhysicsV3.h:201
LArRodBlockPhysicsV3::m_NCounterBlkWords
int m_NCounterBlkWords
Definition: LArRodBlockPhysicsV3.h:185
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LArRodBlockStructure::LArRodBlockStructure
LArRodBlockStructure()
Definition: LArRodBlockStructure.cxx:22
LArRodBlockStructure::getNumberOfWords
uint32_t getNumberOfWords() const
Definition: LArRodBlockStructure.h:428
LARBSDBG
#define LARBSDBG(text)
Definition: LArRodBlockPhysicsV3.cxx:25
index
Definition: index.py:1
AthenaPoolTestRead.flags
flags
Definition: AthenaPoolTestRead.py:8
LArRodBlockStructure::NWTot_h
@ NWTot_h
Definition: LArRodBlockStructure.h:53
LArRodBlockStructure::m_FebBlockSize
int32_t m_FebBlockSize
Definition: LArRodBlockStructure.h:229
LArRodBlockPhysicsV3::m_GainIndex
int m_GainIndex
Definition: LArRodBlockPhysicsV3.h:171
LArRodBlockPhysicsV3::FEB_SN
@ FEB_SN
Definition: LArRodBlockPhysicsV3.h:62
LArRodBlockStructure::m_Ez
int32_t m_Ez
Definition: LArRodBlockStructure.h:209
LArRodBlockStructure::FEBSN
@ FEBSN
Definition: LArRodBlockStructure.h:56
LArRodBlockPhysicsV3::BCID
@ BCID
Definition: LArRodBlockPhysicsV3.h:74
mergePhysValFiles.start
start
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:14
LArRodBlockStructure::LE_getVectorHeader16
uint16_t LE_getVectorHeader16(const unsigned n) const
Definition: LArRodBlockStructure.h:410
LArRodBlockPhysicsV3::m_NFlaggingWords
int m_NFlaggingWords
Definition: LArRodBlockPhysicsV3.h:190
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
LArRodBlockPhysicsV3::m_NEnergyBlkWords
int m_NEnergyBlkWords
Definition: LArRodBlockPhysicsV3.h:186
LArRodBlockPhysicsV3::NWTot
@ NWTot
Definition: LArRodBlockPhysicsV3.h:58
LArRodBlockPhysicsV3::GainBlkOffset
@ GainBlkOffset
Definition: LArRodBlockPhysicsV3.h:68
LArRodBlockPhysicsV3::Status1
@ Status1
Definition: LArRodBlockPhysicsV3.h:73
LArRodBlockPhysicsV3::Status2
@ Status2
Definition: LArRodBlockPhysicsV3.h:72
LArRodBlockPhysicsV3::FebToRodChannel
int FebToRodChannel(int ch) const
Definition: LArRodBlockPhysicsV3.h:211
LArRodBlockPhysicsV3::m_TimeQualityBlock
std::vector< uint32_t > m_TimeQualityBlock
Definition: LArRodBlockPhysicsV3.h:161
LArRodBlockStructure::m_error_next_feb
bool m_error_next_feb
Definition: LArRodBlockStructure.h:243
LArRodBlockStructure::m_FebBlock
const uint32_t * m_FebBlock
Definition: LArRodBlockStructure.h:227
LArRodBlockPhysicsV3::m_RawDataBlock
std::vector< uint32_t > m_RawDataBlock
Definition: LArRodBlockPhysicsV3.h:162
LArRodBlockPhysicsV3::TimeQualityBlkOffset
@ TimeQualityBlkOffset
Definition: LArRodBlockPhysicsV3.h:70
LArRodBlockPhysicsV3::m_logstr
MsgStream m_logstr
Definition: LArRodBlockPhysicsV3.h:207
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
x
#define x
xAOD::int16_t
setScaleOne setStatusOne setSaturated int16_t
Definition: gFexGlobalRoI_v1.cxx:55
LArRodBlockStructure::m_pRODblock
std::vector< uint32_t > * m_pRODblock
Definition: LArRodBlockStructure.h:232
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
LArRodBlockPhysicsV3::m_CounterIndex
int m_CounterIndex
Definition: LArRodBlockPhysicsV3.h:168
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
LArRodBlockPhysicsV3::m_NFebInfoBlkWords
int m_NFebInfoBlkWords
Definition: LArRodBlockPhysicsV3.h:188
LArRodBlockStructure::setPointers
virtual bool setPointers()
Definition: LArRodBlockStructure.h:189
LArRodBlockStructure::m_iHeadBlockSize
unsigned short m_iHeadBlockSize
Definition: LArRodBlockStructure.h:221
LArRodBlockStructure::m_rearrangeFirstSample
unsigned int m_rearrangeFirstSample
Definition: LArRodBlockStructure.h:241
LArRodBlockPhysicsV3::m_FebInfoIndex
int m_FebInfoIndex
Definition: LArRodBlockPhysicsV3.h:170
LArRodBlockStructure::getHeader32
uint32_t getHeader32(const unsigned n) const
Definition: LArRodBlockStructure.h:365
LArRodBlockPhysicsV3::m_CounterPtr
const uint16_t * m_CounterPtr
Definition: LArRodBlockPhysicsV3.h:176
StoreGateSvc
The Athena Transient Store API.
Definition: StoreGateSvc.h:128
LArRodBlockPhysicsV3::m_numberHotCellOffTime
uint16_t m_numberHotCellOffTime
Definition: LArRodBlockPhysicsV3.h:193
LArRodBlockPhysicsV3::FEB_SN_h
@ FEB_SN_h
Definition: LArRodBlockPhysicsV3.h:63
LArRodBlockPhysicsV3::m_TimeQualityPtr
const int16_t * m_TimeQualityPtr
Definition: LArRodBlockPhysicsV3.h:178
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
LArRodBlockPhysicsV3::m_TimeQualityIndex
int m_TimeQualityIndex
Definition: LArRodBlockPhysicsV3.h:172
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
LArRodBlockPhysicsV3::FebInfoBlkOffset
@ FebInfoBlkOffset
Definition: LArRodBlockPhysicsV3.h:69
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
LArRodBlockPhysicsV3::m_GainPtr
const uint32_t * m_GainPtr
Definition: LArRodBlockPhysicsV3.h:179
lumiFormat.i
int i
Definition: lumiFormat.py:92
LArRodBlockPhysicsV3::setNextEnergy
virtual void setNextEnergy(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
Definition: LArRodBlockPhysicsV3.cxx:223
ReadCellNoiseFromCool.chan
chan
Definition: ReadCellNoiseFromCool.py:52
beamspotman.n
n
Definition: beamspotman.py:731
LArRodBlockPhysicsV3::RawDataBlkOffset
@ RawDataBlkOffset
Definition: LArRodBlockPhysicsV3.h:71
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArRodBlockPhysicsV3::EBlkOffset
@ EBlkOffset
Definition: LArRodBlockPhysicsV3.h:67
01SubmitToGrid.samples
samples
Definition: 01SubmitToGrid.py:58
LArRodBlockPhysicsV3::m_EnergyBlock
std::vector< uint32_t > m_EnergyBlock
Definition: LArRodBlockPhysicsV3.h:158
plotBeamSpotVxVal.range
range
Definition: plotBeamSpotVxVal.py:195
LArRodBlockPhysicsV3::m_SumBlkBlock
std::vector< uint32_t > m_SumBlkBlock
Definition: LArRodBlockPhysicsV3.h:156
sign
int sign(int a)
Definition: TRT_StrawNeighbourSvc.h:127
LArRodBlockPhysicsV3::m_FebInfoBlock
std::vector< uint32_t > m_FebInfoBlock
Definition: LArRodBlockPhysicsV3.h:160
MYLEVEL
#define MYLEVEL
Definition: LArRodBlockPhysicsV3.h:47
LArRodBlockStructure::m_virtualROBPointerLocal
const uint32_t * m_virtualROBPointerLocal
Definition: LArRodBlockStructure.h:248
LArRodBlockStructure::resetPointers
virtual void resetPointers()
Definition: LArRodBlockStructure.h:187
LArRodBlockStructure::m_RawToOfflineGainMap
static const uint32_t m_RawToOfflineGainMap[4]
Definition: LArRodBlockStructure.h:237
LArRodBlockStructure::getBit
int getBit(const uint32_t *const p, const unsigned chan) const
Definition: LArRodBlockStructure.h:433
LARBSDBG
#define LARBSDBG(text)
This class provides decoding/encoding from/to ROD format.
Definition: LArRodBlockPhysicsV3.h:44
LArRodBlockStructure::m_ROB_to_decode
int32_t m_ROB_to_decode
Definition: LArRodBlockStructure.h:246
LArRodBlockStructure::LE_setHeader16
void LE_setHeader16(const unsigned n, const uint16_t w)
Definition: LArRodBlockStructure.h:417
LArRodBlockPhysicsV3::FEBID_h
@ FEBID_h
Definition: LArRodBlockPhysicsV3.h:61
LArRodBlockPhysicsV3::SumBlkOffset
@ SumBlkOffset
Definition: LArRodBlockPhysicsV3.h:65
LArRodBlockStructure::m_Ex
int32_t m_Ex
Definition: LArRodBlockStructure.h:207
LArRodBlockPhysicsV3::resetPointers
virtual void resetPointers()
Definition: LArRodBlockPhysicsV3.cxx:105
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
LArRodBlockPhysicsV3::m_GainBlock
std::vector< uint32_t > m_GainBlock
Definition: LArRodBlockPhysicsV3.h:159
LArRodBlockStructure::endtag
@ endtag
Definition: LArRodBlockStructure.h:58
LArRodBlockPhysicsV3::m_CounterBlkBlock
std::vector< uint32_t > m_CounterBlkBlock
Definition: LArRodBlockPhysicsV3.h:157
LArRodBlockPhysicsV3::BlockType
std::string BlockType()
Definition: LArRodBlockPhysicsV3.h:81
LArRodBlockPhysicsV3::m_SumBlkIndex
int m_SumBlkIndex
Definition: LArRodBlockPhysicsV3.h:173
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
LArRodBlockPhysicsV3::m_SumBlkPtr
const uint32_t * m_SumBlkPtr
Definition: LArRodBlockPhysicsV3.h:175
LArRodBlockStructure::m_virtualROBPointer
const uint32_t * m_virtualROBPointer
Definition: LArRodBlockStructure.h:247
LArRodBlockPhysicsV3::m_EnergyThreshold
uint16_t m_EnergyThreshold
Definition: LArRodBlockPhysicsV3.h:194
LArRodBlockPhysicsV3::m_numberHotCell
uint16_t m_numberHotCell
Definition: LArRodBlockPhysicsV3.h:192
LArOnlineID
Definition: LArOnlineID.h:20
LArRodBlockStructure::FEBSN_h
@ FEBSN_h
Definition: LArRodBlockStructure.h:57
LArRodBlockPhysicsV3::NGainNSamples
@ NGainNSamples
Definition: LArRodBlockPhysicsV3.h:64
LArRodBlockStructure::LE_getHeader16
uint16_t LE_getHeader16(const unsigned n) const
Definition: LArRodBlockStructure.h:405
ReadOfcFromCool.nsamples
nsamples
Definition: ReadOfcFromCool.py:115
LArRodBlockStructure::m_MiddleHeaderSize
int32_t m_MiddleHeaderSize
Definition: LArRodBlockStructure.h:239
LArRodBlockStructure::NWTot
@ NWTot
Definition: LArRodBlockStructure.h:52
DeMoScan.index
string index
Definition: DeMoScan.py:362
a
TList * a
Definition: liststreamerinfos.cxx:10
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
LArRodBlockPhysicsV3::endtag
@ endtag
Definition: LArRodBlockPhysicsV3.h:77
LArRodBlockPhysicsV3::NWTot_h
@ NWTot_h
Definition: LArRodBlockPhysicsV3.h:59
LArRodBlockPhysicsV3::m_RawDataCounter
int m_RawDataCounter
Definition: LArRodBlockPhysicsV3.h:166
DEBUG
#define DEBUG
Definition: page_access.h:11
LArRodBlockPhysicsV3::m_NGainBlkWords
int m_NGainBlkWords
Definition: LArRodBlockPhysicsV3.h:187
LArRodBlockStructure::m_Ey
int32_t m_Ey
Definition: LArRodBlockStructure.h:208
LArRodBlockPhysicsV3::m_HottestCellIndex
uint16_t m_HottestCellIndex
Definition: LArRodBlockPhysicsV3.h:196
convertTimingResiduals.offset
offset
Definition: convertTimingResiduals.py:71
LArRodBlockStructure::setBit
void setBit(uint32_t *const p, const unsigned chan)
Definition: LArRodBlockStructure.h:444
LArRodBlockPhysicsV3::clearBlocks
void clearBlocks()
Definition: LArRodBlockPhysicsV3.cxx:94
LArRodBlockStructure::m_OfflineToRawGainMap
static const uint32_t m_OfflineToRawGainMap[3]
Definition: LArRodBlockStructure.h:238
LArRodBlockStructure::m_RodBlockSize
int32_t m_RodBlockSize
Definition: LArRodBlockStructure.h:230
LArRodBlockPhysicsV3::FEBID
@ FEBID
Definition: LArRodBlockPhysicsV3.h:60
LArRodBlockStructure::m_RodBlock
const uint32_t * m_RodBlock
Definition: LArRodBlockStructure.h:228
python.IoTestsLib.w
def w
Definition: IoTestsLib.py:200
LArRodBlockPhysicsV3::m_HottestCellEnergy
uint32_t m_HottestCellEnergy
Definition: LArRodBlockPhysicsV3.h:197
LArRodBlockPhysicsV3::m_EnergyIndex
int m_EnergyIndex
Definition: LArRodBlockPhysicsV3.h:169
LArRodBlockPhysicsV3::m_FebInfoDataPtr
const int16_t * m_FebInfoDataPtr
Definition: LArRodBlockPhysicsV3.h:180
LArRodBlockStructure::m_channelsPerFEB
int m_channelsPerFEB
Definition: LArRodBlockStructure.h:225
LArRodBlockPhysicsV3::m_NSumBlkWords
int m_NSumBlkWords
Definition: LArRodBlockPhysicsV3.h:184
LArRodBlockPhysicsV3::m_RawDataIndex
int m_RawDataIndex
Definition: LArRodBlockPhysicsV3.h:167
LArRodBlockPhysicsV3::m_EnergyPtr
const uint16_t * m_EnergyPtr
Definition: LArRodBlockPhysicsV3.h:177
LArRodBlockPhysicsV3::EventID
@ EventID
Definition: LArRodBlockPhysicsV3.h:75
LArRodBlockStructure::m_virtualROBJump
uint32_t m_virtualROBJump
Definition: LArRodBlockStructure.h:245
LArRodBlockStructure::FEBID
@ FEBID
Definition: LArRodBlockStructure.h:54
LArRodBlockStructure::m_mFebBlocks
FEBMAPTYPE m_mFebBlocks
Definition: LArRodBlockStructure.h:234
LArRodBlockPhysicsV3::m_RawDataPtr
const int16_t * m_RawDataPtr
Definition: LArRodBlockPhysicsV3.h:181
LArRodBlockStructure::setHeader32
void setHeader32(const unsigned n, const uint32_t w)
Definition: LArRodBlockStructure.h:394