]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ZDC/AliZDCQAChecker.cxx
Added two missing includes to allow macro compilation (thanks to Laurent for remarkin...
[u/mrichter/AliRoot.git] / ZDC / AliZDCQAChecker.cxx
CommitLineData
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
28ClassImp(AliZDCQAChecker)
29
075a0e70 30//____________________________________________________________________________
4e25ac79 31Double_t * AliZDCQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list)
075a0e70 32{
57acd2d2 33 // Checks the QA histograms on the input list:
34 //
213a7d34 35 Double_t * test = new Double_t[AliRecoParam::kNSpecies] ;
36 Int_t * ntests = new Int_t[AliRecoParam::kNSpecies] ;
4e25ac79 37 const char* taskName = AliQAv1::GetAliTaskName(index);
57acd2d2 38 //
213a7d34 39 for(Int_t specie = 0; specie < AliRecoParam::kNSpecies; specie++) {
40 test[specie] = 1.0;
41 ntests[specie] = 0;
42 if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) continue ;
57acd2d2 43 // ====================================================================
44 // Checks for p-p events
45 // ====================================================================
213a7d34 46 if (specie == AliRecoParam::kLowMult) {
57acd2d2 47 if(list[specie]->GetEntries()==0){
213a7d34 48 AliWarning("\t The list to be checked is empty!"); // nothing to check
57acd2d2 49 return test;
12b9729c 50 }
5379c4a3 51 //AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\tAliZDCQAChecker-> checking QA histograms for task %s\n\n",taskName));
57acd2d2 52 TIter next(list[specie]);
53 ntests[specie] = 0;
54 TH1 * hdata;
213a7d34 55 Float_t res=0., percentageDiff=0.15;
57acd2d2 56 while((hdata = dynamic_cast<TH1 *>(next()))){
57 if(hdata){
58 // -------------------------------------------------------------------
4e25ac79 59 if(index == AliQAv1::kSIM){
5379c4a3 60 //AliDebug(AliQAv1::GetQADebugLevel(), Form("\tAliZDCQAChecker-> checking histo %s",hdata->GetName()));
57acd2d2 61 // Check HITS histos
213a7d34 62 Float_t sumZNA=0., sumZNC=0., sumZPA=0., sumZPC=0.;
63 Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.;
64 Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.;
65 Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
66 Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
67 Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
68 Int_t ihitHisto=0, idigHisto=0;
69 //
70 if(!(strncmp(hdata->GetName(),"hHits",5))){
57acd2d2 71 if(hdata->GetEntries()>0){
213a7d34 72 if(ihitHisto==0) sumZNC = hdata->GetMean();
73 else if(ihitHisto==1) sumZNA = hdata->GetMean();
74 else if(ihitHisto==2) sumZPC = hdata->GetMean();
75 else if(ihitHisto==3) sumZPA = hdata->GetMean();
76 else if(ihitHisto==4) pmQZNC = hdata->GetMean();
77 else if(ihitHisto==5) pmQZNA = hdata->GetMean();
78 else if(ihitHisto==6) pmQZPC = hdata->GetMean();
79 else if(ihitHisto==7) pmQZPA = hdata->GetMean();
80 else if(ihitHisto==8) pmCZNC = hdata->GetMean();
81 else if(ihitHisto==9) pmCZNA = hdata->GetMean();
82 else if(ihitHisto==10) pmCZPC = hdata->GetMean();
83 else if(ihitHisto==11) pmCZPA = hdata->GetMean();
84 }
85 //
86 // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
87 if(ihitHisto==11){
88 if(sumZNC!=0){
89 if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff)
90 res=1.;
91 else
92 res=.5;
93 test[specie] += res;
94 ntests[specie]++;
95 }
96 if(sumZNA!=0){
97 if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff)
98 res=1.;
99 else percentageDiff=
100 res=.5;
101 test[specie] += res;
102 ntests[specie]++;
103 }
104 if(sumZPC!=0){
105 if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff)
106 res=1.;
107 else
108 res=.5;
109 test[specie] += res;
110 ntests[specie]++;
111 }
112 if(sumZPA!=0){
113 if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff)
114 res=1.;
115 else
116 res=.5;
117 test[specie] += res;
118 ntests[specie]++;
119 }
120 }
121 ihitHisto++;
fdc38bb2 122 }
213a7d34 123 // Check DIGIT HIGH GAIN CHAIN histos
124 else if(!(strncmp(hdata->GetName(),"hDig",4))){
125 if(hdata->GetEntries()>0){
126 if(idigHisto==0) sumADCZNC = hdata->GetMean();
127 else if(idigHisto==1) sumADCZNA = hdata->GetMean();
128 else if(idigHisto==2) sumADCZPC = hdata->GetMean();
129 else if(idigHisto==3) sumADCZPA = hdata->GetMean();
130 else if(idigHisto==4) pmQZNC = hdata->GetMean();
131 else if(idigHisto==5) pmQZNA = hdata->GetMean();
132 else if(idigHisto==6) pmQZPC = hdata->GetMean();
133 else if(idigHisto==7) pmQZPA = hdata->GetMean();
134 else if(idigHisto==8) pmCZNC = hdata->GetMean();
135 else if(idigHisto==9) pmCZNA = hdata->GetMean();
136 else if(idigHisto==10) pmCZPC = hdata->GetMean();
137 else if(idigHisto==11) pmCZPA = hdata->GetMean();
138 }
139 //
140 // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
141 if(idigHisto==11){
142 if(sumADCZNC!=0){
143 if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff)
144 res=1.;
145 else
146 res=.5;
147 test[specie] += res;
148 ntests[specie]++;
149 }
150 if(sumADCZNA!=0){
151 if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff)
152 res=1.;
153 else
154 res=.5;
155 test[specie] += res;
156 ntests[specie]++;
157 }
158 if(sumADCZPC!=0){
159 if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff)
160 res=1.;
161 else
162 res=.5;
163 test[specie] += res;
164 ntests[specie]++;
165 }
166 if(sumADCZPA!=0){
167 if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff)
168 res=1.;
169 else
170 res=.5;
171 test[specie] += res;
172 ntests[specie]++;
173 }
174 }
175 idigHisto++;
fdc38bb2 176 }
213a7d34 177 }
178 // -------------------------------------------------------------------
179 else if(index == AliQAv1::kRAW) {
180 Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
181 Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
182 Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
183 Int_t irawHisto=0;
184 //
185 // Check RAW HIGH GAIN CHAIN histos
186 if(hdata->GetEntries()>0){
187 if(irawHisto==0) sumADCZNC = hdata->GetMean();
188 else if(irawHisto==1) sumADCZNA = hdata->GetMean();
189 else if(irawHisto==2) sumADCZPC = hdata->GetMean();
190 else if(irawHisto==3) sumADCZPA = hdata->GetMean();
191 else if(irawHisto==4) adcQZNC = hdata->GetMean();
192 else if(irawHisto==5) adcQZNA = hdata->GetMean();
193 else if(irawHisto==6) adcQZPC = hdata->GetMean();
194 else if(irawHisto==7) adcQZPA = hdata->GetMean();
195 else if(irawHisto==8) adcCZNC = hdata->GetMean();
196 else if(irawHisto==9) adcCZNA = hdata->GetMean();
197 else if(irawHisto==10) adcCZPC = hdata->GetMean();
198 else if(irawHisto==11) adcCZPA = hdata->GetMean();
199 }
200 //
201 // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
202 if(irawHisto==11){
203 if(sumADCZNC!=0){
204 if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff)
205 res=1.;
206 else
207 res=.5;
208 test[specie] += res;
209 ntests[specie]++;
210 }
211 if(sumADCZNA!=0){
212 if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff)
213 res=1.;
214 else
215 res=.5;
216 test[specie] += res;
217 ntests[specie]++;
218 }
219 if(sumADCZPC!=0){
220 if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff)
221 res=1.;
222 else
223 res=.5;
224 test[specie] += res;
225 ntests[specie]++;
226 }
227 if(sumADCZPA!=0){
228 if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff)
229 res=1.;
230 else
231 res=.5;
232 test[specie] += res;
233 ntests[specie]++;
234 }
235 }
236 irawHisto++;
237 }
238 // -------------------------------------------------------------------
239 else if(index == AliQAv1::kESD) {
240 Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
241 Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.;
242 Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.;
243 Int_t esdInd=0;
244 //
245 // Check ESD HIGH GAIN CHAIN histos
57acd2d2 246 if(hdata->GetEntries()!=0){
213a7d34 247 if(esdInd==2) sumADCZNC = hdata->GetMean();
248 else if(esdInd==3) sumADCZNA = hdata->GetMean();
249 else if(esdInd==4) sumADCZPC = hdata->GetMean();
250 else if(esdInd==5) sumADCZPA = hdata->GetMean();
251 else if(esdInd==6) pmQZNC = hdata->GetMean();
252 else if(esdInd==7) pmQZNA = hdata->GetMean();
253 else if(esdInd==8) pmQZPC = hdata->GetMean();
254 else if(esdInd==9) pmQZPA = hdata->GetMean();
255 else if(esdInd==10) pmCZNC = hdata->GetMean();
256 else if(esdInd==11) pmCZNA = hdata->GetMean();
257 else if(esdInd==12) pmCZPC = hdata->GetMean();
258 else if(esdInd==13) pmCZPA = hdata->GetMean();
259 }
260 //
261 // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
262 if(esdInd==13){
263 if(sumADCZNC!=0){
264 if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff)
265 res=1.;
266 else
267 res=.5;
268 test[specie] += res;
269 ntests[specie]++;
270 }
271 if(sumADCZNA!=0){
272 if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff)
273 res=1.;
274 else
275 res=.5;
276 test[specie] += res;
277 ntests[specie]++;
278 }
279 if(sumADCZPC!=0){
280 if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff)
281 res=1.;
282 else
283 res=.5;
284 test[specie] += res;
285 ntests[specie]++;
286 }
287 if(sumADCZPA!=0){
288 if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff)
289 res=1.;
290 else
291 res=.5;
292 test[specie] += res;
293 ntests[specie]++;
294 }
fdc38bb2 295 }
57acd2d2 296 esdInd++;
213a7d34 297 }
298 else {
57acd2d2 299 AliWarning(Form("\n\t No ZDC QA for %s task\n",taskName));
300 return NULL;
301 }
213a7d34 302 }//if(hdata)
303 else AliError("AliZDCQAChecker-> No histos!!!\n");
075a0e70 304 }
213a7d34 305 } // LowMult (p-p)
57acd2d2 306 // ====================================================================
307 // Checks for A-A events
308 // ====================================================================
213a7d34 309 else if (specie == AliRecoParam::kHighMult) {
57acd2d2 310 if(list[specie]->GetEntries()==0){
213a7d34 311 AliWarning("\t The list to be checked is empty!");
57acd2d2 312 return test;
313 }
5379c4a3 314 //AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\tAliZDCQAChecker-> checking QA histograms for task %s\n\n",taskName));
213a7d34 315 //
57acd2d2 316 TIter next(list[specie]);
213a7d34 317 ntests[specie] = 0;
57acd2d2 318 TH1 * hdata;
213a7d34 319 Float_t res=0., percentageDiff=0.10;
57acd2d2 320 while((hdata = dynamic_cast<TH1 *>(next()))){
321 if(hdata){
5379c4a3 322 //AliDebug(AliQAv1::GetQADebugLevel(), Form("\tAliZDCQAChecker-> checking histo %s",hdata->GetName()));
57acd2d2 323 // -------------------------------------------------------------------
4e25ac79 324 if(index == AliQAv1::kSIM){
213a7d34 325 Float_t meanZNA=0., meanZNC=0., meanZPA=0., meanZPC=0.;
326 Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.;
327 Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.;
328 Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
329 Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
330 Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
331 Int_t hitInd=0, digInd=0;
332 // Check HITS histos
333 if (!(strncmp(hdata->GetName(),"hHits",5))){
334 if(hdata->GetEntries()>0){
335 if(hitInd==0) meanZNC = hdata->GetMean();
336 else if(hitInd==1) meanZNA = hdata->GetMean();
337 else if(hitInd==2) meanZPC = hdata->GetMean();
338 else if(hitInd==3) meanZPA = hdata->GetMean();
339 else if(hitInd==4) pmQZNC = hdata->GetMean();
340 else if(hitInd==5) pmQZNA = hdata->GetMean();
341 else if(hitInd==6) pmQZPC = hdata->GetMean();
342 else if(hitInd==7) pmQZPA = hdata->GetMean();
343 else if(hitInd==8) pmCZNC = hdata->GetMean();
344 else if(hitInd==9) pmCZNA = hdata->GetMean();
345 else if(hitInd==10) pmCZPC = hdata->GetMean();
346 else if(hitInd==11) pmCZPA = hdata->GetMean();
347 }
348 //
349 // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
350 // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
351 if(hitInd==3){
352 if(meanZNC!=0 && meanZNA!=0){
353 if((2*TMath::Abs(meanZNC-meanZNA)/(meanZNA+meanZNC))<percentageDiff)
354 res=1.;
355 else
356 res=.5;
357 test[specie] += res;
358 ntests[specie]++;
359 }
360 if(meanZPC!=0 && meanZPA!=0){
361 if((TMath::Abs(meanZPC-meanZPA)/(meanZPA+meanZPC))<percentageDiff)
362 res=1.;
363 else
364 res=.5;
365 test[specie] += res;
366 ntests[specie]++;
367 }
57acd2d2 368 }
213a7d34 369 // --- Check whether (mean PMQi - PMC)/PMC < percentageDiff
370 if(hitInd==11){
371 if(meanZNC!=0){
372 if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff)
57acd2d2 373 res=1.;
374 else
213a7d34 375 res=.5;
57acd2d2 376 test[specie] += res;
377 ntests[specie]++;
213a7d34 378 }
379 if(meanZNA!=0){
380 if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff)
57acd2d2 381 res=1.;
382 else
213a7d34 383 res=.5;
57acd2d2 384 test[specie] += res;
385 ntests[specie]++;
213a7d34 386 }
387 if(meanZPC!=0){
388 if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff)
57acd2d2 389 res=1.;
390 else
213a7d34 391 res=.5;
57acd2d2 392 test[specie] += res;
393 ntests[specie]++;
213a7d34 394 }
395 if(meanZPA!=0){
396 if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff)
57acd2d2 397 res=1.;
398 else
213a7d34 399 res=.5;
57acd2d2 400 test[specie] += res;
401 ntests[specie]++;
213a7d34 402 }
403 }
404 hitInd++;
fdc38bb2 405 }
213a7d34 406 // Check DIGITS histos
407 else if (!(strncmp(hdata->GetName(),"hDig",4))){
408 if(hdata->GetEntries()>0){
409 if(digInd==0) sumADCZNC = hdata->GetMean();
410 else if(digInd==1) sumADCZNA = hdata->GetMean();
411 else if(digInd==2) sumADCZPC = hdata->GetMean();
412 else if(digInd==3) sumADCZPA = hdata->GetMean();
413 else if(digInd==4) adcQZNC = hdata->GetMean();
414 else if(digInd==5) adcQZNA = hdata->GetMean();
415 else if(digInd==6) adcQZPC = hdata->GetMean();
416 else if(digInd==7) adcQZPA = hdata->GetMean();
417 else if(digInd==8) adcCZNC = hdata->GetMean();
418 else if(digInd==9) adcCZNA = hdata->GetMean();
419 else if(digInd==10) adcCZPC = hdata->GetMean();
420 else if(digInd==11) adcCZPA = hdata->GetMean();
421 }
422 //
423 // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
424 // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
425 if(digInd==3){
426 if(sumADCZNC!=0 && sumADCZNA!=0){
427 if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff)
57acd2d2 428 res=1.;
429 else
430 res=.5;
431 test[specie] += res;
432 ntests[specie]++;
213a7d34 433 }
434 if(sumADCZPC!=0 && sumADCZPA!=0){
435 if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff)
57acd2d2 436 res=1.;
437 else
438 res=.5;
439 test[specie] += res;
440 ntests[specie]++;
213a7d34 441 }
57acd2d2 442 }
213a7d34 443 // --- Check whether (sumADC PMQi - PMC)/PMC < percentageDiff
444 if(digInd==11){
445 if(sumADCZNC!=0){
446 if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff)
57acd2d2 447 res=1.;
448 else
213a7d34 449 res=.5;
57acd2d2 450 test[specie] += res;
451 ntests[specie]++;
213a7d34 452 }
453 if(sumADCZNA!=0){
454 if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff)
57acd2d2 455 res=1.;
456 else
213a7d34 457 res=.5;
57acd2d2 458 test[specie] += res;
459 ntests[specie]++;
213a7d34 460 }
461 if(sumADCZPC!=0){
462 if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff)
57acd2d2 463 res=1.;
464 else
213a7d34 465 res=.5;
57acd2d2 466 test[specie] += res;
467 ntests[specie]++;
213a7d34 468 }
469 if(sumADCZPA!=0){
470 if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff)
57acd2d2 471 res=1.;
472 else
213a7d34 473 res=.5;
57acd2d2 474 test[specie] += res;
475 ntests[specie]++;
213a7d34 476 }
477 }
478 digInd++;
fdc38bb2 479 }
480 }
213a7d34 481 // -------------------------------------------------------------------
482 else if(index == AliQAv1::kRAW){
483 Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
484 Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.;
485 Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.;
486 Int_t rawInd=0;
487 //
488 // Check RAW HIGH GAIN CHAIN histos
489 if(hdata->GetEntries()>0){
490 if(rawInd==0) sumADCZNC = hdata->GetMean();
491 else if(rawInd==1) sumADCZNA = hdata->GetMean();
492 else if(rawInd==2) sumADCZPC = hdata->GetMean();
493 else if(rawInd==3) sumADCZPA = hdata->GetMean();
494 else if(rawInd==4) adcQZNC = hdata->GetMean();
495 else if(rawInd==5) adcQZNA = hdata->GetMean();
496 else if(rawInd==6) adcQZPC = hdata->GetMean();
497 else if(rawInd==7) adcQZPA = hdata->GetMean();
498 else if(rawInd==8) adcCZNC = hdata->GetMean();
499 else if(rawInd==9) adcCZNA = hdata->GetMean();
500 else if(rawInd==10) adcCZPC = hdata->GetMean();
501 else if(rawInd==11) adcCZPA = hdata->GetMean();
502 }
503 //
504 // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
505 // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
506 if(rawInd==3){
507 if(sumADCZNC!=0 && sumADCZNA!=0){
508 if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff)
509 res=1.;
510 else
511 res=.5;
512 test[specie] += res;
513 ntests[specie]++;
514 }
515 if(sumADCZPC!=0 && sumADCZPA!=0){
516 if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff)
517 res=1.;
518 else
519 res=.5;
520 test[specie] += res;
521 ntests[specie]++;
522 }
523 }
524 // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
525 if(rawInd==11){
526 if(sumADCZNC!=0){
527 if((TMath::Abs(adcQZNC-adcCZNC)/adcCZNC)<percentageDiff)
528 res=1.;
529 else
530 res=.5;
531 test[specie] += res;
532 ntests[specie]++;
533 }
534 if(sumADCZNA!=0){
535 if((TMath::Abs(adcQZNA-adcCZNA)/adcCZNA)<percentageDiff)
536 res=1.;
537 else
538 res=.5;
539 test[specie] += res;
540 ntests[specie]++;
541 }
542 if(sumADCZPC!=0){
543 if((TMath::Abs(adcQZPC-adcCZPC)/adcCZPC)<percentageDiff)
544 res=1.;
545 else
546 res=.5;
547 test[specie] += res;
548 ntests[specie]++;
549 }
550 if(sumADCZPA!=0){
551 if((TMath::Abs(adcQZPA-adcCZPA)/adcCZPA)<percentageDiff)
552 res=1.;
553 else
554 res=.5;
555 test[specie] += res;
556 ntests[specie]++;
557 }
558 }
559 rawInd++;
560 }
561 // -------------------------------------------------------------------
562 else if(index == AliQAv1::kESD){
563 Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.;
564 Float_t pmCZNA=0., pmCZNC=0., pmCZPA=0., pmCZPC=0.;
565 Float_t pmQZNA=0., pmQZNC=0., pmQZPA=0., pmQZPC=0.;
566 Int_t esdInd=0;
567 //
568 // Check ESD HIGH GAIN CHAIN histos
569 if(hdata->GetEntries()!=0){
570 if(esdInd==2) sumADCZNC = hdata->GetMean();
571 else if(esdInd==3) sumADCZNA = hdata->GetMean();
572 else if(esdInd==4) sumADCZPC = hdata->GetMean();
573 else if(esdInd==5) sumADCZPA = hdata->GetMean();
574 else if(esdInd==6) pmQZNC = hdata->GetMean();
575 else if(esdInd==7) pmQZNA = hdata->GetMean();
576 else if(esdInd==8) pmQZPC = hdata->GetMean();
577 else if(esdInd==9) pmQZPA = hdata->GetMean();
578 else if(esdInd==10) pmCZNC = hdata->GetMean();
579 else if(esdInd==11) pmCZNA = hdata->GetMean();
580 else if(esdInd==12) pmCZPC = hdata->GetMean();
581 else if(esdInd==13) pmCZPA = hdata->GetMean();
582 }
583 //
584 // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff
585 // --- and 2*|Mean ZPA - Mean ZPC|/(Mean ZPA + Mean ZPC) < 2*percentageDiff
586 if(esdInd==5){
587 if(sumADCZNC!=0 && sumADCZNA!=0){
588 if((2*TMath::Abs(sumADCZNC-sumADCZNA)/(sumADCZNA+sumADCZNC))<percentageDiff)
589 res=1.;
590 else
591 res=.5;
592 test[specie] += res;
593 ntests[specie]++;
594 }
595 if(sumADCZPC!=0 && sumADCZPA!=0){
596 if((TMath::Abs(sumADCZPC-sumADCZPA)/(sumADCZPA+sumADCZPC))<percentageDiff)
597 res=1.;
598 else
599 res=.5;
600 test[specie] += res;
601 ntests[specie]++;
602 }
603 }
604 // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff
605 if(esdInd==13){
606 if(sumADCZNC!=0){
607 if((TMath::Abs(pmQZNC-pmCZNC)/pmCZNC)<percentageDiff)
608 res=1.;
609 else
610 res=.5;
611 test[specie] += res;
612 ntests[specie]++;
613 }
614 if(sumADCZNA!=0){
615 if((TMath::Abs(pmQZNA-pmCZNA)/pmCZNA)<percentageDiff)
616 res=1.;
617 else
618 res=.5;
619 test[specie] += res;
620 ntests[specie]++;
621 }
622 if(sumADCZPC!=0){
623 if((TMath::Abs(pmQZPC-pmCZPC)/pmCZPC)<percentageDiff)
624 res=1.;
625 else
626 res=.5;
627 test[specie] += res;
628 ntests[specie]++;
629 }
630 if(sumADCZPA!=0){
631 if((TMath::Abs(pmQZPA-pmCZPA)/pmCZPA)<percentageDiff)
632 res=1.;
633 else
634 res=.5;
635 test[specie] += res;
636 ntests[specie]++;
637 }
638 }
639 esdInd++;
640 }
641 else {
642 AliWarning(Form("\n\t No ZDC QA for %s task\n",taskName));
643 return NULL;
644 }
645 }//if(hdata)
646 else AliError("\t No histos found for ZDC!!!\n");
647 }
648 } // HighMult (Pb-Pb)
649 else {
650 AliError(Form("Checking not implemented for %s, %s",
57acd2d2 651 AliRecoParam::GetEventSpecieName(AliRecoParam::kCosmic),
652 AliRecoParam::GetEventSpecieName(AliRecoParam::kCalib))) ;
fdc38bb2 653 }
213a7d34 654 } // Loop on species
57acd2d2 655
656 for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
657 if(ntests[specie]!=0) test[specie] = test[specie]/ntests[specie];
213a7d34 658 AliDebug(AliQAv1::GetQADebugLevel(), Form("\n\t ZDC QA check result = %1.2f\n",test[specie]));
fdc38bb2 659 }
57acd2d2 660 delete [] ntests ;
661 return test;
075a0e70 662}
57acd2d2 663