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

#include <LArRodBlockPhysicsV2.h>

Inheritance diagram for LArRodBlockPhysicsV2:
Collaboration diagram for LArRodBlockPhysicsV2:

Public Member Functions

 LArRodBlockPhysicsV2 ()
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 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 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 uint32_t hasPhysicsBlock () const
virtual uint32_t hasRawDataBlock () const
template<class RAWDATA>
bool operator() ()(const RAWDATA *ch1
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 setEx (double)
virtual void setEy (double)
virtual void setEz (double)
virtual void setSumE (double)
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 getEx () const
virtual int32_t getEy () const
virtual int32_t getEz () 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 , HighEBlkOffset , LowEBlkOffset ,
  NGainNSamples , 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 int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)

Private Attributes

std::vector< uint32_t > m_LowEnergyBlock
std::vector< uint32_t > m_HighEnergyBlock
std::vector< uint32_t > m_RawDataBlock
int m_ECounter = 0
int m_RawDataCounter = 0
int m_LowEIndex = 0
int m_RawDataIndex = 0
int m_HighEIndex = 0
int m_EIndex = 0
const uint16_t * m_RawDataPtr
const uint32_t * m_RawDataFlagsPtr
const uint32_t * m_GainPtr
const int32_t * m_HighEPtr
const uint32_t * m_FlagPtr
const int16_t * m_LowEPtr
unsigned short m_NFlaggingWords
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 47 of file LArRodBlockPhysicsV2.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 
HighEBlkOffset 
LowEBlkOffset 
NGainNSamples 
RawDataBlkOffset 
Status2 
Status1 
BCID 
EventID 
endtag 

Definition at line 55 of file LArRodBlockPhysicsV2.h.

◆ 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

◆ LArRodBlockPhysicsV2()

LArRodBlockPhysicsV2::LArRodBlockPhysicsV2 ( )

Definition at line 38 of file LArRodBlockPhysicsV2.cxx.

40{
41 // retrieve onlineHelper
42 const LArOnlineID* online_id;
43 SmartIF<StoreGateSvc> detStore{Gaudi::svcLocator()->service("DetectorStore")};
44 if (!detStore) {
45 m_logstr << MSG::ERROR << "Unable to locate DetectorStore" << endmsg;
46 std::abort();
47 }
48 StatusCode sc = detStore->retrieve(online_id, "LArOnlineID");
49 if (sc.isFailure()) {
50 m_logstr << MSG::FATAL << "Could not get LArOnlineID helper !" << endmsg;
51 std::abort();
52 }
53 else {
54 m_onlineHelper=online_id;
55 m_logstr << MSG::DEBUG << " Found the LArOnlineID helper. " << endmsg;
56 }
57
58 m_iHeadBlockSize=endtag/2; // The implicit cast rounds down to the right size
61 m_vFragment=NULL;
62 m_FebBlock=NULL;
63 m_pRODblock=NULL;
64 m_FlagPtr=NULL;
65 m_GainPtr=NULL;
66 m_HighEPtr=NULL;
67 m_LowEPtr=NULL;
69 m_RawDataPtr=NULL;
70}
#define endmsg
static Double_t sc
const uint16_t * m_RawDataPtr
const LArOnlineID * m_onlineHelper
const uint32_t * m_RawDataFlagsPtr
std::vector< uint32_t > * m_pRODblock
std::vector< uint32_t > * m_vFragment
IMessageSvc * getMessageSvc(bool quiet=false)
::StatusCode StatusCode
StatusCode definition for legacy code.

Member Function Documentation

◆ BlockType()

std::string LArRodBlockPhysicsV2::BlockType ( )
inline

Definition at line 74 of file LArRodBlockPhysicsV2.h.

74{ return std::string("RodBlockPhysicsV2");}

◆ canIncludeRawData()

virtual bool LArRodBlockStructure::canIncludeRawData ( )
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 101 of file LArRodBlockStructure.h.

101{return false;}

◆ canSetCalibration()

virtual bool LArRodBlockStructure::canSetCalibration ( )
inlinevirtualinherited

◆ canSetEnergy()

virtual bool LArRodBlockPhysicsV2::canSetEnergy ( )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 92 of file LArRodBlockPhysicsV2.h.

92{ return true;}

◆ canSetNTrigger()

virtual bool LArRodBlockStructure::canSetNTrigger ( )
inlinevirtualinherited

Definition at line 100 of file LArRodBlockStructure.h.

100{return false;}

◆ canSetRawData()

virtual bool LArRodBlockPhysicsV2::canSetRawData ( )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 93 of file LArRodBlockPhysicsV2.h.

93{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 LArRodBlockPhysicsV2::clearBlocks ( )
private

Definition at line 73 of file LArRodBlockPhysicsV2.cxx.

74{ m_HighEnergyBlock.clear();
75 m_LowEnergyBlock.clear();
76 m_RawDataBlock.clear();
77}
std::vector< uint32_t > m_LowEnergyBlock
std::vector< uint32_t > m_HighEnergyBlock
std::vector< uint32_t > m_RawDataBlock

◆ concatinateFEBs()

void LArRodBlockPhysicsV2::concatinateFEBs ( )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 370 of file LArRodBlockPhysicsV2.cxx.

371{
372 //std::cout << "Concatinating FEBs. Have "<< m_mFebBlocks.size() <<" febs." << std::endl;
373 FEBMAPTYPE::const_iterator feb_it_b=m_mFebBlocks.begin();
374 FEBMAPTYPE::const_iterator feb_it_e=m_mFebBlocks.end();
375 FEBMAPTYPE::const_iterator feb_it;
376 for (feb_it=feb_it_b;feb_it!=feb_it_e;++feb_it) {
377 if (feb_it!=feb_it_b) //Not first Feb
378/*
379 if (fullHeader) {//Add middle header
380 m_pRODblock->push_back(fullHeader->version().full());//Format Version number
381 m_pRODblock->push_back(fullHeader->source_id()); //Source identifer
382 m_pRODblock->push_back(fullHeader->run_no());
383 m_pRODblock->push_back(fullHeader->lvl1_id()); //Level 1 identifer
384 m_pRODblock->push_back(fullHeader->bc_id()); //Bunch Crossing identifer
385 m_pRODblock->push_back(fullHeader->lvl1_type()); //Level 1 trigger type
386 m_pRODblock->push_back(fullHeader->detev_type()); //Detector event type
387 }
388 else //No ROD-Header
389*/
391
392 //Add feb data to rod data block
393 m_pRODblock->insert (m_pRODblock->end(),
394 feb_it->second.begin(), feb_it->second.end());
395 } //end for feb_it
396
397 m_mFebBlocks.clear();
398 return;
399}

◆ 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 LArRodBlockPhysicsV2::FebToRodChannel ( int ch) const
inlineprivatevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 156 of file LArRodBlockPhysicsV2.h.

158{return (ch>>3) + ((ch&0x7)<<4);}

◆ finalizeFEB()

void LArRodBlockPhysicsV2::finalizeFEB ( )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 318 of file LArRodBlockPhysicsV2.cxx.

319{
320//Complete non-complete Energy block
322 setNextEnergy(0,0,-1,0);//E=0,t=0,q=-1,G=0
323 // Energies
324 unsigned int n;
325 uint16_t BlockOffset;
326 //Low energy block....
327 n = m_LowEnergyBlock.size();
329 //Check if Low Energy Block exists and is not yet part of the fragment
330 LARBSDBG("Checking Low Energy Block n=" << n << "BlockOffset=" << BlockOffset);
331 if (n>m_NFlaggingWords && !BlockOffset)
333 for (unsigned i=0;i<n;i++)
334 m_vFragment->push_back(m_LowEnergyBlock[i]);
335 }
336 //High energy block...
337 n = m_HighEnergyBlock.size();
339 LARBSDBG("Checking High Energy Block n=" << n << "BlockOffset=" << BlockOffset);
340 //Check if High Energy-Block exists and is not yet part of the fragment
341 if (n && !BlockOffset)
343 for(unsigned int i=0;i<n;i++)
344 m_vFragment->push_back(m_HighEnergyBlock[i]);
345 }
346
347 // Raw data
348 LARBSDBG("Checking Raw Data Block");
349 n = m_RawDataBlock.size();
351 LARBSDBG("Checking Raw Data Block. n=" << n << "BlockOffset=" << BlockOffset);
352 //Check if Raw Data block exists and is not yet part of the fragment
353 if (n>m_NFlaggingWords && !BlockOffset)
355 for(unsigned int i=0;i<n;i++)
356 m_vFragment->push_back(m_RawDataBlock[i]);
357 }
359 LARBSDBG("Offsets:" << std::endl
360 << "Raw Data: " << LE_getVectorHeader16(RawDataBlkOffset) << std::endl
361 <<"Low Energy: " << LE_getVectorHeader16(LowEBlkOffset)<< std::endl
362 << "High Energy: " << LE_getVectorHeader16(HighEBlkOffset)<< std::endl
363 << "Energy-index:" << m_EIndex << std::endl
364 << "Filled channels: " << m_ECounter << std::endl);
365 clearBlocks();
366 return;
367}
#define LARBSDBG(text)
This class provides decoding/encoding from/to ROD format.
virtual void setNextEnergy(const int channel, const int32_t energy, const int32_t time, const int32_t quality, const uint32_t gain)
void setHeader32(const unsigned n, const uint32_t w)
uint16_t LE_getVectorHeader16(const unsigned n) const
void LE_setHeader16(const unsigned n, const uint16_t w)
setWord1 uint16_t

◆ 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}
static Double_t a
int r
Definition globals.cxx:22

◆ getCtrl1()

uint16_t LArRodBlockPhysicsV2::getCtrl1 ( uint32_t adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 638 of file LArRodBlockPhysicsV2.cxx.

639{
642 x=x>>16;
643 uint16_t ctrl=x;
644 return ctrl;
645}
#define x
uint16_t LE_getHeader16(const unsigned n) const
str index
Definition DeMoScan.py:362
setEventNumber uint32_t

◆ getCtrl2()

uint16_t LArRodBlockPhysicsV2::getCtrl2 ( uint32_t adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 647 of file LArRodBlockPhysicsV2.cxx.

648{
651 x=x&0xffff;
652 uint16_t ctrl=x;
653 return ctrl;
654}

◆ getCtrl3()

uint16_t LArRodBlockPhysicsV2::getCtrl3 ( uint32_t adc) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 656 of file LArRodBlockPhysicsV2.cxx.

657{
660 x=x>>16;
661 uint16_t ctrl=x;
662 return ctrl;
663}

◆ getDAC()

uint16_t LArRodBlockStructure::getDAC ( ) const
inlinevirtualinherited

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

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 LArRodBlockCalibrationV0< DSPHEADER >, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

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}
uint32_t getNumberOfWords() const

◆ 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 LArRodBlockStructure::getEx ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV4, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 303 of file LArRodBlockStructure.h.

303 {
304 return 0;
305}

◆ getEy()

int32_t LArRodBlockStructure::getEy ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV4, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 307 of file LArRodBlockStructure.h.

307 {
308 return 0;
309}

◆ getEz()

int32_t LArRodBlockStructure::getEz ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV4, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 311 of file LArRodBlockStructure.h.

311 {
312 return 0;
313}

◆ getFEBID()

uint32_t LArRodBlockStructure::getFEBID ( ) const
inlineinherited

Definition at line 297 of file LArRodBlockStructure.h.

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

◆ 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];}

◆ 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 LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and 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 LArRodBlockPhysicsV2::getNextEnergy ( int & channelNumber,
int32_t & energy,
int32_t & time,
int32_t & quality,
uint32_t & gain )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 160 of file LArRodBlockPhysicsV2.h.

161{
162 LARBSDBG("in LArRodBlockPhysicsV2::getEnergy.");
163 LARBSDBG("m_ECounter=" << m_ECounter << " m_RawDataIndex="<< m_EIndex);
164 LARBSDBG("m_channelsPerFEB=" << m_channelsPerFEB);
165 if (m_LowEIndex+m_HighEIndex>=m_channelsPerFEB) //Already beyond maximal number of channels
166 return 0;
167 if (!m_FlagPtr || !m_LowEPtr) //No data block present
168 return 0;
169 uint32_t gtQ;
170 int rodChannelNumber=m_LowEIndex+m_HighEIndex; //Index of Channel in ROD-Block
171 channelNumber=rodChannelNumber; // Arno claims he is using FEB numbering
172 //channelNumber=(rodChannelNumber>>4) + ((rodChannelNumber&0xf)<<3); //channel number of the FEB
173 if (getBit(m_FlagPtr,rodChannelNumber)) //Data in high energy block
175 gtQ=m_HighEPtr[m_HighEIndex*2+1];
176 // Q in bits 0-15
177 // t in bits 16-29
178 // gain in bits 30-31
179 quality = gtQ & 0xffff;
180 gtQ = gtQ >> 16;
181 //time = gtQ & 0x3fff;
182 time = gtQ & 0x7fff;
183 if (gtQ & 0x8000)
184 time*=-1;
185 gain=3-((m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
186 m_HighEIndex++;
187 LARBSDBG("Reading Raw data form High E block. E=" << energy << " Q=" << quality);
188 }
189 else //Data in low energy block
190 {
191 if (!m_LowEPtr)
192 return 0; //Block does not exist;
193 if(m_LowEIndex%2==0)
195 else
197
198 gain=3-((m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
199 time=0;
200 quality=-1;
201 m_LowEIndex++;
202 LARBSDBG("*** Reading Raw data form Low E block. E=" << energy);
203 }
204 /*
205 if (energy>10000000)
206 std::cout << " Read: Large E found. E=" << energy
207 << " t=" << time
208 << " Q=" << quality
209 << " G=" << gain
210 << " channel Number=" << channelNumber
211 << " LowEIndex=" << m_LowEIndex
212 << " HighEIndex="<<m_HighEIndex << std::endl;
213 else
214 std::cout << "Read energy" << std::endl;
215 */
216 return 1;
217}
int getBit(const uint32_t *const p, const unsigned chan) const
time(flags, cells_name, *args, **kw)

◆ getNextRawData()

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

Reimplemented from LArRodBlockStructure.

Definition at line 401 of file LArRodBlockPhysicsV2.cxx.

402{
403 LARBSDBG("in LArRodBlockPhysicsV2::getNextRawData.");
404 LARBSDBG("m_RawDataCounter=" << m_RawDataCounter << " m_RawDataIndex="<< m_RawDataIndex);
405 LARBSDBG("m_channelsPerFEB=" << m_channelsPerFEB);
406 if(m_FebBlockSize<=m_iHeadBlockSize) return 0;
408
410 if (!flags)
411 return 0; //Block not existing
412 if (m_RawDataCounter>=m_channelsPerFEB) //Already beyond maximal number of channels
413 return 0;
414
415 LARBSDBG("Flags="<<flags);
416
417 while (!getBit(m_RawDataFlagsPtr,m_RawDataCounter)) //Look for next filled channel
419 LARBSDBG("RawDataCounter ist now " << m_RawDataCounter);
420 if (m_RawDataCounter>=m_channelsPerFEB) //No more channel available
421 return 0;
422 }
423 LARBSDBG("Found filled channel at positon " << m_RawDataCounter);
424 //Found next filled channel
425 channelNumber=m_RawDataCounter;
426 //channelNumber=(m_RawDataCounter>>4) + ((m_RawDataCounter&0xf)<<3); //Convert ROD to FEB channel ordering
427 unsigned int nsamples = LE_getHeader16(NGainNSamples) & 0x00FF;
428 LARBSDBG("This run has " << nsamples << " samples");
430 LARBSDBG( "index="<<index);
432 LARBSDBG("In getnextRawData(). index= " << index);
433 gain=3-((m_GainPtr[channelNumber/16] >> (channelNumber%16)*2) & 0x3);
434 if(gain>=CaloGain::LARNGAIN) return 0;
435 for(unsigned int i=0;i<nsamples;i++) {
436 uint16_t x;
437 if((index+i)%2==0)
439 else
441 samples.push_back((short) (x & 0xfff));
442 }
444
445 if (m_rearrangeFirstSample && m_rearrangeFirstSample<samples.size()) //FIXME: Very ugly hack! See explanation in LArRodDecoder.h file
446 {//Change e.g. 3 0 1 2 4 to 0 1 2 3 4
447 short movedSample=samples[0];
448 for (unsigned i=1;i<=m_rearrangeFirstSample;i++)
449 samples[i-1]=samples[i];
450 samples[m_rearrangeFirstSample]=movedSample;
451 }
452
453 return 1;
454}
@ LARNGAIN
Definition CaloGain.h:19

◆ getNStep()

uint16_t LArRodBlockStructure::getNStep ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3, and LArRodBlockCalibrationV3.

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 LArRodBlockAccumulatedV3, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, and LArRodBlockCalibrationV3.

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 LArRodBlockPhysicsV2::getNumberOfGains ( ) const
virtual

Reimplemented from LArRodBlockStructure.

◆ getNumberOfSamples()

virtual uint32_t LArRodBlockPhysicsV2::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}

◆ getPulsed()

bool LArRodBlockStructure::getPulsed ( unsigned channelNumber) const
inlinevirtualinherited

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

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 LArRodBlockPhysicsV2::getRadd ( uint32_t adc,
uint32_t sample ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 628 of file LArRodBlockPhysicsV2.cxx.

629{
632 //if(sample&0x1) x=x&0xffff;
633 //else
634 x=x&0xffff;
635 return x;
636}

◆ getRawDataSize()

uint16_t LArRodBlockStructure::getRawDataSize ( ) const
virtualinherited

◆ getResults1Size()

uint16_t LArRodBlockStructure::getResults1Size ( ) const
virtualinherited

◆ getResults2Size()

uint16_t LArRodBlockStructure::getResults2Size ( ) const
virtualinherited

◆ getStatus()

uint32_t LArRodBlockPhysicsV2::getStatus ( ) const
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 665 of file LArRodBlockPhysicsV2.cxx.

666{
668 return x;
669}

◆ getStepIndex()

uint16_t LArRodBlockStructure::getStepIndex ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockAccumulatedV3, and LArRodBlockCalibrationV3.

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 LArRodBlockAccumulatedV3, LArRodBlockCalibrationV1, LArRodBlockCalibrationV2, LArRodBlockCalibrationV3, and LArRodBlockTransparentV0< DSPHEADER >.

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 LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 323 of file LArRodBlockStructure.h.

323 {
324return 0;
325}

◆ getVROBEy()

int32_t LArRodBlockStructure::getVROBEy ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 327 of file LArRodBlockStructure.h.

327 {
328return 0;
329}

◆ getVROBEz()

int32_t LArRodBlockStructure::getVROBEz ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 331 of file LArRodBlockStructure.h.

331 {
332return 0;
333}

◆ getVROBFebId()

uint32_t LArRodBlockStructure::getVROBFebId ( )
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 319 of file LArRodBlockStructure.h.

319 {
320return 0;
321}

◆ getVROBSumE()

int32_t LArRodBlockStructure::getVROBSumE ( ) const
inlinevirtualinherited

Reimplemented in LArRodBlockPhysicsV6.

Definition at line 335 of file LArRodBlockStructure.h.

335 {
336return 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

◆ hasControlWords()

virtual uint32_t LArRodBlockStructure::hasControlWords ( ) const
inlinevirtualinherited

◆ hasPhysicsBlock()

virtual uint32_t LArRodBlockPhysicsV2::hasPhysicsBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 117 of file LArRodBlockPhysicsV2.h.

117{return LE_getHeader16(LowEBlkOffset);} ;

◆ hasRawDataBlock()

virtual uint32_t LArRodBlockPhysicsV2::hasRawDataBlock ( ) const
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 118 of file LArRodBlockPhysicsV2.h.

◆ initializeFEB()

void LArRodBlockPhysicsV2::initializeFEB ( const uint32_t id)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 306 of file LArRodBlockPhysicsV2.cxx.

308 if (m_vFragment->size()<m_iHeadBlockSize) //Got empty or spoiled fragment
309 {m_vFragment->resize(m_iHeadBlockSize,0); //Initialize FEB-Header
310 setHeader32(FEBID,id); //Set Feb ID
311 }
312
316}

◆ initializeFragment()

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

Reimplemented from LArRodBlockStructure.

Definition at line 278 of file LArRodBlockPhysicsV2.cxx.

279{
280 m_pRODblock=&fragment; //remember pointer to fragment
281 if (fragment.size()>m_iHeadBlockSize) { //Got filled fragment
282 unsigned int sizeRead=0;
283 //Store existing data in the FEB-Map
284 while (sizeRead<fragment.size()) {
285 std::vector<uint32_t>::iterator FebIter;
286 FebIter=fragment.begin()+sizeRead; //Store pointer to current Feb-Header
287 m_FebBlock=&(*FebIter); //Set m_FebBlock in order to use getHeader-functions.
288 uint32_t currFEBid=getHeader32(FEBID); //Get this FEB-ID
289 uint16_t currFebSize=getNumberOfWords(); //Size of this FEB-Block
290 //std::cout << "FebID=" << currFEBid << " FEBSize=" << currFebSize << " Vector size=" << fragment.size() << std::endl;
291 if (FebIter+currFebSize>fragment.end()) {
292 fragment.clear(); //Clear existing vector
293 m_logstr << MSG::ERROR << "Got inconsistent ROD-Fragment!" << endmsg;
294 return;
295 }
296 m_mFebBlocks[currFEBid].assign(FebIter,FebIter+currFebSize); //Copy data from ROD-fragment into FEB-Block
297 sizeRead+=currFebSize+m_MiddleHeaderSize;//6 is the middle header size
298 LARBSDBG("Found FEB-id " << currFEBid << " in existing ROD-Fragment");
299 } // end while
300 }
301 fragment.clear(); //Clear existing vector
302 return;
303}

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

◆ nextFEB()

bool LArRodBlockStructure::nextFEB ( )
inlineinherited

Definition at line 497 of file LArRodBlockStructure.h.

498{
500
501 const int32_t FebOffset = m_FebBlockSize+m_MiddleHeaderSize;
502 const int32_t LeftSize = m_RodBlockSize-FebOffset+m_RodBlock-m_FebBlock;
503 if ( LeftSize<=0 ) return false; //No next feb
504
505 m_FebBlock += FebOffset; //Jump to the next FEB fragment
506 const int32_t BlockSize = getNumberOfWords();
507 //std::cout << "LeftSize=" << LeftSize << " BlockSize=" << BlockSize << std::endl;
508 if (BlockSize>LeftSize) {
509 std::cout << "Error while decoding LArByteStream: Found FEB block of size " << BlockSize << " in a ROD block of size " << LeftSize << std::endl;
510 m_error_next_feb = true;
511 return false;
512 }
513 //std::cout << "Second FEB ok, size= " << LeftSize <<std::endl;
514
515 //m_FebBlockSize = LeftSize; //should be =BlockSize;
516 m_FebBlockSize=BlockSize;
517
518 //std::cout << "2: FEB found with size " << m_FebBlockSize << std::endl;
519 setPointers();
520 return true;
521}

◆ 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
static const uint32_t m_OfflineToRawGainMap[3]

◆ 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 LArRodBlockPhysicsV2::operator() ( ) const

◆ operator()() [2/2]

template<class RAWDATA>
bool LArRodBlockPhysicsV2::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
static const uint32_t m_RawToOfflineGainMap[4]

◆ 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 LArRodBlockPhysicsV2::resetPointers ( )
inlineprivatevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 79 of file LArRodBlockPhysicsV2.cxx.

◆ 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}

◆ 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 LArRodBlockStructure::setEx ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 200 of file LArRodBlockStructure.cxx.

201{
202 // Do not set anything
203 return;
204}

◆ setEy()

void LArRodBlockStructure::setEy ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 206 of file LArRodBlockStructure.cxx.

207{
208 // Do not set anything
209 return;
210}

◆ setEz()

void LArRodBlockStructure::setEz ( double )
virtualinherited

Reimplemented in LArRodBlockPhysicsV3, LArRodBlockPhysicsV5, and LArRodBlockPhysicsV6.

Definition at line 212 of file LArRodBlockStructure.cxx.

213{
214 // Do not set anything
215 return;
216}

◆ 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{
255 m_FebBlock = p;
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 {
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}
const uint32_t * m_virtualROBPointerLocal
const uint32_t * m_virtualROBPointer

◆ setGain()

virtual int LArRodBlockPhysicsV2::setGain ( const int )
inlinevirtual

Reimplemented from LArRodBlockStructure.

Definition at line 102 of file LArRodBlockPhysicsV2.h.

102{ 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 LArRodBlockPhysicsV2::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 177 of file LArRodBlockPhysicsV2.cxx.

178 {
179 int rcNb=FebToRodChannel(channel);
180 //rcNb ist supposed to equal or bigger than m_EIndex.
181 //In the latter case, we fill up the missing channels with zero
182 if (rcNb<m_EIndex) {
183 m_logstr << MSG::ERROR << "LArRODBlockStructure Error: Internal error. Channels not ordered correctly. rcNb=" << rcNb
184 << " m_EIndex=" << m_EIndex << endmsg;
185 return;
186 }
187 //Fill up missing channels with zeros:
188 while (m_EIndex<rcNb)
189 setNextEnergy(0,0,-1,0);
190 //Add data...
191 setNextEnergy(energy,time,quality,gain);
192 return;
193}
int FebToRodChannel(int ch) const

◆ setNextEnergy() [2/2]

void LArRodBlockPhysicsV2::setNextEnergy ( const int32_t energy,
const int32_t time,
const int32_t quality,
const uint32_t gain )
private

Definition at line 195 of file LArRodBlockPhysicsV2.cxx.

196{
197 if (m_EIndex>=m_channelsPerFEB) //Use m_EIndex to count total number of channels
198 {m_logstr << MSG::ERROR << "LArRodBlockStructure Error: Attempt to write Energy for channel "
199 << m_EIndex << " channels into a FEB!" <<endmsg;
200 return;
201 }
202 LARBSDBG("LArRodBlockStructure: Setting Energy for channel " << m_EIndex << ". E=" << energy);
203 if (quality<0 && energy<0x7FFE && gain==0) { //Write into Low Energy block
204 m_LowEIndex++; //Use m_LowEIndex to count the channels in the Low Energy block
205 ShortLong twoValues{};
206 twoValues.s[0]=0;
207 twoValues.s[1]=0;
208 if (m_LowEIndex%2==1) { //This is an odd number, simply add data at the bottom of the block
209 twoValues.s[0]=(int16_t)energy;
210 }
211 else { //Even number: Merging with previous block
212 uint32_t oneValue=m_LowEnergyBlock[m_LowEnergyBlock.size()-1]; //Take last element of vector
213 m_LowEnergyBlock.pop_back();
214 int16_t* valptr=reinterpret_cast<int16_t*>(&oneValue);
215 twoValues.s[0]=valptr[0];
216 twoValues.s[1]=(int16_t)energy;
217 }
218 LARBSDBG("Writing words: val0= " << twoValues.s[0] << " val1= " << twoValues.s[1]);
219 m_LowEnergyBlock.push_back(twoValues.l);
220 LARBSDBG("Writing Raw data to Low E block. E=" << energy);
221 }
222 else //Write into High Energy block
224 m_HighEnergyBlock.push_back(energy);
225 uint32_t t_sign;
226 uint32_t abs_time;
227 if (time<0)
228 t_sign=1;
229 else
230 t_sign=0;
231 abs_time=abs(time);
232 if (abs_time>0x1fff)
233 abs_time=0x1fff;
234 //uint32_t gtQ = (gain << 30) | ((time & 0x3fff)<<16) | (0xffff & quality);
235 uint32_t gtQ = (gain << 30) | (t_sign<<29) | ((abs_time & 0x1fff)<<16) | (0xffff & quality);
236 m_HighEnergyBlock.push_back(gtQ);
237 LARBSDBG("Writing Raw data to High E block. E=" << energy << " Q=" << quality);
238 }
239 m_EIndex++;
240 // if (energy>0)
241 //m_ECounter++;
242}
void setBit(uint32_t *const p, const unsigned chan)
setScaleOne setStatusOne setSaturated int16_t

◆ 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 LArRodBlockPhysicsV2::setNumberOfGains ( const uint8_t n)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 171 of file LArRodBlockPhysicsV2.cxx.

173 LE_setHeader16(NGainNSamples,(oldword & 0x00FF) | (n<<8));
174}

◆ setNumberOfSamples()

void LArRodBlockPhysicsV2::setNumberOfSamples ( const uint8_t n)
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 166 of file LArRodBlockPhysicsV2.cxx.

168 LE_setHeader16(NGainNSamples,(oldword & 0xFF00) | n);
169}

◆ setPointers()

bool LArRodBlockPhysicsV2::setPointers ( )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 89 of file LArRodBlockPhysicsV2.cxx.

90{//Set pointers to data blocks (pesuming, they exist)
92 {
94 {
97 m_GainPtr=reinterpret_cast<const uint32_t*>(m_RawDataFlagsPtr-2*m_NFlaggingWords);
98 }
99 else
100 {
102 m_RawDataPtr=reinterpret_cast<const uint16_t*>(m_RawDataFlagsPtr);
103 m_GainPtr=reinterpret_cast<const uint32_t*>(m_DummyBitMap);
104 }
106 {
108 m_LowEPtr=reinterpret_cast<const int16_t*>(m_FlagPtr+m_NFlaggingWords);
109 }
110 else
111 { //Bugfix, 9.8.2004, WL: Set pointer to dummy map to read FEB with only high energy block
113 m_LowEPtr=reinterpret_cast<const int16_t*>(m_FlagPtr);
114 }
116 m_HighEPtr=reinterpret_cast<const int32_t*>(m_FebBlock)+LE_getHeader16(HighEBlkOffset);
117 else
118 m_HighEPtr=NULL;
119 }
120 else
121 {
122 m_RawDataPtr=NULL;
123 m_RawDataFlagsPtr=NULL;
124 m_GainPtr=NULL;
125 m_FlagPtr=NULL;
126 m_LowEPtr=NULL;
127 m_HighEPtr=NULL;
128 }
129#ifdef LARBSDBGOUTPUT
130 std::cout << "Fragment offsets: (m_NFlaggingWords=" << m_NFlaggingWords << ")" << std::endl;
131
132 if (m_GainPtr)
133 std::cout << "Gains: " << LE_getHeader16(RawDataBlkOffset)-2*m_NFlaggingWords<< std::endl;
134 else
135 std::cout << "Gains: not present" << std::endl;
136
138 std::cout << "Raw Data Flags: " << LE_getHeader16(RawDataBlkOffset)<< std::endl;
139 else
140 std::cout << "Raw Data Flags: not present" << std::endl;
141
142 if (m_RawDataPtr)
143 std::cout << "Raw Data: " << LE_getHeader16(RawDataBlkOffset)+m_NFlaggingWords<< std::endl;
144 else
145 std::cout << "Raw Data: not present" << std::endl;
146
147 if (m_FlagPtr)
148 std::cout << "Flags: " << LE_getHeader16(LowEBlkOffset)<< std::endl;
149 else
150 std::cout << "Flags: not present" << std::endl;
151
152 if (m_LowEPtr)
153 std::cout << "Low Energy: " << LE_getHeader16(LowEBlkOffset)+m_NFlaggingWords << std::endl;
154 else
155 std::cout << "Low Energy: not present" << std::endl;
156
157 if (m_HighEPtr)
158 std::cout << "High Energy: " << LE_getHeader16(HighEBlkOffset)<< std::endl;
159 else
160 std::cout << "High Energy: not present" << std::endl;
161#endif
162 return true;
163}
static const uint32_t m_DummyBitMap[4]

◆ 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 LArRodBlockPhysicsV2::setRawData ( const int channel,
const std::vector< short > & samples,
const uint32_t gain )
virtual

Reimplemented from LArRodBlockStructure.

Definition at line 245 of file LArRodBlockPhysicsV2.cxx.

245 {
246 //Convert Feb to Rod Channel Number:
247 //int rcNb=(channel>>3) + ((channel&0x7)<<4);
248 int rcNb=FebToRodChannel(channel);
249 if (rcNb>=m_channelsPerFEB)
250 {m_logstr << MSG::ERROR << "Attempt to write Energy for channel " << rcNb << " channels into a FEB!" << endmsg;
251 return;
252 }
253 unsigned int nsamples = LE_getVectorHeader16(NGainNSamples) & 0x00FF;
254 if(samples.size() != nsamples) {
255 m_logstr << MSG::ERROR << "Number of samples mismatch!\n";
256 m_logstr << " nsamples =" << nsamples;
257 m_logstr << " samples.size() =" << samples.size() << endmsg;
258 std::abort();
259 }
260
261 setBit(&m_RawDataBlock[0],rcNb);
262 //Samples have 12 bit and are shifted to the left by 2 bits.
263 // odd samples in high bits, even samples in low bits
264 if((nsamples/2)*2!=nsamples) { //odd number of samples - gain is alone
265 m_RawDataBlock.push_back((gain<<30) | samples[0]<<2);
266 for (unsigned int i=1;i<nsamples;i+=2)
267 m_RawDataBlock.push_back((samples[i+1]<<18) | samples[i]<<2);
268 }
269 else { //even number of samples - gain is packed with sample 0
270 m_RawDataBlock.push_back((gain<<30) | (samples[1]<<18) | samples[0]<<2);
271 for (unsigned int i=2;i<nsamples;i+=2)
272 m_RawDataBlock.push_back((samples[i+1]<<18) | samples[i]<<2);
273 }
274}

◆ 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/5]

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

Reimplemented from LArRodBlockStructure.

Definition at line 90 of file LArRodBlockStructure.cxx.

240{return;}

◆ sortDataVector() [2/5]

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

Reimplemented from LArRodBlockStructure.

Definition at line 91 of file LArRodBlockStructure.cxx.

243{return;}

◆ sortDataVector() [3/5]

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

Reimplemented from LArRodBlockStructure.

Definition at line 89 of file LArRodBlockStructure.cxx.

237{return;}

◆ sortDataVector() [4/5]

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

Reimplemented from LArRodBlockStructure.

◆ sortDataVector() [5/5]

virtual void LArRodBlockPhysicsV2::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_DummyBitMap

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

Definition at line 36 of file LArRodBlockPhysicsV2.h.

◆ m_ECounter

int LArRodBlockPhysicsV2::m_ECounter = 0
private

Definition at line 128 of file LArRodBlockPhysicsV2.h.

◆ m_EIndex

int LArRodBlockPhysicsV2::m_EIndex = 0
private

Definition at line 133 of file LArRodBlockPhysicsV2.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_FlagPtr

const uint32_t* LArRodBlockPhysicsV2::m_FlagPtr
private

Definition at line 138 of file LArRodBlockPhysicsV2.h.

◆ m_GainPtr

const uint32_t* LArRodBlockPhysicsV2::m_GainPtr
private

Definition at line 136 of file LArRodBlockPhysicsV2.h.

◆ m_HighEIndex

int LArRodBlockPhysicsV2::m_HighEIndex = 0
private

Definition at line 132 of file LArRodBlockPhysicsV2.h.

◆ m_HighEnergyBlock

std::vector<uint32_t> LArRodBlockPhysicsV2::m_HighEnergyBlock
private

Definition at line 125 of file LArRodBlockPhysicsV2.h.

◆ m_HighEPtr

const int32_t* LArRodBlockPhysicsV2::m_HighEPtr
private

Definition at line 137 of file LArRodBlockPhysicsV2.h.

◆ m_iHeadBlockSize

unsigned short LArRodBlockStructure::m_iHeadBlockSize
protectedinherited

Definition at line 221 of file LArRodBlockStructure.h.

◆ m_logstr

MsgStream LArRodBlockPhysicsV2::m_logstr
private

Definition at line 151 of file LArRodBlockPhysicsV2.h.

◆ m_LowEIndex

int LArRodBlockPhysicsV2::m_LowEIndex = 0
private

Definition at line 130 of file LArRodBlockPhysicsV2.h.

◆ m_LowEnergyBlock

std::vector<uint32_t> LArRodBlockPhysicsV2::m_LowEnergyBlock
private

Definition at line 124 of file LArRodBlockPhysicsV2.h.

◆ m_LowEPtr

const int16_t* LArRodBlockPhysicsV2::m_LowEPtr
private

Definition at line 139 of file LArRodBlockPhysicsV2.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_NFlaggingWords

unsigned short LArRodBlockPhysicsV2::m_NFlaggingWords
private

Definition at line 141 of file LArRodBlockPhysicsV2.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 21 of file LArRodBlockStructure.h.

◆ m_onlineHelper

const LArOnlineID* LArRodBlockPhysicsV2::m_onlineHelper
private

Definition at line 144 of file LArRodBlockPhysicsV2.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> LArRodBlockPhysicsV2::m_RawDataBlock
private

Definition at line 126 of file LArRodBlockPhysicsV2.h.

◆ m_RawDataCounter

int LArRodBlockPhysicsV2::m_RawDataCounter = 0
private

Definition at line 129 of file LArRodBlockPhysicsV2.h.

◆ m_RawDataFlagsPtr

const uint32_t* LArRodBlockPhysicsV2::m_RawDataFlagsPtr
private

Definition at line 135 of file LArRodBlockPhysicsV2.h.

◆ m_RawDataIndex

int LArRodBlockPhysicsV2::m_RawDataIndex = 0
private

Definition at line 131 of file LArRodBlockPhysicsV2.h.

◆ m_RawDataPtr

const uint16_t* LArRodBlockPhysicsV2::m_RawDataPtr
private

Definition at line 134 of file LArRodBlockPhysicsV2.h.

◆ m_RawToOfflineGainMap

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

Definition at line 20 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_SumE

int32_t LArRodBlockStructure::m_SumE
protectedinherited

Definition at line 210 of file LArRodBlockStructure.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: