Line data Source code
1 : #ifndef ALIITSRAWSTREAMSPDERRORLOG_H
2 : #define ALIITSRAWSTREAMSPDERRORLOG_H
3 :
4 : /* $Id$ */
5 :
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 :
27 : enum {kNrErrorCodes = 21};
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);
33 :
34 : void ResetEvent();
35 : void ProcessEvent(UInt_t eventNum);
36 : void AddErrorMessagesFromCurrentEvent(UInt_t eventNum);
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 :
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 0 : static UInt_t GetNrErrorCodes(){return kNrErrorCodes;}
49 :
50 : TGraph* GetConsErrEvent(UInt_t errorCode, UInt_t eq);
51 : TGraph* GetConsErrPos(UInt_t errorCode, UInt_t eq);
52 : TH1F* GetConsErrType(UInt_t eq);
53 : TH1F* GetConsErrFraction(UInt_t eq); // NB!!! Take care of deleting returned object later
54 : TH1F* GetConsErrFractionUnScaled(UInt_t eq);
55 0 : TGText* GetText() {return fText;}
56 0 : TGText* GetTextThisEvent(UInt_t eq) {if (eq<20) return fTextTmp[eq]; else return NULL;}
57 0 : TGText* GetTextGeneralThisEvent() {return fTextTmpGeneral;}
58 :
59 : UInt_t GetEventErrPosCounter(UInt_t errorCode, UInt_t eq);
60 : UInt_t GetEventErrPos(UInt_t index, UInt_t errorCode, UInt_t eq);
61 :
62 : private:
63 : Int_t fNErrors[kNrErrorCodes][20]; // number of errors for this event, for each code and eq
64 : Int_t fNErrorsTotal[kNrErrorCodes][20]; // number of errors for all events, for each code and eq
65 : UInt_t fNEvents[20]; // number of events used, for each eq
66 : UInt_t fErrEventCounter[kNrErrorCodes][20]; // event counter used when filling graph
67 : UInt_t fErrPosCounter[kNrErrorCodes][20]; // event counter used when filling graph
68 : UInt_t fErrPosTMPCounter[kNrErrorCodes][20]; // event counter used when filling graph
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
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
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
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();
84 : void DeleteHistograms() ;
85 :
86 118 : ClassDef(AliITSRawStreamSPDErrorLog, 2);
87 : };
88 :
89 : #endif
90 :
|