]>
Commit | Line | Data |
---|---|---|
075a0e70 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
16 | ||
17 | // --- ROOT system --- | |
075a0e70 | 18 | #include <TH1F.h> |
075a0e70 | 19 | #include <TIterator.h> |
fdc38bb2 | 20 | #include <TString.h> |
075a0e70 | 21 | |
22 | // --- Standard library --- | |
23 | ||
24 | // --- AliRoot header files --- | |
25 | #include "AliLog.h" | |
075a0e70 | 26 | #include "AliZDCQAChecker.h" |
27 | ||
28 | ClassImp(AliZDCQAChecker) | |
29 | ||
075a0e70 | 30 | //____________________________________________________________________________ |
ead5c87b | 31 | Double_t * AliZDCQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, |
486788fc | 32 | const AliDetectorRecoParam * /*recoParam*/) |
075a0e70 | 33 | { |
57acd2d2 | 34 | // Checks the QA histograms on the input list: |
35 | // | |
213a7d34 | 36 | Double_t * test = new Double_t[AliRecoParam::kNSpecies] ; |
37 | Int_t * ntests = new Int_t[AliRecoParam::kNSpecies] ; | |
4e25ac79 | 38 | const char* taskName = AliQAv1::GetAliTaskName(index); |
f5e4ee59 | 39 | printf("\n\tAliZDCQAChecker -> checking QA histos for task %s\n",taskName); |
57acd2d2 | 40 | // |
f5e4ee59 | 41 | for(Int_t specie = 0; specie<AliRecoParam::kNSpecies; specie++){ |
213a7d34 | 42 | test[specie] = 1.0; |
43 | ntests[specie] = 0; | |
c2bb665a | 44 | //printf("\tAliZDCQAChecker -> specie %d\n\n",specie); |
f5e4ee59 | 45 | |
46 | if(!AliQAv1::Instance()->IsEventSpecieSet(specie)) continue; | |
57acd2d2 | 47 | // ==================================================================== |
48 | // Checks for p-p events | |
49 | // ==================================================================== | |
f5e4ee59 | 50 | if(specie == AliRecoParam::kLowMult){ |
57acd2d2 | 51 | if(list[specie]->GetEntries()==0){ |
213a7d34 | 52 | AliWarning("\t The list to be checked is empty!"); // nothing to check |
57acd2d2 | 53 | return test; |
12b9729c | 54 | } |
5379c4a3 | 55 | //AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\tAliZDCQAChecker-> checking QA histograms for task %s\n\n",taskName)); |
57acd2d2 | 56 | TIter next(list[specie]); |
57 | ntests[specie] = 0; | |
58 | TH1 * hdata; | |
213a7d34 | 59 | Float_t res=0., percentageDiff=0.15; |
57acd2d2 | 60 | while((hdata = dynamic_cast<TH1 *>(next()))){ |
61 | if(hdata){ | |
62 | // ------------------------------------------------------------------- | |
4e25ac79 | 63 | if(index == AliQAv1::kSIM){ |
5379c4a3 | 64 | //AliDebug(AliQAv1::GetQADebugLevel(), Form("\tAliZDCQAChecker-> checking histo %s",hdata->GetName())); |
57acd2d2 | 65 | // Check HITS histos |
213a7d34 | 66 | Float_t sumZNA=0., sumZNC=0., sumZPA=0., sumZPC=0.; |
67 | Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.; | |
68 | Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.; | |
69 | Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; | |
70 | Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.; | |
71 | Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.; | |
72 | Int_t ihitHisto=0, idigHisto=0; | |
73 | // | |
74 | if(!(strncmp(hdata->GetName(),"hHits",5))){ | |
57acd2d2 | 75 | if(hdata->GetEntries()>0){ |
213a7d34 | 76 | if(ihitHisto==0) sumZNC = hdata->GetMean(); |
77 | else if(ihitHisto==1) sumZNA = hdata->GetMean(); | |
78 | else if(ihitHisto==2) sumZPC = hdata->GetMean(); | |
79 | else if(ihitHisto==3) sumZPA = hdata->GetMean(); | |
80 | else if(ihitHisto==4) pmQZNC = hdata->GetMean(); | |
81 | else if(ihitHisto==5) pmQZNA = hdata->GetMean(); | |
82 | else if(ihitHisto==6) pmQZPC = hdata->GetMean(); | |
83 | else if(ihitHisto==7) pmQZPA = hdata->GetMean(); | |
84 | else if(ihitHisto==8) pmCZNC = hdata->GetMean(); | |
85 | else if(ihitHisto==9) pmCZNA = hdata->GetMean(); | |
86 | else if(ihitHisto==10) pmCZPC = hdata->GetMean(); | |
87 | else if(ihitHisto==11) pmCZPA = hdata->GetMean(); | |
88 | } | |
89 | // | |
90 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
91 | if(ihitHisto==11){ | |
92 | if(sumZNC!=0){ | |
93 | if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) | |
94 | res=1.; | |
95 | else | |
96 | res=.5; | |
97 | test[specie] += res; | |
98 | ntests[specie]++; | |
99 | } | |
100 | if(sumZNA!=0){ | |
101 | if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) | |
102 | res=1.; | |
103 | else percentageDiff= | |
104 | res=.5; | |
105 | test[specie] += res; | |
106 | ntests[specie]++; | |
107 | } | |
108 | if(sumZPC!=0){ | |
109 | if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) | |
110 | res=1.; | |
111 | else | |
112 | res=.5; | |
113 | test[specie] += res; | |
114 | ntests[specie]++; | |
115 | } | |
116 | if(sumZPA!=0){ | |
117 | if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) | |
118 | res=1.; | |
119 | else | |
120 | res=.5; | |
121 | test[specie] += res; | |
122 | ntests[specie]++; | |
123 | } | |
124 | } | |
125 | ihitHisto++; | |
fdc38bb2 | 126 | } |
213a7d34 | 127 | // Check DIGIT HIGH GAIN CHAIN histos |
128 | else if(!(strncmp(hdata->GetName(),"hDig",4))){ | |
129 | if(hdata->GetEntries()>0){ | |
130 | if(idigHisto==0) sumADCZNC = hdata->GetMean(); | |
131 | else if(idigHisto==1) sumADCZNA = hdata->GetMean(); | |
132 | else if(idigHisto==2) sumADCZPC = hdata->GetMean(); | |
133 | else if(idigHisto==3) sumADCZPA = hdata->GetMean(); | |
134 | else if(idigHisto==4) pmQZNC = hdata->GetMean(); | |
135 | else if(idigHisto==5) pmQZNA = hdata->GetMean(); | |
136 | else if(idigHisto==6) pmQZPC = hdata->GetMean(); | |
137 | else if(idigHisto==7) pmQZPA = hdata->GetMean(); | |
138 | else if(idigHisto==8) pmCZNC = hdata->GetMean(); | |
139 | else if(idigHisto==9) pmCZNA = hdata->GetMean(); | |
140 | else if(idigHisto==10) pmCZPC = hdata->GetMean(); | |
141 | else if(idigHisto==11) pmCZPA = hdata->GetMean(); | |
142 | } | |
143 | // | |
144 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
145 | if(idigHisto==11){ | |
146 | if(sumADCZNC!=0){ | |
147 | if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff) | |
148 | res=1.; | |
149 | else | |
150 | res=.5; | |
151 | test[specie] += res; | |
152 | ntests[specie]++; | |
153 | } | |
154 | if(sumADCZNA!=0){ | |
155 | if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff) | |
156 | res=1.; | |
157 | else | |
158 | res=.5; | |
159 | test[specie] += res; | |
160 | ntests[specie]++; | |
161 | } | |
162 | if(sumADCZPC!=0){ | |
163 | if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff) | |
164 | res=1.; | |
165 | else | |
166 | res=.5; | |
167 | test[specie] += res; | |
168 | ntests[specie]++; | |
169 | } | |
170 | if(sumADCZPA!=0){ | |
171 | if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff) | |
172 | res=1.; | |
173 | else | |
174 | res=.5; | |
175 | test[specie] += res; | |
176 | ntests[specie]++; | |
177 | } | |
178 | } | |
179 | idigHisto++; | |
fdc38bb2 | 180 | } |
213a7d34 | 181 | } |
182 | // ------------------------------------------------------------------- | |
183 | else if(index == AliQAv1::kRAW) { | |
184 | Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; | |
185 | Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.; | |
186 | Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.; | |
187 | Int_t irawHisto=0; | |
188 | // | |
189 | // Check RAW HIGH GAIN CHAIN histos | |
190 | if(hdata->GetEntries()>0){ | |
191 | if(irawHisto==0) sumADCZNC = hdata->GetMean(); | |
192 | else if(irawHisto==1) sumADCZNA = hdata->GetMean(); | |
193 | else if(irawHisto==2) sumADCZPC = hdata->GetMean(); | |
194 | else if(irawHisto==3) sumADCZPA = hdata->GetMean(); | |
195 | else if(irawHisto==4) adcQZNC = hdata->GetMean(); | |
196 | else if(irawHisto==5) adcQZNA = hdata->GetMean(); | |
197 | else if(irawHisto==6) adcQZPC = hdata->GetMean(); | |
198 | else if(irawHisto==7) adcQZPA = hdata->GetMean(); | |
199 | else if(irawHisto==8) adcCZNC = hdata->GetMean(); | |
200 | else if(irawHisto==9) adcCZNA = hdata->GetMean(); | |
201 | else if(irawHisto==10) adcCZPC = hdata->GetMean(); | |
202 | else if(irawHisto==11) adcCZPA = hdata->GetMean(); | |
203 | } | |
204 | // | |
205 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
206 | if(irawHisto==11){ | |
207 | if(sumADCZNC!=0){ | |
208 | if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff) | |
209 | res=1.; | |
210 | else | |
211 | res=.5; | |
212 | test[specie] += res; | |
213 | ntests[specie]++; | |
214 | } | |
215 | if(sumADCZNA!=0){ | |
216 | if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff) | |
217 | res=1.; | |
218 | else | |
219 | res=.5; | |
220 | test[specie] += res; | |
221 | ntests[specie]++; | |
222 | } | |
223 | if(sumADCZPC!=0){ | |
224 | if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff) | |
225 | res=1.; | |
226 | else | |
227 | res=.5; | |
228 | test[specie] += res; | |
229 | ntests[specie]++; | |
230 | } | |
231 | if(sumADCZPA!=0){ | |
232 | if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff) | |
233 | res=1.; | |
234 | else | |
235 | res=.5; | |
236 | test[specie] += res; | |
237 | ntests[specie]++; | |
238 | } | |
239 | } | |
240 | irawHisto++; | |
241 | } | |
242 | // ------------------------------------------------------------------- | |
f5e4ee59 | 243 | else if(index == AliQAv1::kREC) { |
244 | Float_t sumZNA=0., sumZNC=0., sumZPA=0., sumZPC=0.; | |
245 | Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.; | |
246 | Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.; | |
247 | Int_t irecHisto=0; | |
248 | // | |
249 | // Check REC HIGH GAIN CHAIN histos | |
250 | if(hdata->GetEntries()>0){ | |
251 | if(irecHisto==0) sumZNC = hdata->GetMean(); | |
252 | else if(irecHisto==1) sumZNA = hdata->GetMean(); | |
253 | else if(irecHisto==2) sumZPC = hdata->GetMean(); | |
254 | else if(irecHisto==3) sumZPA = hdata->GetMean(); | |
255 | else if(irecHisto==4) pmQZNC = hdata->GetMean(); | |
256 | else if(irecHisto==5) pmQZNA = hdata->GetMean(); | |
257 | else if(irecHisto==6) pmQZPC = hdata->GetMean(); | |
258 | else if(irecHisto==7) pmQZPA = hdata->GetMean(); | |
259 | else if(irecHisto==8) pmCZNC = hdata->GetMean(); | |
260 | else if(irecHisto==9) pmCZNA = hdata->GetMean(); | |
261 | else if(irecHisto==10) pmCZPC = hdata->GetMean(); | |
262 | else if(irecHisto==11) pmCZPA = hdata->GetMean(); | |
263 | } | |
264 | // | |
265 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
266 | if(irecHisto==11){ | |
267 | if(sumZNC!=0){ | |
268 | if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) | |
269 | res=1.; | |
270 | else | |
271 | res=.5; | |
272 | test[specie] += res; | |
273 | ntests[specie]++; | |
274 | } | |
275 | if(sumZNA!=0){ | |
276 | if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) | |
277 | res=1.; | |
278 | else | |
279 | res=.5; | |
280 | test[specie] += res; | |
281 | ntests[specie]++; | |
282 | } | |
283 | if(sumZPC!=0){ | |
284 | if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) | |
285 | res=1.; | |
286 | else | |
287 | res=.5; | |
288 | test[specie] += res; | |
289 | ntests[specie]++; | |
290 | } | |
291 | if(sumZPA!=0){ | |
292 | if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) | |
293 | res=1.; | |
294 | else | |
295 | res=.5; | |
296 | test[specie] += res; | |
297 | ntests[specie]++; | |
298 | } | |
299 | } | |
300 | irecHisto++; | |
301 | } | |
302 | // ------------------------------------------------------------------- | |
213a7d34 | 303 | else if(index == AliQAv1::kESD) { |
304 | Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; | |
305 | Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.; | |
306 | Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.; | |
307 | Int_t esdInd=0; | |
308 | // | |
309 | // Check ESD HIGH GAIN CHAIN histos | |
57acd2d2 | 310 | if(hdata->GetEntries()!=0){ |
213a7d34 | 311 | if(esdInd==2) sumADCZNC = hdata->GetMean(); |
312 | else if(esdInd==3) sumADCZNA = hdata->GetMean(); | |
313 | else if(esdInd==4) sumADCZPC = hdata->GetMean(); | |
314 | else if(esdInd==5) sumADCZPA = hdata->GetMean(); | |
315 | else if(esdInd==6) pmQZNC = hdata->GetMean(); | |
316 | else if(esdInd==7) pmQZNA = hdata->GetMean(); | |
317 | else if(esdInd==8) pmQZPC = hdata->GetMean(); | |
318 | else if(esdInd==9) pmQZPA = hdata->GetMean(); | |
319 | else if(esdInd==10) pmCZNC = hdata->GetMean(); | |
320 | else if(esdInd==11) pmCZNA = hdata->GetMean(); | |
321 | else if(esdInd==12) pmCZPC = hdata->GetMean(); | |
322 | else if(esdInd==13) pmCZPA = hdata->GetMean(); | |
323 | } | |
324 | // | |
325 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
326 | if(esdInd==13){ | |
327 | if(sumADCZNC!=0){ | |
328 | if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) | |
329 | res=1.; | |
330 | else | |
331 | res=.5; | |
332 | test[specie] += res; | |
333 | ntests[specie]++; | |
334 | } | |
335 | if(sumADCZNA!=0){ | |
336 | if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) | |
337 | res=1.; | |
338 | else | |
339 | res=.5; | |
340 | test[specie] += res; | |
341 | ntests[specie]++; | |
342 | } | |
343 | if(sumADCZPC!=0){ | |
344 | if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) | |
345 | res=1.; | |
346 | else | |
347 | res=.5; | |
348 | test[specie] += res; | |
349 | ntests[specie]++; | |
350 | } | |
351 | if(sumADCZPA!=0){ | |
352 | if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) | |
353 | res=1.; | |
354 | else | |
355 | res=.5; | |
356 | test[specie] += res; | |
357 | ntests[specie]++; | |
358 | } | |
fdc38bb2 | 359 | } |
57acd2d2 | 360 | esdInd++; |
213a7d34 | 361 | } |
362 | else { | |
57acd2d2 | 363 | AliWarning(Form("\n\t No ZDC QA for %s task\n",taskName)); |
364 | return NULL; | |
365 | } | |
213a7d34 | 366 | }//if(hdata) |
367 | else AliError("AliZDCQAChecker-> No histos!!!\n"); | |
075a0e70 | 368 | } |
213a7d34 | 369 | } // LowMult (p-p) |
57acd2d2 | 370 | // ==================================================================== |
371 | // Checks for A-A events | |
372 | // ==================================================================== | |
213a7d34 | 373 | else if (specie == AliRecoParam::kHighMult) { |
57acd2d2 | 374 | if(list[specie]->GetEntries()==0){ |
213a7d34 | 375 | AliWarning("\t The list to be checked is empty!"); |
57acd2d2 | 376 | return test; |
377 | } | |
5379c4a3 | 378 | //AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\tAliZDCQAChecker-> checking QA histograms for task %s\n\n",taskName)); |
213a7d34 | 379 | // |
57acd2d2 | 380 | TIter next(list[specie]); |
213a7d34 | 381 | ntests[specie] = 0; |
57acd2d2 | 382 | TH1 * hdata; |
213a7d34 | 383 | Float_t res=0., percentageDiff=0.10; |
57acd2d2 | 384 | while((hdata = dynamic_cast<TH1 *>(next()))){ |
385 | if(hdata){ | |
5379c4a3 | 386 | //AliDebug(AliQAv1::GetQADebugLevel(), Form("\tAliZDCQAChecker-> checking histo %s",hdata->GetName())); |
57acd2d2 | 387 | // ------------------------------------------------------------------- |
4e25ac79 | 388 | if(index == AliQAv1::kSIM){ |
213a7d34 | 389 | Float_t meanZNA=0., meanZNC=0., meanZPA=0., meanZPC=0.; |
390 | Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.; | |
391 | Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.; | |
392 | Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; | |
393 | Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.; | |
394 | Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.; | |
395 | Int_t hitInd=0, digInd=0; | |
396 | // Check HITS histos | |
397 | if (!(strncmp(hdata->GetName(),"hHits",5))){ | |
398 | if(hdata->GetEntries()>0){ | |
399 | if(hitInd==0) meanZNC = hdata->GetMean(); | |
400 | else if(hitInd==1) meanZNA = hdata->GetMean(); | |
401 | else if(hitInd==2) meanZPC = hdata->GetMean(); | |
402 | else if(hitInd==3) meanZPA = hdata->GetMean(); | |
403 | else if(hitInd==4) pmQZNC = hdata->GetMean(); | |
404 | else if(hitInd==5) pmQZNA = hdata->GetMean(); | |
405 | else if(hitInd==6) pmQZPC = hdata->GetMean(); | |
406 | else if(hitInd==7) pmQZPA = hdata->GetMean(); | |
407 | else if(hitInd==8) pmCZNC = hdata->GetMean(); | |
408 | else if(hitInd==9) pmCZNA = hdata->GetMean(); | |
409 | else if(hitInd==10) pmCZPC = hdata->GetMean(); | |
410 | else if(hitInd==11) pmCZPA = hdata->GetMean(); | |
411 | } | |
412 | // | |
413 | // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff | |
414 | // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff | |
415 | if(hitInd==3){ | |
416 | if(meanZNC!=0 && meanZNA!=0){ | |
417 | if((2*TMath::Abs(meanZNC-meanZNA)/(meanZNA+meanZNC))<percentageDiff) | |
418 | res=1.; | |
419 | else | |
420 | res=.5; | |
421 | test[specie] += res; | |
422 | ntests[specie]++; | |
423 | } | |
424 | if(meanZPC!=0 && meanZPA!=0){ | |
425 | if((TMath::Abs(meanZPC-meanZPA)/(meanZPA+meanZPC))<percentageDiff) | |
426 | res=1.; | |
427 | else | |
428 | res=.5; | |
429 | test[specie] += res; | |
430 | ntests[specie]++; | |
431 | } | |
57acd2d2 | 432 | } |
213a7d34 | 433 | // --- Check whether (mean PMQi - PMC)/PMC < percentageDiff |
434 | if(hitInd==11){ | |
435 | if(meanZNC!=0){ | |
436 | if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) | |
57acd2d2 | 437 | res=1.; |
438 | else | |
213a7d34 | 439 | res=.5; |
57acd2d2 | 440 | test[specie] += res; |
441 | ntests[specie]++; | |
213a7d34 | 442 | } |
443 | if(meanZNA!=0){ | |
444 | if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) | |
57acd2d2 | 445 | res=1.; |
446 | else | |
213a7d34 | 447 | res=.5; |
57acd2d2 | 448 | test[specie] += res; |
449 | ntests[specie]++; | |
213a7d34 | 450 | } |
451 | if(meanZPC!=0){ | |
452 | if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) | |
57acd2d2 | 453 | res=1.; |
454 | else | |
213a7d34 | 455 | res=.5; |
57acd2d2 | 456 | test[specie] += res; |
457 | ntests[specie]++; | |
213a7d34 | 458 | } |
459 | if(meanZPA!=0){ | |
460 | if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) | |
57acd2d2 | 461 | res=1.; |
462 | else | |
213a7d34 | 463 | res=.5; |
57acd2d2 | 464 | test[specie] += res; |
465 | ntests[specie]++; | |
213a7d34 | 466 | } |
467 | } | |
468 | hitInd++; | |
fdc38bb2 | 469 | } |
213a7d34 | 470 | // Check DIGITS histos |
471 | else if (!(strncmp(hdata->GetName(),"hDig",4))){ | |
472 | if(hdata->GetEntries()>0){ | |
473 | if(digInd==0) sumADCZNC = hdata->GetMean(); | |
474 | else if(digInd==1) sumADCZNA = hdata->GetMean(); | |
475 | else if(digInd==2) sumADCZPC = hdata->GetMean(); | |
476 | else if(digInd==3) sumADCZPA = hdata->GetMean(); | |
477 | else if(digInd==4) adcQZNC = hdata->GetMean(); | |
478 | else if(digInd==5) adcQZNA = hdata->GetMean(); | |
479 | else if(digInd==6) adcQZPC = hdata->GetMean(); | |
480 | else if(digInd==7) adcQZPA = hdata->GetMean(); | |
481 | else if(digInd==8) adcCZNC = hdata->GetMean(); | |
482 | else if(digInd==9) adcCZNA = hdata->GetMean(); | |
483 | else if(digInd==10) adcCZPC = hdata->GetMean(); | |
484 | else if(digInd==11) adcCZPA = hdata->GetMean(); | |
485 | } | |
486 | // | |
487 | // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff | |
488 | // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff | |
489 | if(digInd==3){ | |
490 | if(sumADCZNC!=0 && sumADCZNA!=0){ | |
491 | if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff) | |
57acd2d2 | 492 | res=1.; |
493 | else | |
494 | res=.5; | |
495 | test[specie] += res; | |
496 | ntests[specie]++; | |
213a7d34 | 497 | } |
498 | if(sumADCZPC!=0 && sumADCZPA!=0){ | |
499 | if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff) | |
57acd2d2 | 500 | res=1.; |
501 | else | |
502 | res=.5; | |
503 | test[specie] += res; | |
504 | ntests[specie]++; | |
213a7d34 | 505 | } |
57acd2d2 | 506 | } |
213a7d34 | 507 | // --- Check whether (sumADC PMQi - PMC)/PMC < percentageDiff |
508 | if(digInd==11){ | |
509 | if(sumADCZNC!=0){ | |
510 | if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff) | |
57acd2d2 | 511 | res=1.; |
512 | else | |
213a7d34 | 513 | res=.5; |
57acd2d2 | 514 | test[specie] += res; |
515 | ntests[specie]++; | |
213a7d34 | 516 | } |
517 | if(sumADCZNA!=0){ | |
518 | if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff) | |
57acd2d2 | 519 | res=1.; |
520 | else | |
213a7d34 | 521 | res=.5; |
57acd2d2 | 522 | test[specie] += res; |
523 | ntests[specie]++; | |
213a7d34 | 524 | } |
525 | if(sumADCZPC!=0){ | |
526 | if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff) | |
57acd2d2 | 527 | res=1.; |
528 | else | |
213a7d34 | 529 | res=.5; |
57acd2d2 | 530 | test[specie] += res; |
531 | ntests[specie]++; | |
213a7d34 | 532 | } |
533 | if(sumADCZPA!=0){ | |
534 | if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff) | |
57acd2d2 | 535 | res=1.; |
536 | else | |
213a7d34 | 537 | res=.5; |
57acd2d2 | 538 | test[specie] += res; |
539 | ntests[specie]++; | |
213a7d34 | 540 | } |
541 | } | |
542 | digInd++; | |
fdc38bb2 | 543 | } |
544 | } | |
213a7d34 | 545 | // ------------------------------------------------------------------- |
546 | else if(index == AliQAv1::kRAW){ | |
547 | Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; | |
548 | Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.; | |
549 | Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.; | |
550 | Int_t rawInd=0; | |
551 | // | |
552 | // Check RAW HIGH GAIN CHAIN histos | |
553 | if(hdata->GetEntries()>0){ | |
554 | if(rawInd==0) sumADCZNC = hdata->GetMean(); | |
555 | else if(rawInd==1) sumADCZNA = hdata->GetMean(); | |
556 | else if(rawInd==2) sumADCZPC = hdata->GetMean(); | |
557 | else if(rawInd==3) sumADCZPA = hdata->GetMean(); | |
558 | else if(rawInd==4) adcQZNC = hdata->GetMean(); | |
559 | else if(rawInd==5) adcQZNA = hdata->GetMean(); | |
560 | else if(rawInd==6) adcQZPC = hdata->GetMean(); | |
561 | else if(rawInd==7) adcQZPA = hdata->GetMean(); | |
562 | else if(rawInd==8) adcCZNC = hdata->GetMean(); | |
563 | else if(rawInd==9) adcCZNA = hdata->GetMean(); | |
564 | else if(rawInd==10) adcCZPC = hdata->GetMean(); | |
565 | else if(rawInd==11) adcCZPA = hdata->GetMean(); | |
566 | } | |
567 | // | |
568 | // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff | |
569 | // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff | |
570 | if(rawInd==3){ | |
571 | if(sumADCZNC!=0 && sumADCZNA!=0){ | |
572 | if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff) | |
573 | res=1.; | |
574 | else | |
575 | res=.5; | |
576 | test[specie] += res; | |
577 | ntests[specie]++; | |
578 | } | |
579 | if(sumADCZPC!=0 && sumADCZPA!=0){ | |
580 | if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff) | |
581 | res=1.; | |
582 | else | |
583 | res=.5; | |
584 | test[specie] += res; | |
585 | ntests[specie]++; | |
586 | } | |
587 | } | |
588 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
589 | if(rawInd==11){ | |
590 | if(sumADCZNC!=0){ | |
591 | if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff) | |
592 | res=1.; | |
593 | else | |
594 | res=.5; | |
595 | test[specie] += res; | |
596 | ntests[specie]++; | |
597 | } | |
598 | if(sumADCZNA!=0){ | |
599 | if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff) | |
600 | res=1.; | |
601 | else | |
602 | res=.5; | |
603 | test[specie] += res; | |
604 | ntests[specie]++; | |
605 | } | |
606 | if(sumADCZPC!=0){ | |
607 | if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff) | |
608 | res=1.; | |
609 | else | |
610 | res=.5; | |
611 | test[specie] += res; | |
612 | ntests[specie]++; | |
613 | } | |
614 | if(sumADCZPA!=0){ | |
615 | if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff) | |
616 | res=1.; | |
617 | else | |
618 | res=.5; | |
619 | test[specie] += res; | |
620 | ntests[specie]++; | |
621 | } | |
622 | } | |
623 | rawInd++; | |
624 | } | |
625 | // ------------------------------------------------------------------- | |
f5e4ee59 | 626 | else if(index == AliQAv1::kREC){ |
627 | Float_t sumZNA=0., sumZNC=0., sumZPA=0., sumZPC=0.; | |
628 | Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.; | |
629 | Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.; | |
630 | Int_t recInd=0; | |
631 | // | |
632 | // Check RAW HIGH GAIN CHAIN histos | |
633 | if(hdata->GetEntries()>0){ | |
634 | if(recInd==0) sumZNC = hdata->GetMean(); | |
635 | else if(recInd==1) sumZNA = hdata->GetMean(); | |
636 | else if(recInd==2) sumZPC = hdata->GetMean(); | |
637 | else if(recInd==3) sumZPA = hdata->GetMean(); | |
638 | else if(recInd==4) pmQZNC = hdata->GetMean(); | |
639 | else if(recInd==5) pmQZNA = hdata->GetMean(); | |
640 | else if(recInd==6) pmQZPC = hdata->GetMean(); | |
641 | else if(recInd==7) pmQZPA = hdata->GetMean(); | |
642 | else if(recInd==8) pmCZNC = hdata->GetMean(); | |
643 | else if(recInd==9) pmCZNA = hdata->GetMean(); | |
644 | else if(recInd==10) pmCZPC = hdata->GetMean(); | |
645 | else if(recInd==11) pmCZPA = hdata->GetMean(); | |
646 | } | |
647 | // | |
648 | // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff | |
649 | // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff | |
650 | if(recInd==3){ | |
651 | if(sumZNC!=0 && sumZNA!=0){ | |
652 | if((2*TMath::Abs(sumZNC-sumZNA)/(sumZNA+sumZNC))<percentageDiff) | |
653 | res=1.; | |
654 | else | |
655 | res=.5; | |
656 | test[specie] += res; | |
657 | ntests[specie]++; | |
658 | } | |
659 | if(sumZPC!=0 && sumZPA!=0){ | |
660 | if((TMath::Abs(sumZPC-sumZPA)/(sumZPA+sumZPC))<percentageDiff) | |
661 | res=1.; | |
662 | else | |
663 | res=.5; | |
664 | test[specie] += res; | |
665 | ntests[specie]++; | |
666 | } | |
667 | } | |
668 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
669 | if(recInd==11){ | |
670 | if(sumZNC!=0){ | |
671 | if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) | |
672 | res=1.; | |
673 | else | |
674 | res=.5; | |
675 | test[specie] += res; | |
676 | ntests[specie]++; | |
677 | } | |
678 | if(sumZNA!=0){ | |
679 | if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) | |
680 | res=1.; | |
681 | else | |
682 | res=.5; | |
683 | test[specie] += res; | |
684 | ntests[specie]++; | |
685 | } | |
686 | if(sumZPC!=0){ | |
687 | if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) | |
688 | res=1.; | |
689 | else | |
690 | res=.5; | |
691 | test[specie] += res; | |
692 | ntests[specie]++; | |
693 | } | |
694 | if(sumZPA!=0){ | |
695 | if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) | |
696 | res=1.; | |
697 | else | |
698 | res=.5; | |
699 | test[specie] += res; | |
700 | ntests[specie]++; | |
701 | } | |
702 | } | |
703 | recInd++; | |
704 | } | |
705 | // ------------------------------------------------------------------- | |
213a7d34 | 706 | else if(index == AliQAv1::kESD){ |
707 | Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; | |
708 | Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.; | |
709 | Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.; | |
710 | Int_t esdInd=0; | |
711 | // | |
712 | // Check ESD HIGH GAIN CHAIN histos | |
713 | if(hdata->GetEntries()!=0){ | |
714 | if(esdInd==2) sumADCZNC = hdata->GetMean(); | |
715 | else if(esdInd==3) sumADCZNA = hdata->GetMean(); | |
716 | else if(esdInd==4) sumADCZPC = hdata->GetMean(); | |
717 | else if(esdInd==5) sumADCZPA = hdata->GetMean(); | |
718 | else if(esdInd==6) pmQZNC = hdata->GetMean(); | |
719 | else if(esdInd==7) pmQZNA = hdata->GetMean(); | |
720 | else if(esdInd==8) pmQZPC = hdata->GetMean(); | |
721 | else if(esdInd==9) pmQZPA = hdata->GetMean(); | |
722 | else if(esdInd==10) pmCZNC = hdata->GetMean(); | |
723 | else if(esdInd==11) pmCZNA = hdata->GetMean(); | |
724 | else if(esdInd==12) pmCZPC = hdata->GetMean(); | |
725 | else if(esdInd==13) pmCZPA = hdata->GetMean(); | |
726 | } | |
727 | // | |
728 | // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff | |
729 | // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff | |
730 | if(esdInd==5){ | |
731 | if(sumADCZNC!=0 && sumADCZNA!=0){ | |
732 | if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff) | |
733 | res=1.; | |
734 | else | |
735 | res=.5; | |
736 | test[specie] += res; | |
737 | ntests[specie]++; | |
738 | } | |
739 | if(sumADCZPC!=0 && sumADCZPA!=0){ | |
740 | if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff) | |
741 | res=1.; | |
742 | else | |
743 | res=.5; | |
744 | test[specie] += res; | |
745 | ntests[specie]++; | |
746 | } | |
747 | } | |
748 | // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff | |
749 | if(esdInd==13){ | |
750 | if(sumADCZNC!=0){ | |
751 | if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff) | |
752 | res=1.; | |
753 | else | |
754 | res=.5; | |
755 | test[specie] += res; | |
756 | ntests[specie]++; | |
757 | } | |
758 | if(sumADCZNA!=0){ | |
759 | if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff) | |
760 | res=1.; | |
761 | else | |
762 | res=.5; | |
763 | test[specie] += res; | |
764 | ntests[specie]++; | |
765 | } | |
766 | if(sumADCZPC!=0){ | |
767 | if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff) | |
768 | res=1.; | |
769 | else | |
770 | res=.5; | |
771 | test[specie] += res; | |
772 | ntests[specie]++; | |
773 | } | |
774 | if(sumADCZPA!=0){ | |
775 | if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff) | |
776 | res=1.; | |
777 | else | |
778 | res=.5; | |
779 | test[specie] += res; | |
780 | ntests[specie]++; | |
781 | } | |
782 | } | |
783 | esdInd++; | |
784 | } | |
785 | else { | |
786 | AliWarning(Form("\n\t No ZDC QA for %s task\n",taskName)); | |
787 | return NULL; | |
788 | } | |
789 | }//if(hdata) | |
790 | else AliError("\t No histos found for ZDC!!!\n"); | |
791 | } | |
792 | } // HighMult (Pb-Pb) | |
f5e4ee59 | 793 | // ==================================================================== |
794 | // Checks for Calibration events | |
795 | // ==================================================================== | |
796 | else if (specie == AliRecoParam::kCalib) { | |
797 | AliWarning(Form("\n\t No check implemented in ZDC QA for %s task\n",taskName)); | |
798 | return test; | |
799 | } // Calibration | |
800 | // ==================================================================== | |
801 | // Checks for cosmic events | |
802 | // ==================================================================== | |
803 | else if (specie == AliRecoParam::kCosmic) { | |
804 | AliWarning(Form("\n\t No check implemented in ZDC QA for %s task\n",taskName)); | |
805 | return test; | |
806 | } // Cosmic | |
213a7d34 | 807 | } // Loop on species |
57acd2d2 | 808 | |
809 | for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) { | |
810 | if(ntests[specie]!=0) test[specie] = test[specie]/ntests[specie]; | |
213a7d34 | 811 | AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\t ZDC QA check result = %1.2f\n",test[specie])); |
fdc38bb2 | 812 | } |
57acd2d2 | 813 | delete [] ntests ; |
814 | return test; | |
075a0e70 | 815 | } |
57acd2d2 | 816 |