- Int_t *GetSignals() { return fSig;} // Signals in the three time bins from Data Word
- Int_t GetADC() const { return fADC;} // MCM ADC channel and Time Bin of word 1
- Int_t GetTimeBin() const { return fTB - 3;} // MCM ADC channel and Time Bin of word 1
- Int_t GetEventNumber() const { return fEv;} // MCM Event number and position of current MCM on TRD chamber
- Int_t GetROB() const { return fROB;} // MCM Event number and position of current MCM on TRD chamber
- Int_t GetMCM() const { return fMCM;} // MCM Event number and position of current MCM on TRD chamber
- Int_t GetSM() const { return fSM;} // Position of CURRENT half chamber in full TRD
- Int_t GetLayer() const { return fLAYER;} // PLANE = Position of CURRENT half chamber in full TRD
- Int_t GetStack() const { return fSTACK;} // CHAMBER = Position of CURRENT half chamber in full TRD
- Int_t GetROC() const { return fROC;} // Position of CURRENT half chamber in full TRD
- Int_t GetSide() const { return fSIDE;} // Position of CURRENT half chamber in full TRD
- Int_t GetDCS() const { return fDCS;} // DCS board number read from data (HC header)
- Int_t GetRow() const { return fROW;}
- Int_t GetCol() const { return fCOL;} // Detector Pad coordinates
- Int_t GetDet() const { return fDET;} // helper
- Int_t GetMaxRow() const { return fRowMax;}
- Int_t GetMaxCol() const { return fColMax;}
- Int_t GetNumberOfTimeBins() const {return fTBins;}
+ Int_t *GetSignals() { return fSig; } // Signals in the three time bins from Data Word
+ Int_t GetADC() const { return fADC; } // MCM ADC channel and Time Bin of word 1
+ Int_t GetTimeBin() const { return fTB - 3; } // MCM ADC channel and Time Bin of word 1
+ Int_t GetEventNumber() const { return fEv; } // MCM Event number and position of current MCM
+ Int_t GetROB() const { return fROB; } // MCM Event number and position of current MCM
+ Int_t GetMCM() const { return fMCM; } // MCM Event number and position of current MCM
+ Int_t GetSM() const { return fSM; } // Position of CURRENT half chamber in full TRD
+ Int_t GetLayer() const { return fLAYER; } // PLANE = Position of CURRENT half chamber in full TRD
+ Int_t GetStack() const { return fSTACK; } // CHAMBER = Position of CURRENT half chamber in full TRD
+ Int_t GetROC() const { return fROC; } // Position of CURRENT half chamber in full TRD
+ Int_t GetSide() const { return fSIDE; } // Position of CURRENT half chamber in full TRD
+ Int_t GetDCS() const { return fDCS; } // DCS board number read from data (HC header)
+ Int_t GetRow() const { return fROW; }
+ Int_t GetCol() const { return fCOL; } // Detector Pad coordinates
+ Int_t GetDet() const { return fDET; } // Helper
+ Int_t GetLastDet() const { return fLastDET; } // Helper
+ Int_t GetMaxRow() const { return fRowMax; }
+ Int_t GetMaxCol() const { return fColMax; }
+ Int_t GetNumberOfTimeBins() const { return fTBins; }
+
+ protected:
+
+ AliTRDgeometry *fGeo; // TRD geometry
+
+ void DecodeHCheader(Int_t timeBins);
+ void DecodeMCMheader();
+ void DecodeTracklet();
+ void DecodeGTUlinkMask();
+ Int_t DecodeDataWord();
+ Int_t DecodeDataWordV1V2(); // Valid for fRawversion = 1, 2, ...
+ Int_t DecodeDataWordV3(); // Valid for fRawversion = 3, ...
+
+ Int_t NextData(); // Get the next piece of memory
+
+ enum { kStart
+ , kStop
+ , kWordOK
+ , kNoMoreData
+ , kNextSM
+ , kNextHC
+ , kSeekNonEoTracklet
+ , kDecodeHC
+ , kNextMCM
+ , kNextData
+ , kReading };