- //((TH1I*)list->At(5+shift))->Print();
- ((TH1I*)list->At(5+shift))->Reset(); // clean up MEB histo (needed at the first cycles for small statistics)
-
- for(Int_t eq=0; eq<20; eq++){
- for(Int_t hs=0; hs<6; hs++){
- for(Int_t chip=0; chip<10;chip++){
- Double_t expectedFO = ((TH1F*)list->At(0+shift))->GetBinContent(eq*60+hs*10+chip+1);// fired chips
- if(expectedFO){
- Float_t actualFO = ((TH1F*)list->At(1+shift))->GetBinContent(eq*60+hs*10+chip+1);
- Float_t missingFO = ((TH1F*)list->At(2+shift))->GetBinContent(eq*60+hs*10+chip+1);
- Float_t noisyFO = ((TH1F*)list->At(3+shift))->GetBinContent(eq*60+hs*10+chip+1);
- ((TH1F*)list->At(7+eq+shift))->SetBinContent(hs*10+chip+1,actualFO/expectedFO); // FO eff per eq
- ((TH1F*)list->At(27+eq+shift))->SetBinContent(hs*10+chip+1,missingFO/expectedFO);// missing FO per eq
- ((TH1F*)list->At(47+eq+shift))->SetBinContent(hs*10+chip+1,noisyFO/expectedFO); // Noisy FO per eq
-
- if(noisyFO/expectedFO>0.5 && missingFO/expectedFO>0.5) {
- // MEB problem if the missing FO and noisy FO sugnals and BOTH above some threshold
- ((TH1I*)list->At(5+shift))->Fill(eq*60+hs*10+chip);
- }
+ //
+ 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);
+ }
+ }