]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONRawStreamTracker.h
code cleanup: renaming functions; adding prototype code for later development; no...
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTracker.h
... / ...
CommitLineData
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#include "AliMUONVRawStreamTracker.h"
17
18class AliRawReader;
19class AliMUONDDLTracker;
20class AliMUONDspHeader;
21class AliMUONBusStruct;
22class AliMUONBlockHeader;
23
24class AliMUONRawStreamTracker: public AliMUONVRawStreamTracker {
25 public :
26 AliMUONRawStreamTracker();
27 AliMUONRawStreamTracker(TRootIOCtor* dummy);
28 AliMUONRawStreamTracker(AliRawReader* rawReader);
29 virtual ~AliMUONRawStreamTracker();
30
31 /// Initialize iterator
32 void First();
33
34 /// Returns current DDL object during iteration
35 AliMUONDDLTracker* CurrentDDL() const { return fCurrentDDL; }
36
37 /// Returns current BlockHeader object during iteration
38 AliMUONBlockHeader* CurrentBlockHeader() const { return fCurrentBlockHeader; }
39
40 /// Returns current DspHeader object during iteration
41 AliMUONDspHeader* CurrentDspHeader() const { return fCurrentDspHeader; }
42
43 /// Returns current BusStruct object during iteration
44 AliMUONBusStruct* CurrentBusStruct() const { return fCurrentBusStruct; }
45
46 /// Advance one step in the iteration. Returns false if finished.
47 virtual Bool_t Next(Int_t& busPatchId,
48 UShort_t& manuId, UChar_t& manuChannel,
49 UShort_t& adc);
50
51 virtual Bool_t NextDDL();
52
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 SetMaxBlock(Int_t blk);
62
63 /// Set maximum number of Dsp per block in DATE file
64 /// does not check, done via BusPatchManager
65 void SetMaxDsp(Int_t dsp) {fPayload->SetMaxDsp(dsp);}
66 /// Set maximum number of Buspatch per Dsp in DATE file
67 /// does not check, done via BusPatchManager
68 void SetMaxBus(Int_t bus) {fPayload->SetMaxBus(bus);}
69
70 /// Return pointer for DDL
71 AliMUONDDLTracker* GetDDLTracker() const {return fPayload->GetDDLTracker();}
72
73 /// Return number of DDL
74 Int_t GetDDL() const {return fDDL - 1;}
75
76 /// Return current DDL index
77 Int_t GetCurentDDL() const {return fCurrentDDLIndex;}
78
79 /// Return pointer for payload
80 AliMUONPayloadTracker* GetPayLoad() const {return fPayload;}
81
82 /// Whether the iteration is finished or not
83 Bool_t IsDone() const;
84
85 /// add error message into error logger
86 void AddErrorMessage();
87
88 /// Disable Warnings
89 void DisableWarnings() {fPayload->DisableWarnings();}
90
91 /// check error/Warning presence
92 Bool_t IsErrorMessage() const;
93
94 /// error numbers
95 enum rawStreamTrackerError {
96 kGlitchErr = 1, ///< glitch error
97 kPaddingWordErr = 2, ///< padding word error
98 kParityErr = 3 ///< parity error
99 };
100
101 private :
102 /// Not implemented
103 AliMUONRawStreamTracker(const AliMUONRawStreamTracker& stream);
104 /// Not implemented
105 AliMUONRawStreamTracker& operator = (const AliMUONRawStreamTracker& stream);
106
107 Bool_t GetNextDDL();
108 Bool_t GetNextBlockHeader();
109 Bool_t GetNextDspHeader();
110 Bool_t GetNextBusStruct();
111
112
113 private:
114
115 AliMUONPayloadTracker* fPayload; ///< pointer to payload decoder
116 AliMUONDDLTracker* fCurrentDDL; //!< for iterator: current ddl ptr
117 Int_t fCurrentDDLIndex; //!< for iterator: current ddl index
118 AliMUONBlockHeader* fCurrentBlockHeader; //!< for iterator: current block ptr
119 Int_t fCurrentBlockHeaderIndex; //!< for iterator: current block index
120 AliMUONDspHeader* fCurrentDspHeader; //!< for iterator: current dsp ptr
121 Int_t fCurrentDspHeaderIndex; //!< for iterator: current dsp index
122 AliMUONBusStruct* fCurrentBusStruct; //!< for iterator: current bus ptr
123 Int_t fCurrentBusStructIndex; //!< for iterator: current bus index
124 Int_t fCurrentDataIndex; //!< for iterator: current data index
125 Int_t fDDL; //!< number of DDL
126
127 ClassDef(AliMUONRawStreamTracker, 4) // base class for reading MUON raw digits
128};
129
130#endif