]>
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 | //____________________________________________________________________________ |
4e25ac79 | 31 | Double_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 |