37 #include "AliRawReader.h"
45 #include "Riostream.h"
58 fCurrentDDLIndex(fgkMaxDDL),
59 fCurrentBlockHeader(0),
60 fCurrentBlockHeaderIndex(0),
62 fCurrentDspHeaderIndex(0),
64 fCurrentBusStructIndex(0),
79 fCurrentDDLIndex(fgkMaxDDL),
80 fCurrentBlockHeader(0),
81 fCurrentBlockHeaderIndex(0),
83 fCurrentDspHeaderIndex(0),
85 fCurrentBusStructIndex(0),
102 fCurrentDDLIndex(fgkMaxDDL),
103 fCurrentBlockHeader(0),
104 fCurrentBlockHeaderIndex(0),
105 fCurrentDspHeader(0),
106 fCurrentDspHeaderIndex(0),
107 fCurrentBusStruct(0),
108 fCurrentBusStructIndex(0),
109 fCurrentDataIndex(0),
132 UShort_t& manuId, UChar_t& manuChannel,
141 if (
IsDone() )
return kFALSE;
205 Bool_t kFound(kFALSE);
230 Int_t totalDataWord =
GetReader()->GetDataSize();
235 UInt_t *buffer =
new UInt_t[totalDataWord/4];
237 if ( !
GetReader()->ReadNext((UChar_t*)buffer, totalDataWord) )
248 Swap(buffer, totalDataWord /
sizeof(UInt_t));
312 while (
fCurrentDspHeader == 0 && i < fCurrentBlockHeader->GetDspHeaderEntries()-1 )
350 while (
fCurrentBusStruct == 0 && i < fCurrentDspHeader->GetBusPatchEntries()-1 )
390 AliDebug(3,Form(
"Skipping DDL %d which does not seem to be there",
fDDL));
401 AliDebug(3, Form(
"DDL Number %d\n",
fDDL ));
403 Int_t totalDataWord =
GetReader()->GetDataSize();
405 UInt_t *buffer =
new UInt_t[totalDataWord/4];
407 if(!
GetReader()->ReadNext((UChar_t*)buffer, totalDataWord))
414 Swap(buffer, totalDataWord /
sizeof(UInt_t));
444 while(log->
Next(msg, occurance))
446 if (msg.Contains(
"Parity"))
449 if (msg.Contains(
"Glitch"))
452 if (msg.Contains(
"Padding"))
Bool_t GetNextBlockHeader()
Int_t GetLength() const
Return length of raw data.
AliMUONDspHeader * fCurrentDspHeader
! for iterator: current dsp ptr
Int_t fCurrentBusStructIndex
! for iterator: current bus index
AliMUONBlockHeader * fCurrentBlockHeader
! for iterator: current block ptr
UShort_t GetCharge(Int_t n) const
Bool_t GetNextBusStruct()
virtual void Swap(UInt_t *buffer, Int_t size) const
swap method for Power PC
Int_t GetBusPatchId() const
Return bus patch id.
AliMUONPayloadTracker * GetPayLoad() const
Return pointer for payload.
virtual Bool_t Next(Int_t &busPatchId, UShort_t &manuId, UChar_t &manuChannel, UShort_t &adc)
Advance one step in the iteration. Returns false if finished.
void SetMaxBlock(Int_t blk)
Bool_t Decode(UInt_t *buffer, Int_t datasize)
Class for decoding the payload for tracker raw data.
void SetMaxBlock(Int_t blk)
Set maximum number of blocks per DDL allowed.
Bool_t Next(TString &msg, Int_t &occurance)
A logger that keeps track of the number of times a message appeared.
Int_t fDDL
! number of DDL
AliMUONBusStruct * fCurrentBusStruct
! for iterator: current bus ptr
Bool_t GetNextDspHeader()
AliMUONDDLTracker * fCurrentDDL
! for iterator: current ddl ptr
virtual Bool_t IsErrorLogger() const
Check if error info logger enable.
UShort_t GetManuId(Int_t n) const
Class for reading MUON raw digits.
virtual Bool_t NextDDL()
DDL iterator.
AliMUONBlockHeader * GetBlkHeaderEntry(Int_t i) const
get entry
Int_t fCurrentDspHeaderIndex
! for iterator: current dsp index
Bool_t IsDone() const
Whether the iteration is finished or not.
This class is the base class for raw stream decoders than need to deal with raw data coming from the ...
Int_t fCurrentDataIndex
! for iterator: current data index
Int_t fCurrentBlockHeaderIndex
! for iterator: current block index
Int_t fCurrentDDLIndex
! for iterator: current ddl index
AliMUONLogger * GetErrorLogger() const
Get Error logger.
void Clear(Option_t *="")
Bool_t IsErrorMessage() const
check error/Warning presence
UChar_t GetChannelId(Int_t n) const
void First()
Initialize iterator.
AliMUONDDLTracker * GetDDLTracker() const
Return pointer for buspatch structure.
void AddErrorMessage()
add error message into error logger
static const Int_t fgkMaxDDL
! maximum number of DDLs
AliMUONPayloadTracker * fPayload
pointer to payload decoder
AliMUONRawStreamTracker()
virtual AliRawReader * GetReader()
Get object for reading the raw data.
virtual ~AliMUONRawStreamTracker()