ROOT logo
AliRoot » TRD » AliTRDrawStream

class AliTRDrawStream: public TObject


Decoding data from the TRD raw stream
and translation into ADC values, on-line tracklets and tracks

CRC checks rely on boost, and are enabled only when TRD_RAW_CRC
is defined

Additional debug features can be enabled by defining TRD_RAW_DEBUG

Author: J. Klein (jochen.klein@cern.ch)


Function Members (Methods)

public:
AliTRDrawStream(AliRawReader* rawReader = 0x0)
virtual~AliTRDrawStream()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
static voidAssignTracklets(AliESDTrdTrack* trdTrack, Int_t* trackletIndex, Int_t* refIndex)
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
voidDisableErrorStorage()
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
TStringDumpAdcMask(TString title, UInt_t word)
Bool_tDumpingMCM(Int_t det, Int_t rob, Int_t mcm) const
TStringDumpMcmHeader(TString title, UInt_t word)
TStringDumpRaw(TString title, const UInt_t* start, Int_t length, UInt_t endmarker = 0xffffffff)
voidEnableErrorStorage()
virtual voidTObject::Error(const char* method, const char* msgfmt) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
AliTRDdigitsManager*GetDigitsManager() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
static const char*GetErrorMessage(AliTRDrawStream::ErrorCode_t errCode)
TTree*GetErrorTree() const
Int_tGetEventSize(Int_t sector) const
Int_tGetEventSize(Int_t sector, Int_t stack) const
Int_tGetEventSize(Int_t sector, Int_t stack, Int_t hc) const
virtual const char*TObject::GetIconName() const
UInt_tGetLinkMonitorFlags(Int_t sector, Int_t stack) const
TClonesArray*GetMarkerArray() const
UInt_tGetMatchFlagsBP(Int_t sector) const
UInt_tGetMatchFlagsSRAM(Int_t sector) const
virtual const char*TObject::GetName() const
Int_tGetNChannels(Int_t sector) const
Int_tGetNMCMs(Int_t sector) const
Int_tGetNTracklets(Int_t sector) const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
AliTRDrawStream::AliTRDrawStats*GetStats()
virtual const char*TObject::GetTitle() const
TClonesArray*GetTrackArray() const
TClonesArray*GetTrackletArray() const
UInt_tGetTriggerFlags(Int_t sector) const
ULong64_tGetTrkFlags(Int_t sector, Int_t stack) const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
Bool_tIsDumping() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
Int_tNextChamber(AliTRDdigitsManager* digMgr)
Int_tNextChamber(AliTRDdigitsManager* digMgr, UInt_t**, UShort_t**)
Bool_tNextDDL()
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
Bool_tReadEvent()
virtual voidTObject::RecursiveRemove(TObject* obj)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
voidSetDigitsManager(AliTRDdigitsManager* digMgr)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetDumpMCM(Int_t det, Int_t rob, Int_t mcm, Bool_t dump = kTRUE)
static voidSetErrorBehaviour(AliTRDrawStream::ErrorCode_t error, AliTRDrawStream::ErrorBehav_t behav)
static voidSetErrorDebugLevel(AliTRDrawStream::ErrorCode_t error, Int_t level)
voidSetMarkerArray(TClonesArray* ar)
static voidSetMCMReadoutPos(Int_t mcm, Int_t pos)
static voidTObject::SetObjectStat(Bool_t stat)
Bool_tSetReader(AliRawReader* rawReader)
static voidSetROBReadoutPos(Int_t robpair, Int_t pos)
voidSetTrackArray(TClonesArray* ar)
voidSetTrackletArray(TClonesArray* ar)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
static voidSortTracklets(TClonesArray* trklArray, TList& sortedTracklets, Int_t* indices)
voidStoreErrorsInArray()
voidStoreErrorsInTree()
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
AliTRDrawStream(const AliTRDrawStream&)
Int_tAdcColOffset(UInt_t mcmhdr) const
UShort_tCalcLinkChecksum(UInt_t* data, Int_t size)
Int_tCheck(UInt_t mcmhdr) const
Int_tCouldBeADCmask(UInt_t adcmask) const
Int_tCouldBeMCMhdr(UInt_t mcmhdr) const
Int_tDecodeGTUtracks()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidEquipmentError(AliTRDrawStream::ErrorCode_t err = kUnknown, const char *const msg = " ")
Int_tEvNo(UInt_t mcmhdr) const
voidForgetError()
Int_tGetActiveChannels(UInt_t adcmask) const
Int_tGetMCMReadoutPos(Int_t mcm) const
Int_tGetNActiveChannels(UInt_t adcmask) const
Int_tGetNActiveChannelsFromMask(UInt_t adcmask) const
Int_tGetROBReadoutPos(Int_t rob) const
voidLinkError(AliTRDrawStream::ErrorCode_t err = kUnknown, const char *const msg = " ")
voidTObject::MakeZombie()
Int_tMCM(UInt_t mcmhdr) const
voidMCMError(AliTRDrawStream::ErrorCode_t err = kUnknown, const char *const msg = " ")
AliTRDrawStream&operator=(const AliTRDrawStream&)
Int_tPadColOffset(UInt_t mcmhdr) const
Int_tReadGTUHeaders(UInt_t* buffer)
Int_tReadGTUTrailer()
Int_tReadHcHeader()
Int_tReadLinkData()
Int_tReadNonZSData()
Int_tReadSmHeader()
Int_tReadStackHeader(Int_t stack)
Int_tReadTPData(Int_t mode = 1)
Int_tReadTrackingHeader(Int_t stack)
Int_tReadTracklets()
Int_tReadTriggerHeaders()
Int_tReadZSData()
Int_tROB(UInt_t mcmhdr) const
voidROBError(AliTRDrawStream::ErrorCode_t err = kUnknown, const char *const msg = " ")
Int_tRow(UInt_t mcmhdr) const
Int_tSeekNextLink()
Int_tSeekNextStack()
voidStackError(AliTRDrawStream::ErrorCode_t err = kUnknown, const char *const msg = " ")
voidStoreErrorArray()
voidStoreErrorTree()

Data Members

public:
enum { kDDLOffset
kDDLMax
};
enum ErrorCode_t { kUnknown
kLinkMonitor
kEvCntMismatch
kNonTrdEq
kStackHeaderInvalid
kInvalidDetector
kInvalidPadRow
kNoDigits
kHCmismatch
kHCcheckFailed
kPosUnexp
kTPmodeInvalid
kTPmismatch
kNtimebinsChanged
kAdcMaskInconsistent
kAdcCheckInvalid
kAdcDataAbort
kAdcChannelsMiss
kMissMcmHeaders
kMissTpData
kCRCmismatch
kLastErrorCode
};
enum ErrorBehav_t { kTolerate
kDiscardMCM
kDiscardHC
kDiscardDDL
kAbort
};
enum MarkerCode_t { kHCactive
kSecactive
};
enum TObject::EStatusBits { kCanDelete
kMustCleanup
kObjInCanvas
kIsReferenced
kHasUUID
kCannotPick
kNoContextMenu
kInvalidObject
};
enum TObject::[unnamed] { kIsOnHeap
kNotDeleted
kZombie
kBitMask
kSingleKey
kOverwrite
kWriteDelete
};
protected:
AliTRDarrayADC*fAdcArraypointer to ADC array
Int_tfCurrAddHcWordscurrent number of additional HC-header words
UInt_t*fCurrBoardIdcurrent board IDs
Int_tfCurrCheckcurrent check bits
UInt_tfCurrChecksumSIU
UInt_tfCurrChecksumStack[18][5]
UInt_t*fCurrCleanCheckoutcurrent clean checkout flags
UInt_tfCurrEquipmentIdcurrent Equipment ID
UInt_tfCurrEvTypecurrent event type
Int_tfCurrHCcurrent HC
UInt_tfCurrHwRevcurrent hardware revision
UInt_t*fCurrHwRevTMUcurrent hardware revision
Int_tfCurrLayercurrent layer
Int_tfCurrLinkcurrent link
UInt_t*fCurrLinkDataTypeFlagscurrent link data flags
UInt_t*fCurrLinkDebugFlagscurrent link debug flags
UInt_t*fCurrLinkMaskcurrent link masks
UInt_t*fCurrLinkMonitorFlagscurrent link monitor flags
Int_tfCurrMajorcurrent major version
Char_tfCurrMatchFlagsPostBP[18]
Char_tfCurrMatchFlagsSRAM[18]
Int_tfCurrMcmPoscurrent MCM number
Int_tfCurrMinorcurrent minor version
Int_tfCurrNtimebinscurrent number of timebins
Int_tfCurrPtrgCntcurrent pretrigger count
Int_tfCurrPtrgPhasecurrent pretrigger phase
Int_tfCurrRobPoscurrent ROB number
Int_tfCurrSidecurrent side
Int_tfCurrSlotcurrent slot
Int_tfCurrSmcurrent sector
UInt_tfCurrSmHeaderSizecurrent size of the SM header
UInt_tfCurrSmHeaderVersioncurrent version of the SM header
Int_tfCurrSpecialcurrent value of the special flag
Int_tfCurrStackcurrent stack
UInt_tfCurrStackEndmarkerAvailcurrent stack endmarker availability
UInt_t*fCurrStackHeaderSizecurrent stack index sizes
UInt_t*fCurrStackHeaderVersioncurrent stack header versions
UInt_t*fCurrStackIndexWordcurrent stack index words
UInt_tfCurrStackMaskcurrent mask of active stacks
UInt_tfCurrTrackEnablecurrent value of track enable
UInt_tfCurrTrackletEnablecurrent value of tracklet enable
UInt_tfCurrTrailerReadoutcurrent presence of trailer (after the payload)
UInt_t*fCurrTrgFlagscurrent trigger flags of all sectors
UInt_tfCurrTrgHeaderAvailcurrent trigger information availability
UInt_t*fCurrTrgHeaderIndexWordcurrent tracking header index word
UInt_tfCurrTrgHeaderReadoutcurrent readout mode for the trigger headers
UInt_t*fCurrTrgHeaderSizecurrent tracking header index word
UInt_tfCurrTriggerEnablecurrent trigger enable
UInt_tfCurrTriggerFiredcurrent trigger fired
ULong64_t*fCurrTrkFlagscurrent tracking done flags
UInt_tfCurrTrkHeaderAvailcurrent tracking information availability
UInt_t*fCurrTrkHeaderIndexWordcurrent tracking header index word
UInt_t*fCurrTrkHeaderSizecurrent tracking header index word
AliTRDdigitsManager*fDigitsManagerpointer to the digitsManager to fill the data
AliTRDdigitsParam*fDigitsParampointer to the parameters belonging to the digits
Int_tfDumpMCM[100]MCMs to dump
charfErrorBuffer[100]buffer for error message
UInt_tfErrorFlagserror flags used to steer subsequent reading
TTree*fErrorstree containing the occured error codes
AliTRDrawStream::AliTRDrawStreamErrorfLastErrorlast error which occured
Int_tfLastEvIdEvent ID of last event
TClonesArray*fMarkerspointer to array of markers (data present, errors, ...)
Int_tfNDumpMCMsnumber of MCMs to dump
Int_tfNtimebinsnumber of timebins
UInt_t*fPayloadCurrpointer to current reading position in the payload
Int_tfPayloadSizesize of the payload (in UInt_t words)
UInt_t*fPayloadStartpointer to start of data payload
AliRawReader*fRawReaderpointer to the raw reader to take the data from
AliTRDSignalIndex*fSignalIndexpointer to the signal index
AliTRDrawStream::AliTRDrawStatsfStatsevent statistics, clearing must be done by the user
G__p2memfuncfStoreError! function pointer to method used for storing the error
TClonesArray*fTrackletspointer to array of tracklets
TClonesArray*fTrackspointer to array of GTU tracks
static AliTRDrawStream::ErrorBehav_tfgErrorBehav[21]bevhaviour in case of error of given type
static Int_tfgErrorDebugLevel[21]error debug level
static Int_tfgMcmOrder[2147483647]expected readout order of the MCMs
static Int_tfgRobOrder[2147483647]expected readout order of the ROBs
static const UInt_tfgkDataEndmarkerdata endmarker
static const char*fgkErrorMessages[21]error messages corresponding to the error codes
static const Int_tfgkNlinksnumber of links to read
static const Int_tfgkNsectorsnumber of sectors
static const Int_tfgkNstacksnumber of stacks to read
static const Int_tfgkNtriggersnumber of triggers in data stream
static const UInt_tfgkStackEndmarker[2147483647]stack endmarker (used from version 0xd on)
static const UInt_tfgkTrackletEndmarkertracklet endmarker

Class Charts

Inheritance Chart:
TObject
AliTRDrawStream

Function documentation

AliTRDrawStream(AliRawReader* rawReader = 0x0)
 default constructor
~AliTRDrawStream()
 destructor
Bool_t ReadEvent()
 read the current event from the raw reader and fill it to the digits manager
Bool_t NextDDL()
 continue reading with the next equipment
Int_t NextChamber(AliTRDdigitsManager* digMgr)
 read the data for the next chamber
 in case you only want to read the data of a single chamber
 to read all data ReadEvent(...) is recommended
Int_t ReadGTUHeaders(UInt_t* buffer)
 check the data source and read the headers
Int_t ReadSmHeader()
 read the SMU index header at the current reading position
 and store the information in the corresponding variables
Int_t DecodeGTUtracks()
 decode GTU track words
 this depends on the hardware revision of the SMU
Int_t ReadTrackingHeader(Int_t stack)
 read the tracking information and store it for the given stack
Int_t ReadTriggerHeaders()
 read all trigger headers present
Int_t ReadStackHeader(Int_t stack)
 read the stack header
 and store the information in the corresponding variables
Int_t ReadGTUTrailer()
 read the SM trailer containing CRCs from various stages
Int_t ReadLinkData()
 read the data in one link (one HC) until the data endmarker is reached
 returns the number of words read!
Int_t ReadTracklets()
 read the tracklets from one HC
Int_t ReadHcHeader()
 read and parse the HC header of one HC
 and store the information in the corresponding variables
Int_t ReadTPData(Int_t mode = 1)
 testing of testpattern 1 to 3 (hardcoded), 0 missing
 evcnt checking missing
Int_t ReadZSData()
 read the zs data from one link from the current reading position
Int_t ReadNonZSData()
 read the non-zs data from one link from the current reading position
UShort_t CalcLinkChecksum(UInt_t* data, Int_t size)
 calculate the CRC for the data from this link
 must not change the pointers to the data
Int_t SeekNextStack()
 proceed in raw data stream till the next stack
Int_t SeekNextLink()
 proceed in raw data stream till the next link
void EquipmentError(ErrorCode_t err, const char *const msg, ...)
 register error according to error code on equipment level
 and return the corresponding error message
void StackError(ErrorCode_t err, const char *const msg, ...)
 register error according to error code on stack level
 and return the corresponding error message
void LinkError(ErrorCode_t err, const char *const msg, ...)
 register error according to error code on link level
 and return the corresponding error message
void ROBError(ErrorCode_t err, const char *const msg, ...)
 register error according to error code on ROB level
 and return the corresponding error message
void MCMError(ErrorCode_t err, const char *const msg, ...)
 register error according to error code on MCM level
 and return the corresponding error message
const char* GetErrorMessage(AliTRDrawStream::ErrorCode_t errCode)
 return the error message for the given error code
void SetDumpMCM(Int_t det, Int_t rob, Int_t mcm, Bool_t dump = kTRUE)
 mark MCM for dumping of raw data
Bool_t DumpingMCM(Int_t det, Int_t rob, Int_t mcm) const
 check if MCM data should be dumped
TString DumpRaw(TString title, const UInt_t* start, Int_t length, UInt_t endmarker = 0xffffffff)
 dump raw data
TString DumpMcmHeader(TString title, UInt_t word)
TString DumpAdcMask(TString title, UInt_t word)
void SortTracklets(TClonesArray* trklArray, TList& sortedTracklets, Int_t* indices)
 sort tracklets for referencing from GTU tracks
void AssignTracklets(AliESDTrdTrack* trdTrack, Int_t* trackletIndex, Int_t* refIndex)
Int_t GetNActiveChannelsFromMask(UInt_t adcmask) const
 return number of active bits in the ADC mask
AliTRDrawStream(AliRawReader* rawReader = 0x0)
Bool_t SetReader(AliRawReader* rawReader)
{ fRawReader = rawReader; return kTRUE; }
void SetDigitsManager(AliTRDdigitsManager* digMgr)
{ fDigitsManager = digMgr; }
void SetTrackletArray(TClonesArray* ar)
{ fTracklets = ar; }
void SetTrackArray(TClonesArray* ar)
{ fTracks = ar; }
void SetMarkerArray(TClonesArray* ar)
{ fMarkers = ar; }
TClonesArray* GetTrackletArray() const
{ return fTracklets; }
TClonesArray* GetTrackArray() const
{ return fTracks; }
TClonesArray* GetMarkerArray() const
{ return fMarkers; }
AliTRDdigitsManager* GetDigitsManager() const
{ return fDigitsManager; }
Int_t NextChamber(AliTRDdigitsManager* digMgr)
void StoreErrorsInTree()
void StoreErrorsInArray()
void EnableErrorStorage()
void DisableErrorStorage()
TTree* GetErrorTree() const
{ return fErrors; }
void SetErrorDebugLevel(AliTRDrawStream::ErrorCode_t error, Int_t level)
{ fgErrorDebugLevel[error] = level; }
void SetErrorBehaviour(AliTRDrawStream::ErrorCode_t error, AliTRDrawStream::ErrorBehav_t behav)
{ fgErrorBehav[error] = behav; }
AliTRDrawStats* GetStats()
{ return &fStats; }
Int_t GetEventSize(Int_t sector) const
{ return fStats.fStatsSector[sector].fBytes; }
Int_t GetEventSize(Int_t sector, Int_t stack) const
Int_t GetEventSize(Int_t sector, Int_t stack, Int_t hc) const
Int_t GetNTracklets(Int_t sector) const
{ return fStats.fStatsSector[sector].fNTracklets; }
Int_t GetNMCMs(Int_t sector) const
{ return fStats.fStatsSector[sector].fNMCMs; }
Int_t GetNChannels(Int_t sector) const
{ return fStats.fStatsSector[sector].fNChannels; }
ULong64_t GetTrkFlags(Int_t sector, Int_t stack) const
{ return (fCurrTrgFlags[sector] & (1 << (27 + stack))) ? fCurrTrkFlags[sector*fgkNstacks + stack] : 0; }
UInt_t GetTriggerFlags(Int_t sector) const
{ return fCurrTrgFlags[sector]; }
UInt_t GetLinkMonitorFlags(Int_t sector, Int_t stack) const
UInt_t GetMatchFlagsSRAM(Int_t sector) const
{ return fCurrMatchFlagsSRAM[sector]; }
UInt_t GetMatchFlagsBP(Int_t sector) const
{ return fCurrMatchFlagsPostBP[sector]; }
Bool_t IsDumping() const
{ return (fNDumpMCMs > 0); }
void SetMCMReadoutPos(Int_t mcm, Int_t pos)
 temporary: allow to change expected readout order
{ if (mcm > -1 && mcm < 16) fgMcmOrder[mcm] = pos; }
void SetROBReadoutPos(Int_t robpair, Int_t pos)
{ if (robpair > -1 && robpair < 4) fgMcmOrder[robpair] = pos; }
Int_t ROB(UInt_t mcmhdr) const
 MCM header decoding
{ return 0x7 & mcmhdr >> 28; }
Int_t MCM(UInt_t mcmhdr) const
{ return 0xf & mcmhdr >> 24; }
Int_t Row(UInt_t mcmhdr) const
{ return (ROB(mcmhdr) / 2) * 4 + MCM(mcmhdr) / 4; }
Int_t AdcColOffset(UInt_t mcmhdr) const
{ return (MCM(mcmhdr) % 4 + 1) * 21 + (ROB(mcmhdr) % 2) * 84 - 1; }
Int_t PadColOffset(UInt_t mcmhdr) const
{ return (MCM(mcmhdr) % 4 + 1) * 18 + (ROB(mcmhdr) % 2) * 72 + 1; }
Int_t EvNo(UInt_t mcmhdr) const
{ return 0xfffff & mcmhdr >> 4; }
Int_t Check(UInt_t mcmhdr) const
{ return 0xf & mcmhdr; }
Int_t CouldBeMCMhdr(UInt_t mcmhdr) const
{ return ((0xf & mcmhdr) == 0xc); }
Int_t GetMCMReadoutPos(Int_t mcm) const
{ return (mcm > -1 && mcm < 16) ? fgMcmOrder[mcm] : -1; }
Int_t GetROBReadoutPos(Int_t rob) const
{ return (rob > -1 && rob < 4) ? fgRobOrder[rob] : -1; }
Int_t GetActiveChannels(UInt_t adcmask) const
 ADC mask decoding
{ return 0x1fffff & adcmask >> 4; }
Int_t GetNActiveChannels(UInt_t adcmask) const
{ return (0x1f & ~(adcmask >> 25)); }
Int_t CouldBeADCmask(UInt_t adcmask) const
{ return ((0xf & adcmask) == 0xc && (0x3 & adcmask >> 30) == 0x1); }
void StoreErrorTree()
{ fErrors->Fill(); }
void StoreErrorArray()
{ new ((*fMarkers)[fMarkers->GetEntriesFast()]) AliTRDrawStreamError(fLastError); }
void ForgetError()
{ return; }
AliTRDrawStream& operator=(const AliTRDrawStream& )