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