#include <TObject.h>
class AliRawReader;
+class AliAltroRawStream;
class AliAltroRawStreamV3: public TObject {
public :
const UShort_t* GetSignals() const { return fBunchDataPointer; } // Provide access to altro data itself
Bool_t IsChannelBad() const { return fBadChannel; } // Is the channel data bad or not
+ Int_t GetChannelPayloadSize() const { return fChannelPayloadSize; }
+ UChar_t *GetRCUPayloadInSOD() const;
+ Int_t GetRCUPayloadSizeInSOD() const;
Int_t GetBranch() const; // Provide the branch index for the current hardware address
Int_t GetFEC() const; // Provide the front-end card index for the current hardware address
UInt_t GetFECERRA() const { return fFECERRA; }
UInt_t GetFECERRB() const { return fFECERRB; }
UShort_t GetERRREG2() const { return fERRREG2; }
- UShort_t GetNChAddrMismatch() const { return fERRREG3; }
- UShort_t GetNChLengthMismatch() const { return fERRREG4; }
+ UShort_t GetNChAddrMismatch() const { return (fERRREG3 & 0xFFF); }
+ UShort_t GetNChLengthMismatch() const { return ((fERRREG3 >> 12) & 0x1FFF); }
UShort_t GetActiveFECsA() const { return fActiveFECsA; }
UShort_t GetActiveFECsB() const { return fActiveFECsB; }
void SetShortDataHeader(Bool_t flag) { fIsShortDataHeader = flag; } // Specify whenever to assume or not a short CDH format
+ void SetCheckAltroPayload(Bool_t check) { fCheckAltroPayload = check; }
+
enum EAltroRawStreamV3Error {
kRCUTrailerErr = 1,
kRCUVerErr = 2,
Bool_t fBadChannel; //
Int_t fPayloadSize; //
+ Int_t fChannelPayloadSize; //
+
UShort_t fBunchData[kMaxNTimeBins]; // cache for the decoded altro payload
UShort_t* fBunchDataPointer; // pointer to the current bunch samples
Int_t fBunchDataIndex; // current position in the payload
UInt_t fFECERRA; // contains errors related to ALTROBUS transactions
UInt_t fFECERRB; // contains errors related to ALTROBUS transactions
UShort_t fERRREG2; // contains errors related to ALTROBUS transactions or trailer of ALTRO channel block
- UShort_t fERRREG3; // contains number of altro channels skipped due to an address mismatch
- UShort_t fERRREG4; // contains number of altro channels skipped due to a block length mismatch
+ UInt_t fERRREG3; // contains number of altro channels skipped due to an address mismatch
UShort_t fActiveFECsA; // bit pattern of active FECs in branch A
UShort_t fActiveFECsB; // bit pattern of active FECs in branch B
UInt_t fAltroCFG1; // ALTROCFG1 register
UInt_t fAltroCFG2; // ALTROCFG2 and ALTROIF registers
+ AliAltroRawStream* fOldStream; // streamer for old altro format
+
+ Bool_t fCheckAltroPayload; // check altro payload correctness or not?
+
ClassDef(AliAltroRawStreamV3, 0) // base class for reading Altro raw digits
};