020fb9dba8d3d179b2f24f04ed27211a8d54d4e9
[u/mrichter/AliRoot.git] / STEER / AliRawReader.h
1 #ifndef ALIRAWREADER_H
2 #define ALIRAWREADER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 #include <TObject.h>
7 #ifdef __CINT__
8 class fstream;
9 #else
10 #include <Riostream.h>
11 #endif
12
13 struct AliMiniHeader {
14   UInt_t    fSize;
15   UChar_t   fDetectorID;
16   UChar_t   fMagicWord[3];
17   UChar_t   fVersion;
18   UChar_t   fCompressionFlag;
19   UShort_t  fDDLID;
20 };
21
22 class AliRawReader: public TObject {
23   public :
24     AliRawReader(const char* fileName, Bool_t addNumber = kTRUE);
25     virtual ~AliRawReader();
26
27     inline Int_t     GetDetectorID() const {return fMiniHeader.fDetectorID;};
28     inline Int_t     GetDDLID() const {return fMiniHeader.fDDLID;};
29     inline Int_t     GetVersion() const {return fMiniHeader.fVersion;};
30     inline Bool_t    IsCompressed() const {return fMiniHeader.fCompressionFlag != 0;};
31
32     Bool_t           ReadNextInt(UInt_t& data);
33     Bool_t           ReadNextShort(UShort_t& data);
34     Bool_t           ReadNextChar(UChar_t& data);
35
36   protected :
37     Bool_t           OpenNextFile();
38
39     Bool_t           ReadMiniHeader();
40
41     const char*      fFileName;    // name of input files
42     Int_t            fFileNumber;  // number of current input file
43     fstream*         fStream;      // stream of raw digits
44     AliMiniHeader    fMiniHeader;  // current mini header
45     Int_t            fCount;       // counter of bytes to be read for current DDL
46
47     ClassDef(AliRawReader, 0) // base class for reading raw digits
48 };
49
50 #endif