GRSISort
Created by P.C. Bender
Developement Team: P.C. Bender, R. Dunlop, V. Bildstein
An extension of the ROOT analysis Framework
THILDataParser Class Reference

The THILDataParser is the DAQ dependent part of GRSISort. It takes a "DAQ-dependent"-flavoured LMD file and converts it into a generic TFragment that the rest of GRSISort can deal with. This is where event word masks are applied, and any changes to the event format must be implemented.

Definition at line 43 of file THILDataParser.h.

Public Types

enum  EBank {
  EBank::kWFDN = 0, EBank::kGRF1 = 1, EBank::kGRF2 = 2, EBank::kGRF3 = 3,
  EBank::kGRF4 = 4, EBank::kFME0 = 5, EBank::kFME1 = 6, EBank::kFME2 = 7,
  EBank::kFME3 = 8
}
 
enum  EDataParserState {
  EDataParserState::kGood, EDataParserState::kOddUsedLength, EDataParserState::kWrongBufferType, EDataParserState::kZeroEventLength,
  EDataParserState::kOddEventLength, EDataParserState::kWrongEventLength, EDataParserState::kWrongUsPattern, EDataParserState::kWrongGeHPPattern,
  EDataParserState::kWrongGeEnPattern, EDataParserState::kWrongGeTimePattern, EDataParserState::kWrongSi1HPPattern, EDataParserState::kWrongSi1EnPattern,
  EDataParserState::kWrongSi2HPPattern, EDataParserState::kWrongSi2EnPattern, EDataParserState::kWrongSi3HPPattern, EDataParserState::kWrongSi3EnPattern,
  EDataParserState::kWrongEventId, EDataParserState::kUndefined
}
 
enum  EDigitizer {
  EDigitizer::kV1751 = 1, EDigitizer::kV1724 = 2, EDigitizer::kV1730_PSD = 3, EDigitizer::kV1730_PHA = 4,
  EDigitizer::kV1725_PHA = 7, EDigitizer::kV1725_PSD = 8
}
 

Public Member Functions

 THILDataParser ()
 
 ~THILDataParser ()
 
virtual std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > & AddGoodOutputQueue (size_t maxSize=50000)
 
virtual std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TBadFragment > > > & BadOutputQueue ()
 
virtual void ClearQueue ()
 
virtual size_t ItemsPushed ()
 
virtual std::string OutputQueueStatus ()
 
int Process (std::shared_ptr< TRawEvent >) override
 
void Push (ThreadsafeQueue< std::shared_ptr< const TBadFragment >> &queue, const std::shared_ptr< TBadFragment > &frag)
 
void Push (std::vector< std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment >>>> &queues, const std::shared_ptr< TFragment > &frag)
 
virtual std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TEpicsFrag > > > & ScalerOutputQueue ()
 
virtual void SetFinished ()
 
virtual void SetNoWaveForms (bool temp=true)
 
virtual void SetRecordDiag (bool temp=true)
 
virtual void SetStatusVariables (std::atomic_size_t *itemsPopped, std::atomic_long *inputSize)
 

Protected Attributes

std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TBadFragment > > > fBadOutputQueue
 
TChannelfChannel
 
bool fFragmentHasWaveform
 
std::map< int, int > fFragmentIdMap
 
TFragmentMap fFragmentMap
 
std::vector< std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment > > > > fGoodOutputQueues
 
std::atomic_long * fInputSize
 
std::atomic_size_t * fItemsPopped
 
unsigned long fLastDaqId
 
unsigned long fLastNetworkPacket
 
std::map< UInt_t, Long64_t > fLastTimeStampMap
 
unsigned long fLastTriggerId
 
const unsigned long fMaxTriggerId
 
bool fNoWaveforms
 
bool fRecordDiag
 
std::shared_ptr< ThreadsafeQueue< std::shared_ptr< TEpicsFrag > > > fScalerOutputQueue
 

Static Protected Attributes

static TGRSIOptionsfOptions = nullptr
 

Private Member Functions

uint16_t ByteSwap (const uint16_t &val)
 
int EagleEventToFragment (uint32_t size, uint16_t *data)
 

Private Attributes

EDataParserState fState
 

#include <THILDataParser.h>

+ Inheritance diagram for THILDataParser:
+ Collaboration diagram for THILDataParser:

Member Enumeration Documentation

◆ EBank

enum THILDataParser::EBank
strong
Enumerator
kWFDN 
kGRF1 
kGRF2 
kGRF3 
kGRF4 
kFME0 
kFME1 
kFME2 
kFME3 

Definition at line 49 of file THILDataParser.h.

◆ EDataParserState

Enumerator
kGood 
kOddUsedLength 
kWrongBufferType 
kZeroEventLength 
kOddEventLength 
kWrongEventLength 
kWrongUsPattern 
kWrongGeHPPattern 
kWrongGeEnPattern 
kWrongGeTimePattern 
kWrongSi1HPPattern 
kWrongSi1EnPattern 
kWrongSi2HPPattern 
kWrongSi2EnPattern 
kWrongSi3HPPattern 
kWrongSi3EnPattern 
kWrongEventId 
kUndefined 

Definition at line 60 of file THILDataParser.h.

◆ EDigitizer

Enumerator
kV1751 
kV1724 
kV1730_PSD 
kV1730_PHA 
kV1725_PHA 
kV1725_PSD 

Definition at line 51 of file THILDataParser.h.

Constructor & Destructor Documentation

◆ THILDataParser()

THILDataParser::THILDataParser ( )

Definition at line 19 of file THILDataParser.cxx.

References fState, and kGood.

◆ ~THILDataParser()

THILDataParser::~THILDataParser ( )

Definition at line 25 of file THILDataParser.cxx.

Member Function Documentation

◆ AddGoodOutputQueue()

virtual std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TFragment> > >& TDataParser::AddGoodOutputQueue ( size_t  maxSize = 50000)
inlinevirtualinherited

Definition at line 53 of file TDataParser.h.

References TDataParser::fGoodOutputQueues.

Referenced by TUnpackingLoop::AddGoodOutputQueue().

◆ BadOutputQueue()

virtual std::shared_ptr<ThreadsafeQueue<std::shared_ptr<const TBadFragment> > >& TDataParser::BadOutputQueue ( )
inlinevirtualinherited

Definition at line 61 of file TDataParser.h.

References TDataParser::fBadOutputQueue.

Referenced by TUnpackingLoop::BadOutputQueue().

◆ ByteSwap()

uint16_t THILDataParser::ByteSwap ( const uint16_t &  val)
inlineprivate

Definition at line 86 of file THILDataParser.h.

Referenced by EagleEventToFragment().

◆ ClearQueue()

void TDataParser::ClearQueue ( )
virtualinherited

◆ EagleEventToFragment()

◆ ItemsPushed()

virtual size_t TDataParser::ItemsPushed ( )
inlinevirtualinherited

Definition at line 76 of file TDataParser.h.

References TDataParser::fGoodOutputQueues.

Referenced by TUnpackingLoop::GetItemsPushed().

◆ OutputQueueStatus()

std::string TDataParser::OutputQueueStatus ( )
virtualinherited

Definition at line 80 of file TDataParser.cxx.

References TDataParser::fGoodOutputQueues.

Referenced by TUnpackingLoop::EndStatus().

◆ Process()

int THILDataParser::Process ( std::shared_ptr< TRawEvent rawEvent)
overridevirtual

Process this TRlmdEvent using the provided data parser. Returns the total number of fragments read (good and bad).

Implements TDataParser.

Definition at line 29 of file THILDataParser.cxx.

References EagleEventToFragment(), TDataParser::fInputSize, TDataParser::fItemsPopped, TGRSIOptions::Get(), TRlmdEvent::GetDataSize(), THILDataParserException::GetFailedWord(), and THILDataParserException::what().

◆ Push() [1/2]

◆ Push() [2/2]

void TDataParser::Push ( std::vector< std::shared_ptr< ThreadsafeQueue< std::shared_ptr< const TFragment >>>> &  queues,
const std::shared_ptr< TFragment > &  frag 
)
inherited

Definition at line 61 of file TDataParser.cxx.

References TDataParser::fFragmentIdMap.

◆ ScalerOutputQueue()

virtual std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TEpicsFrag> > >& TDataParser::ScalerOutputQueue ( )
inlinevirtualinherited

Definition at line 63 of file TDataParser.h.

References TDataParser::fScalerOutputQueue.

Referenced by TUnpackingLoop::ScalerOutputQueue().

◆ SetFinished()

void TDataParser::SetFinished ( )
virtualinherited

◆ SetNoWaveForms()

virtual void TDataParser::SetNoWaveForms ( bool  temp = true)
inlinevirtualinherited

Definition at line 46 of file TDataParser.h.

References TDataParser::fNoWaveforms.

Referenced by TUnpackingLoop::SetNoWaveForms().

◆ SetRecordDiag()

virtual void TDataParser::SetRecordDiag ( bool  temp = true)
inlinevirtualinherited

Definition at line 47 of file TDataParser.h.

References TDataParser::fRecordDiag.

Referenced by TUnpackingLoop::SetRecordDiag().

◆ SetStatusVariables()

virtual void TDataParser::SetStatusVariables ( std::atomic_size_t *  itemsPopped,
std::atomic_long *  inputSize 
)
inlinevirtualinherited

Definition at line 65 of file TDataParser.h.

References TDataParser::fInputSize, and TDataParser::fItemsPopped.

Referenced by TUnpackingLoop::Iteration().

Member Data Documentation

◆ fBadOutputQueue

◆ fChannel

TChannel* TDataParser::fChannel
protectedinherited

◆ fFragmentHasWaveform

bool TDataParser::fFragmentHasWaveform
protectedinherited

◆ fFragmentIdMap

std::map<int, int> TDataParser::fFragmentIdMap
protectedinherited

Definition at line 102 of file TDataParser.h.

Referenced by TDataParser::Push().

◆ fFragmentMap

TFragmentMap TDataParser::fFragmentMap
protectedinherited

Class that holds a map of fragments per address, takes care of calculating charges for GRF4 banks.

Definition at line 105 of file TDataParser.h.

Referenced by TGRSIDataParser::GriffinDataToFragment().

◆ fGoodOutputQueues

◆ fInputSize

std::atomic_long* TDataParser::fInputSize
protectedinherited

◆ fItemsPopped

std::atomic_size_t* TDataParser::fItemsPopped
protectedinherited

◆ fLastDaqId

unsigned long TDataParser::fLastDaqId
protectedinherited

The last daq ID in the raw file.

Definition at line 98 of file TDataParser.h.

◆ fLastNetworkPacket

unsigned long TDataParser::fLastNetworkPacket
protectedinherited

The last network packet recieved.

Definition at line 100 of file TDataParser.h.

◆ fLastTimeStampMap

std::map<UInt_t, Long64_t> TDataParser::fLastTimeStampMap
protectedinherited

Definition at line 107 of file TDataParser.h.

Referenced by TGRSIDataParser::GriffinDataToFragment().

◆ fLastTriggerId

unsigned long TDataParser::fLastTriggerId
protectedinherited

The last Trigged ID in the raw File.

Definition at line 99 of file TDataParser.h.

Referenced by TGRSIDataParser::SetTIGTriggerID().

◆ fMaxTriggerId

const unsigned long TDataParser::fMaxTriggerId
protectedinherited

The last trigger ID Called.

Definition at line 97 of file TDataParser.h.

Referenced by TGRSIDataParser::SetTIGTriggerID().

◆ fNoWaveforms

bool TDataParser::fNoWaveforms
protectedinherited

The flag to turn wave_forms on or off.

Definition at line 93 of file TDataParser.h.

Referenced by TGRSIDataParser::GriffinDataToFragment(), TDataParser::SetNoWaveForms(), and TGRSIDataParser::TigressDataToFragment().

◆ fOptions

TGRSIOptions * TDataParser::fOptions = nullptr
staticprotectedinherited

Static pointer to TGRSIOptions, gets set on the first call of GriffinDataToFragment.

Definition at line 109 of file TDataParser.h.

Referenced by TGRSIDataParser::CaenPhaToFragment(), TGRSIDataParser::CaenPsdToFragment(), and TGRSIDataParser::GriffinDataToFragment().

◆ fRecordDiag

bool TDataParser::fRecordDiag
protectedinherited

◆ fScalerOutputQueue

std::shared_ptr<ThreadsafeQueue<std::shared_ptr<TEpicsFrag> > > TDataParser::fScalerOutputQueue
protectedinherited

◆ fState

EDataParserState THILDataParser::fState
private

Definition at line 92 of file THILDataParser.h.

Referenced by THILDataParser().