]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALIMUONRAWSTREAMTRIGGER_H | |
2 | #define ALIMUONRAWSTREAMTRIGGER_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 AliMUONRawStreamTrigger | |
10 | /// \brief Class for reading MUON raw digits | |
11 | /// | |
12 | // Author: Christian Finck | |
13 | ||
14 | #include <TObject.h> | |
15 | #include "AliMUONPayloadTrigger.h" | |
16 | #include "AliMUONVRawStreamTrigger.h" | |
17 | class TArrayS; | |
18 | ||
19 | class AliRawReader; | |
20 | class AliMUONDDLTrigger; | |
21 | class AliMUONDarcHeader; | |
22 | class AliMUONRegkHeader; | |
23 | class AliMUONLocalStruct; | |
24 | ||
25 | class AliMUONRawStreamTrigger: public AliMUONVRawStreamTrigger { | |
26 | public : | |
27 | AliMUONRawStreamTrigger(); | |
28 | AliMUONRawStreamTrigger(AliRawReader* rawReader); | |
29 | virtual ~AliMUONRawStreamTrigger(); | |
30 | ||
31 | /// Initialize iterator | |
32 | void First(); | |
33 | ||
34 | /// Returns current DDL object during iteration | |
35 | AliMUONDDLTrigger* CurrentDDL() const { return fCurrentDDL; } | |
36 | ||
37 | /// Returns current DarcHeader object during iteration | |
38 | AliMUONDarcHeader* CurrentDarcHeader() const { return fCurrentDarcHeader; } | |
39 | ||
40 | /// Returns current RegHeader object during iteration | |
41 | AliMUONRegHeader* CurrentRegHeader() const { return fCurrentRegHeader; } | |
42 | ||
43 | /// Returns current LocalStruct object during iteration | |
44 | AliMUONLocalStruct* CurrentLocalStruct() const { return fCurrentLocalStruct; } | |
45 | ||
46 | /// Advance one step in the iteration. Returns false if finished. | |
47 | virtual Bool_t Next(UChar_t& id, UChar_t& dec, Bool_t& trigY, | |
48 | UChar_t& yPos, UChar_t& sXDev, UChar_t& xDev, | |
49 | UChar_t& xPos, Bool_t& triggerY, Bool_t& triggerX, | |
50 | TArrayS& xPattern, TArrayS& yPattern); | |
51 | ||
52 | ||
53 | virtual Bool_t NextDDL(); | |
54 | ||
55 | /// Return maximum number of DDLs | |
56 | Int_t GetMaxDDL() const {return fgkMaxDDL;} | |
57 | /// Return maximum number of regional cards in DATE file | |
58 | Int_t GetMaxReg() const {return fPayload->GetMaxReg();} | |
59 | /// Return maximum number of local cards in DATE file | |
60 | Int_t GetMaxLoc() const {return fPayload->GetMaxLoc();} | |
61 | ||
62 | //void SetMaxReg(Int_t reg); | |
63 | void SetMaxLoc(Int_t loc); | |
64 | ||
65 | /// Return pointer for DDL structure | |
66 | AliMUONDDLTrigger* GetDDLTrigger() const {return fPayload->GetDDLTrigger();} | |
67 | ||
68 | /// Return number of DDL | |
69 | Int_t GetDDL() const {return fDDL - 1;} | |
70 | ||
71 | /// Return pointer for payload | |
72 | AliMUONPayloadTrigger* GetPayLoad() const {return fPayload;} | |
73 | ||
74 | /// Whether the iteration is finished or not | |
75 | Bool_t IsDone() const; | |
76 | ||
77 | /// add error message into error logger | |
78 | void AddErrorMessage(); | |
79 | ||
80 | /// Disable Warnings | |
81 | void DisableWarnings() {fPayload->DisableWarnings();} | |
82 | ||
83 | /// error numbers | |
84 | enum rawStreamTriggerError { | |
85 | kDarcEoWErr = 6, ///< end of Darc word error | |
86 | kGlobalEoWErr = 7, ///< end of Global word error | |
87 | kRegEoWErr = 8, ///< end of Regional word error | |
88 | kLocalEoWErr = 9 ///< end of local word error | |
89 | ||
90 | }; | |
91 | ||
92 | private : | |
93 | /// Not implemented | |
94 | AliMUONRawStreamTrigger(const AliMUONRawStreamTrigger& stream); | |
95 | /// Not implemented | |
96 | AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream); | |
97 | ||
98 | Bool_t GetNextDDL(); | |
99 | Bool_t GetNextRegHeader(); | |
100 | Bool_t GetNextLocalStruct(); | |
101 | ||
102 | private: | |
103 | ||
104 | AliMUONPayloadTrigger* fPayload; ///< pointer to payload decoder | |
105 | AliMUONDDLTrigger* fCurrentDDL; //!< for iterator: current ddl ptr | |
106 | Int_t fCurrentDDLIndex; //!< for iterator: current ddl index | |
107 | AliMUONDarcHeader* fCurrentDarcHeader; //!< for iterator: current darc ptr | |
108 | AliMUONRegHeader* fCurrentRegHeader; //!< for iterator: current reg ptr | |
109 | Int_t fCurrentRegHeaderIndex; //!< for iterator: current reg index | |
110 | AliMUONLocalStruct* fCurrentLocalStruct; //!< for iterator: current local ptr | |
111 | Int_t fCurrentLocalStructIndex; //!< for iterator: current local index | |
112 | Bool_t fLocalStructRead; //!< flag for read out local structure | |
113 | Int_t fDDL; //!< number of DDL | |
114 | ||
115 | ||
116 | Bool_t fNextDDL; ///< flag for next DDL to be read | |
117 | Bool_t fEnableErrorLogger; //!< flag to enable the error info logger | |
118 | ||
119 | static const Int_t fgkMaxDDL; ///< maximum number of DDLs | |
120 | ||
121 | ClassDef(AliMUONRawStreamTrigger, 4) // base class for reading MUON trigger rawdata | |
122 | }; | |
123 | ||
124 | #endif |