AliRoot Core  3dc7879 (3dc7879)
AliTPCCalibQAChecker.h
Go to the documentation of this file.
1 #ifndef ALITPCCALIBQACHECKER_H
2 #define ALITPCCALIBQACHECKER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice */
5 
7 // //
8 // QA checking class //
9 // //
11 
12 #include <TNamed.h>
13 #include <TString.h>
14 #include <TH1.h>
15 
16 class TTree;
17 class TIterator;
18 class TGraph;
19 class TObjArray;
20 class TVirtualPad;
21 
22 class AliTPCCalibQAChecker : public TNamed {
23 public:
24  enum { kNQualityFlags=5 };
27 
29  AliTPCCalibQAChecker(const char* name, const char *title);
30 
31  virtual ~AliTPCCalibQAChecker();
32 
33  void Process();
34 
35  void SetTreeChecker(TTree* &tree) {fTreePtr=&tree;}
36  void SetHistChecker(TH1* &hist) {fHistPtr=&hist;}
37  void SetGraphChecker(TGraph* &graph) {fGraphPtr=&graph;}
38  void SetNumberChecker(Double_t & number) {fNumberPtr=&number;}
39 
40  const AliTPCCalibQAChecker* GetSubChecker(const char* name, Bool_t recursive=kTRUE) const;
42  Int_t GetNumberOfSubCheckers(Bool_t recursive=kTRUE) const;
43  Bool_t HasSubCheckers() const {return GetNumberOfSubCheckers(kFALSE)>0;}
44 
46 
47  //getters
48  void GetAlarmThreshold(Double_t &min, Double_t &max, QualityFlag_t quality=kERROR) const {min=fThresMin[quality]; max=fThresMax[quality];}
49  //
50  const char* GetDrawString() { return fStrDraw.Data(); }
51  const char* GetCutsString() { return fStrCuts.Data(); }
52  const char* GetDrawOptString() {return fStrDrawOpt.Data(); }
53 
54  //tree related
55  void SetDrawRepresentation(const char *draw, const char* drawOpt="") {fStrDrawRep=draw; fStrDrawRepOpt=drawOpt;}
56  void SetDrawAlarm(const char *draw, const char* drawOpt="") {fStrDraw=draw; fStrDrawOpt=drawOpt;}
57  void SetCutString(const char *cutString ) {fStrCuts=cutString;}
58 
59  //general thresholds for the different qualities
60  void SetAlarmThreshold(Double_t min, Double_t max, QualityFlag_t quality=kERROR);
61  void ResetAlarmThreshold(QualityFlag_t quality);
62  void ResetAlarmThresholds();
63 
64  //descriptions
65  void SetQualityDescription(const char* text, QualityFlag_t quality=kERROR);
66 
67  //alarm type
68  void SetAlarmType(AlarmType_t type) {fAlarmType=type;}
69 
70 
74  const char* GetQualityDescription() const { return QualityDescription(fQualityLevel);}
75 
76  static const char* QualityName(AliTPCCalibQAChecker::QualityFlag_t quality);
77  static Color_t QualityColor(AliTPCCalibQAChecker::QualityFlag_t quality);
78  const char* QualityDescription(QualityFlag_t quality) const;
79 
80  virtual void Draw(Option_t *option="");
81  virtual void Print(Option_t *option="") const;
82 
83  private:
84  //alarm decision variables
85  TTree **fTreePtr;
86  TH1 **fHistPtr;
87  TGraph **fGraphPtr;
88  Double_t *fNumberPtr;
89  TH1 *fHist;
90 
91  TIterator *fIterSubCheckers;
92 
93  TObjArray *fArrSubCheckers; //array with checkers to process
94  TObjArray *fArrAlarmDescriptions; //array with alarm descriptions
95 
96  TString fStrDrawRep; //draw string for representation histogram to visualise
97  TString fStrDrawRepOpt; //draw option for representation histogram
98 
99  TString fStrDraw; //draw string for alarm histogram
100  TString fStrDrawOpt; //draw option for alarm histogram
101 
102  TString fStrCuts; //cut string
103 
104  AlarmType_t fAlarmType; //type of the alarm
105  QualityFlag_t fQualityLevel; //quality level
106 
107  TObject* fHistRep; //visualised histogram
108 
109  Double_t fThresMin[kNQualityFlags];//minimum thresholds
110  Double_t fThresMax[kNQualityFlags];//maximum thresholds
111 
113  void ResetRepresentationHist() {if (fHistRep) {delete fHistRep; fHistRep=0x0;}}
114  //general processing
115  void ProcessTree();
116  void ProcessHist();
117  void ProcessGraph();
118  void ProcessNumber();
119  void ProcessSub();
120  //special processing
121  void ProcessEntries();
122  void ProcessMean();
123  void ProcessBin();
124  //
125  void CreateAlarmHist();
126  void ResetAlarmHist();
127  //
128  Int_t DrawInPad(TVirtualPad *pad, Int_t sub=1);
129  void DrawSubNodes(Option_t *option);
130  void DrawRepresentationHist(const Option_t *option);
131  void AddQualityLines(TH1 *hist);
132  //
135 
136  QualityFlag_t GetQuality(Double_t value) const;
137  QualityFlag_t GetQuality(Int_t n, const Double_t *arr) const;
138 
139  ClassDef(AliTPCCalibQAChecker,1);
140 };
141 
142 //
143 //inline functions
144 //
145 
146 //_________________________________________________________________________
148 {
149  //
150  // check quality of a value
151  //
152 
153  QualityFlag_t quality=kINFO;
154  //loop over Quality levels
155  for (Int_t i=(Int_t)kINFO; i<kNQualityFlags; ++i){
156  if (fThresMin[i]>=fThresMax[i]) continue;
157  if (value<fThresMin[i]||value>fThresMax[i]) quality=(QualityFlag_t)i;
158  }
159  return quality;
160 }
161 //_________________________________________________________________________
163 {
164  //
165  // check quality of an array
166  //
167 
168  QualityFlag_t quality=kINFO;
169  //loop over Quality levels
170  for (Int_t i=(Int_t)kINFO; i<kNQualityFlags; ++i){
171  if (fThresMin[i]>=fThresMax[i]) continue;
172  for (Int_t ientry=0; ientry<n; ++ientry){
173  Double_t value=arr[ientry];
174  if (value<fThresMin[i]||value>fThresMax[i]) quality=(QualityFlag_t)i;
175  }
176  }
177  return quality;
178 }
179 
180 #endif
void SetNumberChecker(Double_t &number)
const char * GetCutsString()
void DrawRepresentationHist(const Option_t *option)
const char * GetDrawString()
void SetQualityDescription(const char *text, QualityFlag_t quality=kERROR)
#define TObjArray
Int_t DrawInPad(TVirtualPad *pad, Int_t sub=1)
void SetGraphChecker(TGraph *&graph)
Double_t * fNumberPtr
Pointer to the graph pointer.
Int_t GetNumberOfSubCheckers(Bool_t recursive=kTRUE) const
Color_t GetQualityColor() const
virtual void Print(Option_t *option="") const
const AliTPCCalibQAChecker * GetSubChecker(const char *name, Bool_t recursive=kTRUE) const
static const char * QualityName(AliTPCCalibQAChecker::QualityFlag_t quality)
const char * QualityDescription(QualityFlag_t quality) const
void GetAlarmThreshold(Double_t &min, Double_t &max, QualityFlag_t quality=kERROR) const
AliTPCCalibQAChecker * NextSubChecker()
TH1 ** fHistPtr
Pointer to the Tree pointer.
void SetCutString(const char *cutString)
QualityFlag_t GetQuality() const
TH1 * fHist
Pointer to number.
TTree * tree
Double_t fThresMax[kNQualityFlags]
TObjArray * fArrSubCheckers
iterator over sub checkers
void DrawSubNodes(Option_t *option)
void SetHistChecker(TH1 *&hist)
void SetAlarmThreshold(Double_t min, Double_t max, QualityFlag_t quality=kERROR)
AliTPCCalibQAChecker & operator=(const AliTPCCalibQAChecker &cfg)
TGraph ** fGraphPtr
Pointer to the hist pointer.
Double_t fThresMin[kNQualityFlags]
const char * GetQualityName() const
void AddSubChecker(AliTPCCalibQAChecker *alarm)
void ResetAlarmThreshold(QualityFlag_t quality)
void SetDrawRepresentation(const char *draw, const char *drawOpt="")
void SetAlarmType(AlarmType_t type)
Bool_t HasSubCheckers() const
const char * GetQualityDescription() const
void SetTreeChecker(TTree *&tree)
void SetDrawAlarm(const char *draw, const char *drawOpt="")
virtual void Draw(Option_t *option="")
static Color_t QualityColor(AliTPCCalibQAChecker::QualityFlag_t quality)
TIterator * fIterSubCheckers
Hist pointer for tree processing.
const char * GetDrawOptString()