]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ZDC/AliZDCQAChecker.cxx
Fixes to make the preprocessor more robust in case of missing adc aliases.
[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);
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