1 #ifndef ALIITSRAWSTREAMSPDERRORLOG_H
2 #define ALIITSRAWSTREAMSPDERRORLOG_H
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 ///////////////////////////////////////////////////////////////////////
19 class AliITSRawStreamSPDErrorLog : public TObject {
22 AliITSRawStreamSPDErrorLog();
23 AliITSRawStreamSPDErrorLog(const AliITSRawStreamSPDErrorLog& logger);
24 AliITSRawStreamSPDErrorLog& operator=(const AliITSRawStreamSPDErrorLog& logger);
25 virtual ~AliITSRawStreamSPDErrorLog();
27 enum {kNrErrorCodes = 18};
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 void SummarizeEvent(UInt_t eventNum);
35 UInt_t GetNrErrors(UInt_t errorCode, UInt_t eq);
36 UInt_t GetNrErrorsAllEq(UInt_t errorCode);
37 UInt_t GetNrErrorsTotal(UInt_t errorCode, UInt_t eq);
38 UInt_t GetNrErrorsTotalAllEq(UInt_t errorCode);
40 void SetByteOffset(UInt_t eq, Int_t size);
41 void SuppressErrorMessages(UInt_t errorCode, Bool_t suppr = kTRUE);
42 void SuppressErrorEq(UInt_t eq, Bool_t suppr = kTRUE);
44 static UInt_t GetNrErrorCodes(){return kNrErrorCodes;}
46 TGraph* GetConsErrEvent(UInt_t errorCode, UInt_t eq);
47 TGraph* GetConsErrPos(UInt_t errorCode, UInt_t eq);
48 TH1F* GetConsErrType(UInt_t eq);
49 TH1F* GetConsErrFraction(UInt_t eq); // NB!!! Take care of deleting returned object later
50 TH1F* GetConsErrFractionUnScaled(UInt_t eq);
51 TGText* GetText() {return fText;}
55 Int_t fNErrors[kNrErrorCodes][20]; // number of errors for this event, for each code and eq
56 UInt_t fNEvents[20]; // number of events used, for each eq
57 UInt_t fErrEventCounter[kNrErrorCodes][20]; // event counter used when filling graph
58 UInt_t fErrPosCounter[kNrErrorCodes][20]; // event counter used when filling graph
59 UInt_t fErrPosTMPCounter[kNrErrorCodes][20]; // event counter used when filling graph
60 Int_t fByteOffset[20]; // offset: how many bytes in the equipment header, for each eq
61 Bool_t fSuppressMess[kNrErrorCodes]; // do we suppress error messages for a specific error code?
62 Bool_t fSuppressEq[20]; // do we suppress error messages for a specific eq?
64 TGraph *fConsErrEvent[kNrErrorCodes][20]; // graphs to display number of errors found in each event
65 TGraph *fConsErrPos[kNrErrorCodes][20]; // graphs to display number of bytes read for each error and event
66 TGraph *fConsErrPosTMP[kNrErrorCodes][20]; // temporary, to fill tgraph above for event
67 TH1F *fConsErrType[20]; // histogram of how many errors for each error code
68 TH1F *fConsErrFraction[20]; // histogram of rate of events with errors for each error code
70 TGText *fText; // text buffer for all events analyzed so far
71 TGText *fTextTmp[20]; // text buffer for this event (defined error codes)
72 TGText *fTextTmpGeneral; // text buffer for this event (general errors)
74 void InitHistograms();
75 void DeleteHistograms() const;
77 ClassDef(AliITSRawStreamSPDErrorLog, 2);