- ((TH2I*)list->At(5+shift))->Reset(); // clean up MEB histo (needed at the first cycle for small statistics)
-
- ((TH1F*)list->At(7+shift))->Divide(((TH1F*)list->At(1+shift)),((TH1F*)list->At(0+shift)));
- ((TH1F*)list->At(8+shift))->Divide(((TH1F*)list->At(2+shift)),((TH1F*)list->At(0+shift)));
- ((TH1F*)list->At(9+shift))->Divide(((TH1F*)list->At(3+shift)),((TH1F*)list->At(4+shift)));
-
- for(Int_t i=0; i<1200; i++){
- if(((TH1F*)list->At(8+shift))->GetBinContent(i+1)>0.5 && ((TH1F*)list->At(9+shift))->GetBinContent(i+1)>0.5){
- Int_t eq=i/60;
- Int_t hs=(i%60)/10;
- Int_t chip = (i%60)%10;
- Int_t sect = 999; Int_t chipbin = 999;
- if(eq<10) {sect = eq; chipbin = 19-chip;}
- else {sect = eq-10; chipbin = chip;}
- ((TH2I*)list->At(5+shift))->Fill(sect*6+hs,chipbin);
- }
- }
-
- } // QA Task Index == RAWS
+ //
+ Int_t shift = fGenRawsOffset[fAliITSQADataMakerRec->GetEventSpecie()];
+ for (int trCl=-1;trCl<fAliITSQADataMakerRec->GetNTrigClasses();trCl++) { // RS Loop over all trigger classes (+ global counter, -1)
+ if(task == AliQAv1::kRAWS) {
+ TObjArray &harr = *fAliITSQADataMakerRec->GetRawsDataOfTrigClass(trCl); // extract the clones for given trigger class
+ //
+ if (harr[5+shift]) ((TH1*)harr[5+shift])->Reset(); // clean up MEB histo (needed at the first cycle for small statistics)
+ if (harr[7+shift]&&harr[1+shift]&&harr[0+shift]) ((TH1*)harr[7+shift])->Divide((TH1*)harr[1+shift],(TH1*)harr[0+shift]);
+ if (harr[8+shift]&&harr[2+shift]&&harr[0+shift]) ((TH1*)harr[8+shift])->Divide((TH1*)harr[2+shift],(TH1*)harr[0+shift]); // missing FO ratio (per event)
+ if (harr[9+shift]&&harr[3+shift]&&harr[4+shift]) ((TH1*)harr[9+shift])->Divide((TH1*)harr[3+shift],(TH1*)harr[4+shift]); // noisy FO ratio (per event)
+ //
+ TH1 *h0 = (TH1*)harr[0+shift];
+ TH1 *h4 = (TH1*)harr[4+shift];
+ TH2 *h5 = (TH2*)harr[5+shift];
+ TH1 *h8 = (TH1*)harr[8+shift];
+ TH1 *h9 = (TH1*)harr[9+shift];
+ //
+ if (h0 && h4 && h5 && h8 && h9) {
+ for(Int_t i=0; i<1200; i++) {
+ // threshold for protection in case of technical runs (->few entries per chip)
+ Short_t thre=20; // 20 is ok in run 104792 (where the problem occured).
+ if (h0->GetBinContent(i+1)<thre) continue; // expected FO yield
+ if (h4->GetBinContent(i+1)<thre) continue; // the total FO yield.
+ //
+ if(h8->GetBinContent(i+1)>0.5 && h9->GetBinContent(i+1)>0.5) {
+ Int_t eq=i/60;
+ Int_t hs=(i%60)/10;
+ Int_t chip = (i%60)%10;
+ Int_t sect = 999; Int_t chipbin = 999;
+ if(eq<10) {sect = eq; chipbin = 19-chip;}
+ else {sect = eq-10; chipbin = chip;}
+ h5->Fill(sect*6+hs,chipbin);
+ }
+ }
+ }
+ } // QA Task Index == RAWS
+ } // RS: loop over trigger classes