Main changes:
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStream.h
1 #ifndef ALIMUONRAWSTREAM_H
2 #define ALIMUONRAWSTREAM_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 // $Id$
7
8 /// \ingroup raw
9 /// \class AliMUONRawStream
10 /// \brief Base class for reading MUON raw digits
11 ///
12 //  Author: Christian Finck
13
14 #include <TObject.h>
15
16 class AliRawReader;
17
18 class AliMUONRawStream: public TObject {
19   public :
20     AliMUONRawStream();
21     AliMUONRawStream(AliRawReader* rawReader);
22     virtual ~AliMUONRawStream();
23
24     /// Initialize iterator
25     virtual void First() {return;} // not yet virtual pure, waiting for trigger
26     
27     /// DDL iterator 
28     virtual Bool_t NextDDL() = 0;
29
30     /// Whether the iteration is finished or not
31     virtual Bool_t IsDone() const {return kTRUE;} // not yet virtual pure, waiting for trigger
32
33     /// add error message into error logger
34     virtual void AddErrorMessage() = 0;
35
36     /// Set object for reading the raw data
37     virtual void SetReader(AliRawReader* rawReader) {fRawReader = rawReader;}
38
39     /// Get object for reading the raw data
40     virtual AliRawReader* GetReader() {return fRawReader;}
41
42     /// Enable error info logger
43     virtual void EnabbleErrorLogger() {fEnableErrorLogger = kTRUE;}
44
45     /// Check if error info logger enable
46     virtual Bool_t IsErrorLogger() const {return fEnableErrorLogger;}
47
48     /// swap method for Power PC
49     virtual void Swap(UInt_t *buffer, Int_t size) const;
50
51
52   private :
53     /// Not implemented
54     AliMUONRawStream(const AliMUONRawStream& stream);
55     /// Not implemented
56     AliMUONRawStream& operator = (const AliMUONRawStream& stream);
57
58     typedef struct {
59      UInt_t b1:8; ///< first byte word
60      UInt_t b2:8; ///< second byte word
61      UInt_t b3:8; ///< third byte word
62      UInt_t b4:8; ///< fourth byte word
63     } RawWord;
64
65     AliRawReader* fRawReader;    //!< object for reading the raw data  
66     Bool_t fEnableErrorLogger;   //!< flag to enable the error info logger
67     
68     ClassDef(AliMUONRawStream, 1)    // base class for reading MUON raw digits
69 };
70
71 #endif