Line data Source code
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 0 : AliMUONDDLTrigger* CurrentDDL() const { return fCurrentDDL; }
37 :
38 : /// Returns current DarcHeader object during iteration
39 0 : AliMUONDarcHeader* CurrentDarcHeader() const { return fCurrentDarcHeader; }
40 :
41 : /// Returns current RegHeader object during iteration
42 0 : AliMUONRegHeader* CurrentRegHeader() const { return fCurrentRegHeader; }
43 :
44 : /// Returns current LocalStruct object during iteration
45 0 : 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 0 : Int_t GetMaxDDL() const {return fgkMaxDDL;}
58 : /// Return maximum number of regional cards in DATE file
59 0 : Int_t GetMaxReg() const {return fPayload->GetMaxReg();}
60 : /// Return maximum number of local cards in DATE file
61 0 : 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 0 : AliMUONDDLTrigger* GetDDLTrigger() const {return fPayload->GetDDLTrigger();}
68 :
69 : /// Return number of DDL
70 0 : Int_t GetDDL() const {return fDDL - 1;}
71 :
72 : /// Return pointer for payload
73 0 : 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 0 : 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 18 : ClassDef(AliMUONRawStreamTrigger, 4) // base class for reading MUON trigger rawdata
122 : };
123 :
124 : #endif
|