]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONRawStreamTracker.h
Error messages stored in the global raw-reader error log (Cvetan, Chiara)
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTracker.h
1 #ifndef ALIMUONRAWSTREAMTRACKER_H
2 #define ALIMUONRAWSTREAMTRACKER_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 AliMUONRawStreamTracker
10 /// \brief Class for reading MUON raw digits
11 ///
12 //  Author: Christian Finck
13
14 #include <TObject.h>
15 #include "AliMUONPayloadTracker.h"
16
17 class AliRawReader;
18 class AliMUONDDLTracker;
19 class AliMUONDspHeader;
20 class AliMUONBusStruct;
21 class AliMUONBlockHeader;
22
23 class AliMUONRawStreamTracker: public TObject {
24   public :
25     AliMUONRawStreamTracker();
26     AliMUONRawStreamTracker(AliRawReader* rawReader);
27     virtual ~AliMUONRawStreamTracker();
28
29     /// Initialize iterator
30     void First();
31
32     /// Returns current DDL object during iteration
33     AliMUONDDLTracker* CurrentDDL() const { return fCurrentDDL; }
34     
35     /// Returns current BlockHeader object during iteration
36     AliMUONBlockHeader* CurrentBlockHeader() const { return fCurrentBlockHeader; }
37     
38     /// Returns current DspHeader object during iteration
39     AliMUONDspHeader* CurrentDspHeader() const { return fCurrentDspHeader; }
40     
41     /// Returns current BusStruct object during iteration
42     AliMUONBusStruct* CurrentBusStruct() const { return fCurrentBusStruct; }
43     
44     /// Advance one step in the iteration. Returns false if finished.
45     virtual Bool_t Next(Int_t& busPatchId, 
46                         UShort_t& manuId, UChar_t& manuChannel, 
47                         UShort_t& adc);
48     
49     virtual Bool_t NextDDL();
50
51     /// Return maximum number of DDL in DATE file
52     Int_t GetMaxDDL()   const {return fMaxDDL;}
53     /// Return maximum number of block per DDL in DATE file
54     Int_t GetMaxBlock() const {return  fPayload->GetMaxBlock();}
55     /// Return maximum number of Dsp per block in DATE file
56     Int_t GetMaxDsp()   const {return  fPayload->GetMaxDsp();}
57     /// Return maximum number of Buspatch per Dsp in DATE file
58     Int_t GetMaxBus()   const {return  fPayload->GetMaxBus();}
59
60     // check input before assigment
61     void SetMaxDDL(Int_t ddl);
62     void SetMaxBlock(Int_t blk);
63
64     /// Set maximum number of Dsp per block in DATE file
65     /// does not check, done via BusPatchManager
66     void SetMaxDsp(Int_t dsp) {fPayload->SetMaxDsp(dsp);}
67     /// Set maximum number of Buspatch per Dsp in DATE file
68     /// does not check, done via BusPatchManager
69     void SetMaxBus(Int_t bus) {fPayload->SetMaxBus(bus);}
70
71     /// Set object for reading the raw data
72     void SetReader(AliRawReader* rawReader) {fRawReader = rawReader;}
73
74     /// Return pointer for DDL
75     AliMUONDDLTracker*      GetDDLTracker() const {return fPayload->GetDDLTracker();}
76
77     /// Return pointer for payload
78     AliMUONPayloadTracker*  GetPayLoad()    const {return fPayload;}
79
80     /// Return number of DDL
81     Int_t                   GetDDL()        const {return fDDL - 1;}
82
83     /// Whether the iteration is finished or not
84     Bool_t IsDone() const;
85
86   private :
87     /// Not implemented
88     AliMUONRawStreamTracker(const AliMUONRawStreamTracker& stream);
89     /// Not implemented
90     AliMUONRawStreamTracker& operator = (const AliMUONRawStreamTracker& stream);
91
92     Bool_t GetNextDDL();
93     Bool_t GetNextBlockHeader();
94     Bool_t GetNextDspHeader();
95     Bool_t GetNextBusStruct();
96
97  private:
98     AliRawReader*    fRawReader;    ///< object for reading the raw data  
99     Int_t  fDDL;          ///< number of DDL    
100     Int_t  fMaxDDL;       ///< maximum number of DDL in DATE file    
101     AliMUONPayloadTracker* fPayload; ///< pointer to payload decoder
102     
103     AliMUONDDLTracker* fCurrentDDL; //!< for iterator: current ddl ptr
104     Int_t fCurrentDDLIndex; //!< for iterator: current ddl index
105     AliMUONBlockHeader* fCurrentBlockHeader; //!< for iterator: current block ptr
106     Int_t fCurrentBlockHeaderIndex; //!< for iterator: current block index    
107     AliMUONDspHeader* fCurrentDspHeader; //!< for iterator: current dsp ptr
108     Int_t fCurrentDspHeaderIndex; //!< for iterator: current dsp index    
109     AliMUONBusStruct* fCurrentBusStruct; //!< for iterator: current bus ptr
110     Int_t fCurrentBusStructIndex; //!< for iterator: current bus index    
111     Int_t fCurrentDataIndex; //!< for iterator: current data index
112     
113     ClassDef(AliMUONRawStreamTracker, 3)    // base class for reading MUON raw digits
114 };
115
116 #endif