]>
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(TRootIOCtor* dummy); | |
29 | AliMUONRawStreamTrigger(AliRawReader* rawReader); | |
30 | virtual ~AliMUONRawStreamTrigger(); | |
31 | ||
32 | /// Initialize iterator | |
33 | void First(); | |
34 | ||
35 | /// Returns current DDL object during iteration | |
36 | AliMUONDDLTrigger* CurrentDDL() const { return fCurrentDDL; } | |
37 | ||
38 | /// Returns current DarcHeader object during iteration | |
39 | AliMUONDarcHeader* CurrentDarcHeader() const { return fCurrentDarcHeader; } | |
40 | ||
41 | /// Returns current RegHeader object during iteration | |
42 | AliMUONRegHeader* CurrentRegHeader() const { return fCurrentRegHeader; } | |
43 | ||
44 | /// Returns current LocalStruct object during iteration | |
45 | AliMUONLocalStruct* CurrentLocalStruct() const { return fCurrentLocalStruct; } | |
46 | ||
47 | /// Advance one step in the iteration. Returns false if finished. | |
48 | virtual Bool_t Next(UChar_t& id, UChar_t& dec, Bool_t& trigY, | |
49 | UChar_t& yPos, UChar_t& sXDev, UChar_t& xDev, | |
50 | UChar_t& xPos, Bool_t& triggerY, Bool_t& triggerX, | |
51 | TArrayS& xPattern, TArrayS& yPattern); | |
52 | ||
53 | ||
54 | virtual Bool_t NextDDL(); | |
55 | ||
56 | /// Return maximum number of DDLs | |
57 | Int_t GetMaxDDL() const {return fgkMaxDDL;} | |
58 | /// Return maximum number of regional cards in DATE file | |
59 | Int_t GetMaxReg() const {return fPayload->GetMaxReg();} | |
60 | /// Return maximum number of local cards in DATE file | |
61 | Int_t GetMaxLoc() const {return fPayload->GetMaxLoc();} | |
62 | ||
63 | //void SetMaxReg(Int_t reg); | |
64 | void SetMaxLoc(Int_t loc); | |
65 | ||
66 | /// Return pointer for DDL structure | |
67 | AliMUONDDLTrigger* GetDDLTrigger() const {return fPayload->GetDDLTrigger();} | |
68 | ||
69 | /// Return number of DDL | |
70 | Int_t GetDDL() const {return fDDL - 1;} | |
71 | ||
72 | /// Return pointer for payload | |
73 | AliMUONPayloadTrigger* GetPayLoad() const {return fPayload;} | |
74 | ||
75 | /// Whether the iteration is finished or not | |
76 | Bool_t IsDone() const; | |
77 | ||
78 | /// add error message into error logger | |
79 | void AddErrorMessage(); | |
80 | ||
81 | /// Disable Warnings | |
82 | void DisableWarnings() {fPayload->DisableWarnings();} | |
83 | ||
84 | /// error numbers | |
85 | enum rawStreamTriggerError { | |
86 | kDarcEoWErr = 6, ///< end of Darc word error | |
87 | kGlobalEoWErr = 7, ///< end of Global word error | |
88 | kRegEoWErr = 8, ///< end of Regional word error | |
89 | kLocalEoWErr = 9 ///< end of local word error | |
90 | ||
91 | }; | |
92 | ||
93 | private : | |
94 | /// Not implemented | |
95 | AliMUONRawStreamTrigger(const AliMUONRawStreamTrigger& stream); | |
96 | /// Not implemented | |
97 | AliMUONRawStreamTrigger& operator = (const AliMUONRawStreamTrigger& stream); | |
98 | ||
99 | Bool_t GetNextDDL(); | |
100 | Bool_t GetNextRegHeader(); | |
101 | Bool_t GetNextLocalStruct(); | |
102 | ||
103 | private: | |
104 | ||
105 | AliMUONPayloadTrigger* fPayload; ///< pointer to payload decoder | |
106 | AliMUONDDLTrigger* fCurrentDDL; //!< for iterator: current ddl ptr | |
107 | Int_t fCurrentDDLIndex; //!< for iterator: current ddl index | |
108 | AliMUONDarcHeader* fCurrentDarcHeader; //!< for iterator: current darc ptr | |
109 | AliMUONRegHeader* fCurrentRegHeader; //!< for iterator: current reg ptr | |
110 | Int_t fCurrentRegHeaderIndex; //!< for iterator: current reg index | |
111 | AliMUONLocalStruct* fCurrentLocalStruct; //!< for iterator: current local ptr | |
112 | Int_t fCurrentLocalStructIndex; //!< for iterator: current local index | |
113 | Bool_t fLocalStructRead; //!< flag for read out local structure | |
114 | Int_t fDDL; //!< number of DDL | |
115 | ||
116 | ||
117 | Bool_t fNextDDL; ///< flag for next DDL to be read | |
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 |