commit from Kenneth:
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCDigitReaderPacked.h
1 // XEmacs -*-C++-*-
2 // @(#) $Id$
3
4 #ifndef ALIHLTTPCDIGITREADERPACKED_H
5 #define ALIHLTTPCDIGITREADERPACKED_H
6
7 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
8  * See cxx source for full Copyright notice                               */
9
10 /** @file   AliHLTTPCDigitReaderPacked.h
11     @author Timm Steinbeck, Jochen Thaeder, Matthias Richter, Kenneth Aamodt
12     @date   
13     @brief  A digit reader implementation for simulated, packed TPC 'raw' data.
14 */
15
16 //#define ENABLE_PAD_SORTING 1
17
18 #include "AliHLTTPCDigitReader.h"
19
20 #if defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
21
22 class AliRawReaderMemory;
23
24 class AliTPCRawStream;
25
26 /**
27  * @class AliHLTTPCDigitReaderPacked
28  * A digit reader implementation for simulated, packed TPC 'raw' data.
29  * Includes reordering of the pads by default, sorting (and time and
30  * memory consuming intermediate storing of the data) can be disabled
31  * by @ref SetUnsorted(kTRUE).
32  * @ingroup alihlt_tpc
33  */
34 class AliHLTTPCDigitReaderPacked : public AliHLTTPCDigitReader{
35 public:
36   /** standard constructor */
37   AliHLTTPCDigitReaderPacked(); 
38   /** destructor */
39   virtual ~AliHLTTPCDigitReaderPacked();
40   
41   /**
42    * Init the reader with a data block.
43    * The function fetches the first and last row for the readout partition
44    * from @ref AliHLTTransform.
45    * @param ptr     pointer to data buffer
46    * @param size    size of the data buffer
47    * @param patch   patch (readout partition) number within the slice
48    * @param slice   sector no (0 to 35)
49    */
50   Int_t InitBlock(void* ptr,ULong_t size, Int_t patch, Int_t slice);
51   void SetOldRCUFormat(bool oldrcuformat){fOldRCUFormat=oldrcuformat;}
52   void SetUnsorted(bool unsorted){fUnsorted=unsorted;}
53   Bool_t NextSignal();
54   Int_t GetRow();
55   Int_t GetPad();
56   Int_t GetSignal();
57   Int_t GetTime();
58     
59 protected:
60     
61 private:
62   /** copy constructor prohibited */
63   AliHLTTPCDigitReaderPacked(const AliHLTTPCDigitReaderPacked&);
64   /** assignment operator prohibited */
65   AliHLTTPCDigitReaderPacked& operator=(const AliHLTTPCDigitReaderPacked&);
66
67   // Initialize AliROOT TPC raw stream parsing class
68   AliRawReaderMemory *fRawMemoryReader; //!transient
69
70   AliTPCRawStream *fTPCRawStream; //!transient
71     
72   //#if ENABLE_PAD_SORTING 
73   Int_t fCurrentRow; //!transient
74   Int_t fCurrentPad; //!transient
75   Int_t fCurrentBin; //!transient
76  
77   Int_t fRowOffset; //!transient
78   Int_t fNRows; //!transient
79
80   Int_t fNMaxRows; //!transient
81   Int_t fNMaxPads; //!transient
82   Int_t fNTimeBins; //!transient
83
84   Int_t *fData;
85   //#endif // ENABLE_PAD_SORTING
86
87   Bool_t fOldRCUFormat; //!transient
88   Bool_t fUnsorted; //!transient
89
90   ClassDef(AliHLTTPCDigitReaderPacked, 1)
91         
92 };
93
94 #else
95 // add a dummy class to make CINT happy
96 class AliHLTTPCDigitReaderPacked : public AliHLTLogging{
97 public:
98   AliHLTTPCDigitReaderPacked()
99   {
100     HLTFatal("AliHLTTPCDigitReaderPacked not build");
101   }
102
103   ClassDef(AliHLTTPCDigitReaderPacked, 0)
104 };
105 #endif //defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
106
107 #endif