Line data Source code
1 : #ifndef ALIMUONPAYLOADTRACKER_H
2 : #define ALIMUONPAYLOADTRACKER_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 AliMUONPayloadTracker
10 : /// \brief Class for decoding the payload for tracker raw data
11 : ///
12 : // Author Christian Finck
13 :
14 : #include <TObject.h>
15 : #include <TString.h>
16 :
17 :
18 : class AliMUONDDLTracker;
19 : class AliMUONBusStruct;
20 : class AliMUONDspHeader;
21 : class AliMUONBlockHeader;
22 : class AliMUONLogger;
23 :
24 : class AliMUONPayloadTracker: public TObject {
25 : public :
26 : AliMUONPayloadTracker();
27 : virtual ~AliMUONPayloadTracker();
28 :
29 : /// Return maximum number of block per DDL in DATE file
30 0 : Int_t GetMaxBlock() const {return fMaxBlock;}
31 : /// Return maximum number of Dsp per block in DATE file
32 0 : Int_t GetMaxDsp() const {return fMaxDsp;}
33 : /// Return maximum number of Buspatch per Dsp in DATE file
34 0 : Int_t GetMaxBus() const {return fMaxBus;}
35 :
36 : // check input before assigment
37 : void SetMaxBlock(Int_t blk);
38 :
39 : /// \brief Set maximum number of Dsp per block in DATE file
40 : /// does not check, done via BusPatchManager
41 0 : void SetMaxDsp(Int_t dsp) {fMaxDsp = dsp;}
42 : /// \brief Set maximum number of Buspatch per Dsp in DATE file
43 : /// does not check, done via BusPatchManager
44 0 : void SetMaxBus(Int_t bus) {fMaxBus = bus;}
45 :
46 : void ResetDDL();
47 :
48 : Bool_t Decode(UInt_t* buffer, Int_t datasize);
49 :
50 : /// Return pointer for local structure
51 0 : AliMUONBusStruct* GetBusPatchInfo() const {return fBusStruct;}
52 : /// Return pointer for buspatch structure
53 0 : AliMUONDDLTracker* GetDDLTracker() const {return fDDLTracker;}
54 :
55 : /// Get number of parity errors
56 0 : Int_t GetParityErrors() const {return fParityErrors;} // for online
57 : /// Get number of glitch errors
58 0 : Int_t GetGlitchErrors() const {return fGlitchErrors;}
59 : /// Get number of padding word errors
60 0 : Int_t GetPaddingErrors() const {return fPaddingErrors;}
61 :
62 : /// Get Error logger
63 0 : AliMUONLogger* GetErrorLogger() const {return fLog;}
64 :
65 : /// set warnings flag
66 0 : void DisableWarnings() {fWarnings = kFALSE;}
67 :
68 : private :
69 : /// Not implemented
70 : AliMUONPayloadTracker(const AliMUONPayloadTracker& stream);
71 : /// Not implemented
72 : AliMUONPayloadTracker& operator = (const AliMUONPayloadTracker& stream);
73 :
74 : Bool_t CheckDataParity();
75 : void AddErrorMessage(const Char_t* msg);
76 :
77 : Int_t fBusPatchId; ///< entry of buspatch structure
78 : Int_t fDspId; ///< entry of Dsp header
79 : Int_t fBlkId; ///< entry of Block header
80 :
81 : Int_t fMaxDDL; ///< maximum number of DDL in DATE file
82 : Int_t fMaxBlock; ///< maximum number of block per DDL in DATE file
83 : Int_t fMaxDsp; ///< maximum number of Dsp per block in DATE file
84 : Int_t fMaxBus; ///< maximum number of Buspatch per Dsp in DATE file
85 :
86 : AliMUONDDLTracker* fDDLTracker; //!<! pointer for buspatch structure
87 : AliMUONBusStruct* fBusStruct; //!<! pointer for local structure
88 : AliMUONBlockHeader* fBlockHeader; //!<! pointer for block structure
89 : AliMUONDspHeader* fDspHeader; //!<! pointer for dsp structure
90 :
91 : AliMUONLogger* fLog; //!<! Map of errors msg;
92 : Int_t fParityErrors; //!<! number of parity errors;
93 : Int_t fGlitchErrors; //!<! number of glitch errors;
94 : Int_t fPaddingErrors; //!<! number of padding word errors;
95 : Bool_t fWarnings; //!<! flag to enable/disable warnings
96 :
97 18 : ClassDef(AliMUONPayloadTracker, 4) // base class for reading MUON raw digits
98 : };
99 :
100 : #endif
|