]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCDigitReader.h
Bug fixes in HLT cluster transformation:
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCDigitReader.h
index 74a0ac59565002ee970bae37524e5decb584521e..7f4bc714364f5f1a237531c821fa1b2d43519c03 100644 (file)
@@ -4,9 +4,9 @@
 #ifndef ALIHLTTPCDIGITREADER_H
 #define ALIHLTTPCDIGITREADER_H
 
-/* This file is property of and copyright by the ALICE HLT Project        * 
- * ALICE Experiment at CERN, All rights reserved.                         *
- * See cxx source for full Copyright notice                               */
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
 
 /** @file   AliHLTTPCDigitReader.h
     @author Timm Steinbeck, Jochen Thaeder, Matthias Richter, Kenneth Aamodt
     @brief  An abstract reader class for TPC data.
 */
 
-// see below for class documentation
-// or
-// refer to README to build package
-// or
-// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-
 #include "AliHLTLogging.h"
 #include "TObject.h"
+#include "AliHLTTPCDigitData.h"
 
 /**
  * @class AliHLTTPCDigitReader
@@ -73,6 +68,11 @@ public:
    */
   virtual int InitBlock(void* ptr,unsigned long size,Int_t firstrow,Int_t lastrow, Int_t patch, Int_t slice);
 
+  /**
+   * Reset digit reader and release internal structures.
+   */
+  virtual int Reset() {return 0;}
+
   enum {
     kNextSignal = 1,
     kNextChannel,
@@ -119,6 +119,16 @@ public:
    */
   virtual int NextBunch();
 
+  /**
+   * Get current hardware address.
+   */
+  virtual AliHLTUInt32_t GetAltroBlockHWaddr() const;
+
+  /**
+   * Get current hardware address from row and pad number.
+   */
+  virtual AliHLTUInt32_t GetAltroBlockHWaddr(Int_t row, Int_t pad) const;
+
   /**
    * Get the row number of the current value.
    */
@@ -137,7 +147,12 @@ public:
   /**
    * Get pointer to the the current ADC value.
    */
-  virtual AliHLTUInt32_t* GetSignals();
+  virtual const UInt_t* GetSignals();
+
+  /**
+   * Get pointer to the the current ADC value. In UShort_t, used by the 32BitFormat decoder
+   */
+  virtual const UShort_t* GetSignalsShort();
 
   /**
    * Get the time bin of the current value.
@@ -174,6 +189,32 @@ public:
    */
   int RewindChannel();
 
+  /**
+   * Returns the bunch size. Used by the fast decoder. 
+   */
+  virtual int GetBunchSize();
+
+  /**
+   * Returns the row offset. Used by the fast decoder. 
+   */  
+  virtual int GetRowOffset() const;
+
+  /**
+   * Returns the trailer size.
+   */
+  virtual int GetRCUTrailerSize();
+
+  /**
+   * Returns the trailer data.
+   */
+  virtual bool GetRCUTrailerData(UChar_t*& trData);
+
+  /**
+   * Returns the digits
+   */
+  virtual const AliHLTTPCDigitData* GetBunchDigits(){return 0;}
+
+
   /**
    * Access operator to the data of a specific time bin.
    * Not clear if we can manage this.
@@ -204,6 +245,8 @@ public:
     kNoRewind = 0x4,
     /** warning missing fast access methods */
     kWarnMissFastAccess = 0x8,
+    /** warning on missing RCU trailer getters */
+    kWarnMissTrailerGetters = 0x10,
     /** channel caching enabled */
     kChannelCaching = 0x100
   };
@@ -244,10 +287,10 @@ protected:
 
 private:
   /**
-   * Print a warning on the missing fast access methods.
+   * Print a warning once for missing functionality.
    * Set corresponding flag to avoid repetitive warnings.
    */
-  void PrintMissingFastAccessWarning();
+  void PrintWarningOnce(int type, const char* message);
 
   /** pad/channel is locked */
   unsigned int fFlags;                                    //!transient