10bb1a34 |
1 | #ifndef ALIITSRAWSTREAMSPDERRORLOG_H |
2 | #define ALIITSRAWSTREAMSPDERRORLOG_H |
3 | |
54a5b3aa |
4 | /* $Id$ */ |
5 | |
10bb1a34 |
6 | /////////////////////////////////////////////////////////////////////// |
7 | // Author: Henrik Tydesjo // |
8 | // For easier handling of error messages from AliITSRawStreamSPD. // |
9 | // The purpose of this class is to make possible the switch to the // |
10 | // AliRoot raw data parsing routines in the onlinte monitoring // |
11 | // programs, like SPD-MOOD, and still keep all the old functionality.// |
12 | /////////////////////////////////////////////////////////////////////// |
13 | |
14 | #include <TH1F.h> |
15 | #include <TH2F.h> |
16 | #include <TGraph.h> |
17 | #include <TGText.h> |
18 | |
19 | class AliITSRawStreamSPDErrorLog : public TObject { |
20 | |
21 | public: |
22 | AliITSRawStreamSPDErrorLog(); |
23 | AliITSRawStreamSPDErrorLog(const AliITSRawStreamSPDErrorLog& logger); |
24 | AliITSRawStreamSPDErrorLog& operator=(const AliITSRawStreamSPDErrorLog& logger); |
25 | virtual ~AliITSRawStreamSPDErrorLog(); |
26 | |
de12e454 |
27 | enum {kNrErrorCodes = 21}; |
10bb1a34 |
28 | enum {kTotal = 0}; |
29 | |
30 | void Reset(); |
31 | void ProcessError(UInt_t errorCode, UInt_t eq, Int_t bytesRead, Int_t headersRead, const Char_t *errMess); |
32 | void AddMessage(const Char_t *errMess); |
b457135f |
33 | |
34 | void ResetEvent(); |
35 | void ProcessEvent(UInt_t eventNum); |
36 | void AddErrorMessagesFromCurrentEvent(UInt_t eventNum); |
10bb1a34 |
37 | void SummarizeEvent(UInt_t eventNum); |
38 | |
39 | UInt_t GetNrErrors(UInt_t errorCode, UInt_t eq); |
40 | UInt_t GetNrErrorsAllEq(UInt_t errorCode); |
41 | UInt_t GetNrErrorsTotal(UInt_t errorCode, UInt_t eq); |
42 | UInt_t GetNrErrorsTotalAllEq(UInt_t errorCode); |
43 | |
10bb1a34 |
44 | void SetByteOffset(UInt_t eq, Int_t size); |
45 | void SuppressErrorMessages(UInt_t errorCode, Bool_t suppr = kTRUE); |
46 | void SuppressErrorEq(UInt_t eq, Bool_t suppr = kTRUE); |
47 | |
48 | static UInt_t GetNrErrorCodes(){return kNrErrorCodes;} |
49 | |
50 | TGraph* GetConsErrEvent(UInt_t errorCode, UInt_t eq); |
478d804c |
51 | TGraph* GetConsErrPos(UInt_t errorCode, UInt_t eq); |
10bb1a34 |
52 | TH1F* GetConsErrType(UInt_t eq); |
54a5b3aa |
53 | TH1F* GetConsErrFraction(UInt_t eq); // NB!!! Take care of deleting returned object later |
54 | TH1F* GetConsErrFractionUnScaled(UInt_t eq); |
10bb1a34 |
55 | TGText* GetText() {return fText;} |
b457135f |
56 | TGText* GetTextThisEvent(UInt_t eq) {if (eq<20) return fTextTmp[eq]; else return NULL;} |
57 | TGText* GetTextGeneralThisEvent() {return fTextTmpGeneral;} |
10bb1a34 |
58 | |
b457135f |
59 | UInt_t GetEventErrPosCounter(UInt_t errorCode, UInt_t eq); |
60 | UInt_t GetEventErrPos(UInt_t index, UInt_t errorCode, UInt_t eq); |
10bb1a34 |
61 | |
62 | private: |
63 | Int_t fNErrors[kNrErrorCodes][20]; // number of errors for this event, for each code and eq |
b457135f |
64 | Int_t fNErrorsTotal[kNrErrorCodes][20]; // number of errors for all events, for each code and eq |
10bb1a34 |
65 | UInt_t fNEvents[20]; // number of events used, for each eq |
10bb1a34 |
66 | UInt_t fErrEventCounter[kNrErrorCodes][20]; // event counter used when filling graph |
478d804c |
67 | UInt_t fErrPosCounter[kNrErrorCodes][20]; // event counter used when filling graph |
68 | UInt_t fErrPosTMPCounter[kNrErrorCodes][20]; // event counter used when filling graph |
10bb1a34 |
69 | Int_t fByteOffset[20]; // offset: how many bytes in the equipment header, for each eq |
70 | Bool_t fSuppressMess[kNrErrorCodes]; // do we suppress error messages for a specific error code? |
71 | Bool_t fSuppressEq[20]; // do we suppress error messages for a specific eq? |
72 | |
73 | TGraph *fConsErrEvent[kNrErrorCodes][20]; // graphs to display number of errors found in each event |
478d804c |
74 | TGraph *fConsErrPos[kNrErrorCodes][20]; // graphs to display number of bytes read for each error and event |
75 | TGraph *fConsErrPosTMP[kNrErrorCodes][20]; // temporary, to fill tgraph above for event |
10bb1a34 |
76 | TH1F *fConsErrType[20]; // histogram of how many errors for each error code |
77 | TH1F *fConsErrFraction[20]; // histogram of rate of events with errors for each error code |
10bb1a34 |
78 | |
79 | TGText *fText; // text buffer for all events analyzed so far |
80 | TGText *fTextTmp[20]; // text buffer for this event (defined error codes) |
81 | TGText *fTextTmpGeneral; // text buffer for this event (general errors) |
82 | |
83 | void InitHistograms(); |
71abf6b7 |
84 | void DeleteHistograms() ; |
10bb1a34 |
85 | |
478d804c |
86 | ClassDef(AliITSRawStreamSPDErrorLog, 2); |
10bb1a34 |
87 | }; |
88 | |
89 | #endif |
de12e454 |
90 | |