3a3539a7c7016fec90771844e6d6971f0b789fa0
[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 if @ref ENABLE_PAD_SORTING is 1.
30  * @ingroup alihlt_tpc
31  */
32 class AliHLTTPCDigitReaderPacked : public AliHLTTPCDigitReader{
33 public:
34   /** standard constructor */
35   AliHLTTPCDigitReaderPacked(); 
36   /** not a valid copy constructor, defined according to effective C++ style */
37   AliHLTTPCDigitReaderPacked(const AliHLTTPCDigitReaderPacked&);
38   /** not a valid assignment op, but defined according to effective C++ style */
39   AliHLTTPCDigitReaderPacked& operator=(const AliHLTTPCDigitReaderPacked&);
40   /** destructor */
41   virtual ~AliHLTTPCDigitReaderPacked();
42   
43   /**
44    * Init the reader with a data block.
45    * The function fetches the first and last row for the readout partition
46    * from @ref AliHLTTransform.
47    * @param ptr     pointer to data buffer
48    * @param size    size of the data buffer
49    * @param patch   patch (readout partition) number within the slice
50    * @param slice   sector no (0 to 35)
51    */
52   Int_t InitBlock(void* ptr,ULong_t size, Int_t patch, Int_t slice);
53   void SetOldRCUFormat(bool oldrcuformat){fOldRCUFormat=oldrcuformat;}
54   Bool_t Next();
55   Int_t GetRow();
56   Int_t GetPad();
57   Int_t GetSignal();
58   Int_t GetTime();
59     
60 protected:
61     
62 private:
63   // Initialize AliROOT TPC raw stream parsing class
64   AliRawReaderMemory *fRawMemoryReader;
65
66   AliTPCRawStream *fTPCRawStream;
67     
68 #if ENABLE_PAD_SORTING 
69   Int_t fCurrentRow;
70   Int_t fCurrentPad;
71   Int_t fCurrentBin;
72  
73   Int_t fRowOffset;
74   Int_t fNRows;
75
76   Int_t fNMaxRows;
77   Int_t fNMaxPads;
78   Int_t fNTimeBins;
79
80   Int_t *fData;
81 #endif // ENABLE_PAD_SORTING
82
83   Bool_t fOldRCUFormat;
84
85   ClassDef(AliHLTTPCDigitReaderPacked, 0)
86         
87 };
88
89 #else
90 // add a dummy class to make CINT happy
91 class AliHLTTPCDigitReaderPacked : public AliHLTLogging{
92 public:
93   AliHLTTPCDigitReaderPacked()
94   {
95     HLTFatal("AliHLTTPCDigitReaderPacked not build");
96   }
97 };
98 #endif //defined(HAVE_ALIRAWDATA) && defined(HAVE_ALITPCRAWSTREAM_H)
99
100 #endif