]>
Commit | Line | Data |
---|---|---|
c9dd1c4d | 1 | #ifndef ALIFMDQACHECKER_H |
2 | #define ALIFMDQACHECKER_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights | |
4 | * reserved. | |
5 | * | |
6 | * See cxx source for full Copyright notice | |
7 | */ | |
ffa78f64 | 8 | #include "AliQACheckerBase.h" |
c9dd1c4d | 9 | class TFile; |
10 | class TH1F; | |
11 | class TH1I; | |
1306ba55 | 12 | class TFitResultPtr; |
c9dd1c4d | 13 | |
1306ba55 | 14 | /** |
15 | * @class AliFMDQAChecker | |
16 | * @brief Quality assurance checker for the FMD | |
17 | */ | |
c9dd1c4d | 18 | class AliFMDQAChecker : public AliQACheckerBase |
19 | { | |
20 | public: | |
ffa78f64 | 21 | /** Constructor */ |
1306ba55 | 22 | AliFMDQAChecker(); |
ffa78f64 | 23 | /** Destructor */ |
c9dd1c4d | 24 | virtual ~AliFMDQAChecker() {} |
f26f970e | 25 | /** |
26 | * Member function called to do the actual checking | |
27 | * | |
28 | * @param rv Array of return values. | |
29 | * @param what What to check | |
30 | * @param list Array of arrays of histograms. There's one arrat for | |
31 | * each 'specie' | |
32 | * @param t Reconstruction parameters - not used. | |
33 | */ | |
1706c710 | 34 | void Check(Double_t* rv, AliQAv1::ALITASK_t what, |
35 | TObjArray** list, const AliDetectorRecoParam* t); | |
36 | /** | |
37 | * Make output images. This is overridden relative to the base | |
38 | * class so that we can set the log(y) scale and put everything on | |
39 | * the same axis. | |
40 | * | |
41 | * @param list List of specie array of histograms | |
42 | * @param task What to show | |
43 | * @param mode Mode | |
44 | */ | |
45 | void MakeImage(TObjArray** list, | |
46 | AliQAv1::TASKINDEX_t task, | |
47 | AliQAv1::MODE_t mode); | |
1306ba55 | 48 | /** |
49 | * Set wether to scale the histograms to a common Y axis or not when | |
50 | * generating plots | |
51 | * | |
52 | * @param on If true, do scale | |
53 | */ | |
9558fc76 | 54 | void SetDoScale(Bool_t on=true) { fDoScale = on; } |
05e5e0c1 | 55 | protected: |
1306ba55 | 56 | // Return values |
57 | enum { | |
58 | kOK, | |
59 | kProblem, | |
60 | kBad, | |
61 | kWhatTheFk | |
62 | }; | |
1d65d916 | 63 | /** |
64 | * Add a status pave to the plot | |
65 | * | |
66 | * @param ll List to add to | |
67 | * @param qual Quality | |
68 | * @param xl X coordinate of lower-left corner (NDC) | |
69 | * @param yl Y coordinate of lower-left corner (NDC) | |
70 | * @param xh X coordinate of upper-right corner (NDC) | |
71 | * @param yh Y coordinate of upper-right corner (NDC) | |
72 | */ | |
73 | void AddStatusPave(TH1* hist, Int_t qual, | |
74 | Double_t xl=-1, Double_t yl=-1, | |
75 | Double_t xh=-1, Double_t yh=-1) const; | |
05e5e0c1 | 76 | /** |
77 | * Check one histogram | |
78 | * | |
1306ba55 | 79 | * @param specie Event specie |
80 | * @param hist Histogram to check | |
05e5e0c1 | 81 | * |
1306ba55 | 82 | * @return 0 if all is good, increasing severity for increasingly |
83 | * bad data | |
05e5e0c1 | 84 | */ |
1306ba55 | 85 | UShort_t CheckOne(AliQAv1::ALITASK_t what, |
05e5e0c1 | 86 | AliRecoParam::EventSpecie_t specie, |
87 | TH1* hist) const; | |
1306ba55 | 88 | /** |
89 | * Check raw input. If the reconstructor is enabled, then we try to fit | |
90 | * | |
91 | * @f[ | |
92 | * f(\Delta;\Delta_p,\xi,\sigma) = \int_{-\infty}^{\infty}d\Delta_p' | |
93 | * f_{L}(\Delta;\Delta_p',\xi) \times | |
94 | * e^{\frac{(\Delta-\Delta_p')^2}{\sigma^2}} | |
95 | * @f] | |
96 | * | |
97 | * where @f$f_L@f$ is the Landau distribution, to the data. The | |
98 | * quality is set according to the value of @f$\chi^2/\nu@f$. | |
99 | * | |
100 | * If no reconstructor is set, then simply check that the histogram | |
101 | * isn't empty | |
102 | * | |
103 | * @param specie Event specie | |
104 | * @param hist Histogram to check | |
105 | * | |
106 | * @return 0 if all is good, increasing severity for increasingly | |
107 | * bad data | |
108 | */ | |
109 | UShort_t CheckRaw(AliRecoParam::EventSpecie_t specie, | |
05e5e0c1 | 110 | TH1* hist) const; |
1306ba55 | 111 | /** |
112 | * Check simulation output. Does a simple test of whether the | |
113 | * histogram is empty or not. | |
114 | * | |
115 | * @param specie Event specie | |
116 | * @param hist Histogram to check | |
117 | * | |
118 | * @return 0 if all is good, increasing severity for increasingly | |
119 | * bad data | |
120 | */ | |
121 | UShort_t CheckSim(AliRecoParam::EventSpecie_t specie, | |
05e5e0c1 | 122 | TH1* hist) const; |
1306ba55 | 123 | /** |
124 | * Check ESD. Does a simple test of whether the histogram is empty | |
125 | * or not. | |
126 | * | |
127 | * @param specie Event specie | |
128 | * @param hist Histogram to check | |
129 | * | |
130 | * @return 0 if all is good, increasing severity for increasingly | |
131 | * bad data | |
132 | */ | |
133 | UShort_t CheckESD(AliRecoParam::EventSpecie_t specie, | |
05e5e0c1 | 134 | TH1* hist) const; |
1306ba55 | 135 | /** |
136 | * Check reconstruction points. Does a simple test of whether the | |
137 | * histogram is empty or not. | |
138 | * | |
139 | * @param specie Event specie | |
140 | * @param hist Histogram to check | |
141 | * | |
142 | * @return 0 if all is good, increasing severity for increasingly | |
143 | * bad data | |
144 | */ | |
145 | UShort_t CheckRec(AliRecoParam::EventSpecie_t specie, | |
05e5e0c1 | 146 | TH1* hist) const; |
1306ba55 | 147 | /** |
148 | * Set the returned QA from this checker based on the values in the | |
149 | * array @a values. Note, this by-passes the Low/High setting of | |
150 | * the base class (which are very confusing) | |
151 | * | |
152 | * @param index Task index | |
153 | * @param values Array of values | |
154 | */ | |
155 | void SetQA(AliQAv1::ALITASK_t index, Double_t* values) const; | |
156 | /** | |
157 | * Process external parameters | |
158 | * | |
159 | */ | |
160 | void ProcessExternalParams(); | |
161 | /** | |
162 | * Process a single external parameter | |
163 | * | |
164 | * @param name Name of parameter | |
165 | * @param v On return, the value - as a double | |
166 | */ | |
167 | void ProcessExternalParam(const char* name, Double_t& v); | |
168 | /** | |
169 | * Get the thresholds from OCDB | |
170 | * | |
171 | */ | |
172 | void GetThresholds(); | |
173 | /** | |
174 | * The basic check on a histogram | |
175 | * | |
176 | * @param hist Histogram | |
177 | * | |
178 | * @return 1 empty - 0 otherwise | |
179 | */ | |
180 | UShort_t BasicCheck(TH1* hist) const; | |
181 | /** | |
182 | * Translate our internal quality measure to QA framework bit | |
183 | * | |
184 | * @param qual Internal quality | |
185 | * | |
186 | * @return QA framework quality bit | |
187 | */ | |
188 | AliQAv1::QABIT_t Quality2Bit(UShort_t qual) const; | |
189 | /** | |
190 | * Add fit results to to plot | |
191 | * | |
192 | * @param hist Histogram | |
193 | * @param res Fit result | |
194 | * @param color Color to use for the text - depends on quality | |
195 | * @param low Lower bound on fit range | |
196 | * @param high Upper bound on fit range | |
197 | */ | |
1306ba55 | 198 | UShort_t CheckFit(TH1* hist, const TFitResultPtr& res, |
199 | Double_t low, Double_t high, Int_t& color) const; | |
7adfb385 | 200 | Bool_t fDoScale; // Whether to scale all histograms |
201 | Bool_t fDidExternal; // Whether we've processed the external params | |
202 | Bool_t fShowFitResults; // Whether to put the fit result on the plots | |
203 | Double_t fELossLowCut; // Low cut on ELoss fits | |
204 | Double_t fELossNRMS; // Number of RMS to fit upward | |
205 | Double_t fELossBadChi2Nu; // Cut on bad chi2/nu | |
206 | Double_t fELossFkupChi2Nu; // Cut on F**ked up chi2/nu | |
207 | Int_t fELossMinEntries; // Least number of entries before fitting | |
e0c60e77 | 208 | Int_t fELossMaxEntries; // Maximum number of entries before clear |
1306ba55 | 209 | Double_t fELossGoodParError; // Least relative error |
550157b2 | 210 | Double_t fELossMinSharing; // Least to consider for sharing fit |
7adfb385 | 211 | Double_t fROErrorsBad; // Cut on read-out errors |
212 | Double_t fROErrorsFkup; // Cut on read-out errors | |
550157b2 | 213 | Int_t fMaxNProblem; // Maximum number of problematic fits |
214 | Int_t fMaxNBad; // Maximum number of bad fits | |
215 | Bool_t fNoFits; // If true, do not fit at all | |
f4f8d21b | 216 | private: |
1306ba55 | 217 | /** |
218 | * Copy constructor - not implemented | |
219 | * | |
220 | * @param qac Object to copy from | |
221 | */ | |
222 | AliFMDQAChecker(const AliFMDQAChecker& qac); | |
223 | /** | |
224 | * assignment operator - not implemented | |
225 | * | |
226 | * @param qac Object to assign from | |
227 | * | |
228 | * @return Reference to this object | |
229 | */ | |
230 | AliFMDQAChecker& operator=(const AliFMDQAChecker& qac); | |
f4f8d21b | 231 | |
550157b2 | 232 | ClassDef(AliFMDQAChecker,0) // Checker of FMD data quality |
c9dd1c4d | 233 | }; |
234 | ||
235 | #endif // AliFMDQAChecker_H | |
236 | // Local Variables: | |
237 | // mode: c++ | |
238 | // End: |