X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ZDC%2FAliZDCQAChecker.cxx;h=0f5e0b0c7c2455c9adeb08e85500d91df3a6b3c5;hb=6c4dd754391a226d287b9baacffd750fc0c64b14;hp=430ab49c95cb32acc21c3a03f8f0839b81d57ec4;hpb=f33cb8ca1c772ca7ea3caf3bdd8777100e85b3a0;p=u%2Fmrichter%2FAliRoot.git diff --git a/ZDC/AliZDCQAChecker.cxx b/ZDC/AliZDCQAChecker.cxx index 430ab49c95c..0f5e0b0c7c2 100644 --- a/ZDC/AliZDCQAChecker.cxx +++ b/ZDC/AliZDCQAChecker.cxx @@ -73,6 +73,7 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.; Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.; + Int_t nentries = -99; while((hdata = dynamic_cast(next()))){ if(hdata){ @@ -198,7 +199,8 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra Bool_t iDetPM = kTRUE; // --- Checks - if(irawHisto==22){ + if(irawHisto==16) nentries = Int_t (hdata->GetEntries()); + if(irawHisto==18){ Float_t resADC=0.; for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){ if((hdata->GetBinContent(ibin))>10.){ @@ -215,20 +217,26 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra test[specie] += res; count++; } + if(nentries != -99) messages.Add(new TObjString(Form("#entries %d",nentries))); + else messages.Add(new TObjString("#entries not known")); + // Float_t rv=1.; if(hdata->GetNbinsX() != 0) rv = resADC/hdata->GetNbinsX(); if(rv == 1.) messages.Add(new TObjString("ADCs are OK!")); else if(iDetPM==kFALSE){ - messages.Add(new TObjString("Problem with ADCs!")); - messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL")); - messages.Add(new TObjString("OR A STANDALONE_PEDESTAL RUN")); + messages.Add(new TObjString("Problem with some ADC!")); + messages.Add(new TObjString("IF THIS IS A PHYSICS RUN")); } else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs")); SetupHisto(messages, *hdata, rv); } - else if(irawHisto==23){ + else if(irawHisto==19){ + // Reference values must be inserted in the order: + // ZNC, ZPC, ZNA, ZPA, ZEM1, ZEM2 // Reference values from RUN 145456 - Double_t refTDCs[6] = {-322.5,-319.1,-320.9,-319.2,-319.7,-319.2}; + //Double_t refTDCs[6] = {-322.5,-319.1,-320.9,-319.2,-319.7,-319.2}; + // 2012 -> Reference values from RUN 177399 + Double_t refTDCs[6] = {-322.7,-321.4,-321.6,-321.7,-316.2,-315.4}; Float_t resTDC=0.; for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){ if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<3.){ @@ -249,7 +257,7 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra else if(rv<1. && rv>0.75) messages.Add(new TObjString("Minor problem with TDCs")); else{ messages.Add(new TObjString("Serious problem in ZDC timing")); - messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); + messages.Add(new TObjString("IF THIS IS A PHYSICS RUN")); } SetupHisto(messages, *hdata, rv); } @@ -317,18 +325,18 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra // // Check ESD HIGH GAIN CHAIN histos if(hdata->GetEntries()>0){ - if(esdInd==2) sumADCZNC = hdata->GetMean(); - else if(esdInd==3) sumADCZNA = hdata->GetMean(); - else if(esdInd==4) sumADCZPC = hdata->GetMean(); - else if(esdInd==5) sumADCZPA = hdata->GetMean(); - else if(esdInd==8) pmQZNC = hdata->GetMean(); - else if(esdInd==9) pmQZNA = hdata->GetMean(); - else if(esdInd==10) pmQZPC = hdata->GetMean(); - else if(esdInd==11) pmQZPA = hdata->GetMean(); - else if(esdInd==12) pmCZNC = hdata->GetMean(); - else if(esdInd==13) pmCZNA = hdata->GetMean(); - else if(esdInd==14) pmCZPC = hdata->GetMean(); - else if(esdInd==15) pmCZPA = hdata->GetMean(); + if(esdInd==0) sumADCZNC = hdata->GetMean(); + else if(esdInd==1) sumADCZNA = hdata->GetMean(); + else if(esdInd==2) sumADCZPC = hdata->GetMean(); + else if(esdInd==3) sumADCZPA = hdata->GetMean(); + else if(esdInd==6) pmQZNC = hdata->GetMean(); + else if(esdInd==7) pmQZNA = hdata->GetMean(); + else if(esdInd==8) pmQZPC = hdata->GetMean(); + else if(esdInd==9) pmQZPA = hdata->GetMean(); + else if(esdInd==10) pmCZNC = hdata->GetMean(); + else if(esdInd==11) pmCZNA = hdata->GetMean(); + else if(esdInd==12) pmCZPC = hdata->GetMean(); + else if(esdInd==13) pmCZPA = hdata->GetMean(); } // // --- Check whether (sum PMQi - PMC)/PMC < percentageDiff @@ -379,7 +387,7 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra // ==================================================================== // Checks for A-A events // ==================================================================== - else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kHighMult) { + if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kHighMult) { if(list[specie]->GetEntries()==0){ AliWarning("\t The list to be checked is empty!"); return ; @@ -397,6 +405,7 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra Float_t sumADCZNA=0., sumADCZNC=0., sumADCZPA=0., sumADCZPC=0.; Float_t adcCZNA=0., adcCZNC=0., adcCZPA=0., adcCZPC=0.; Float_t adcQZNA=0., adcQZNC=0., adcQZPA=0., adcQZPC=0.; + Int_t nentries=-99; while((hdata = dynamic_cast(next()))){ if(hdata){ @@ -561,7 +570,8 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra Bool_t iDetPM = kTRUE; // --- Checks - if(irawHisto==22){ + if(irawHisto==16) nentries = Int_t (hdata->GetEntries()); + if(irawHisto==18){ Float_t resADC=0.; for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){ if((hdata->GetBinContent(ibin))>10.){ @@ -577,26 +587,31 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra test[specie] += res; count++; } + if(nentries != -99) messages.Add(new TObjString(Form("#entries %d",nentries))); + else messages.Add(new TObjString("#entries not known")); + // Float_t rv=1.; if(hdata->GetNbinsX() != 0) rv = resADC/hdata->GetNbinsX(); - if(rv == 1.) messages.Add(new TObjString("ADCs are OK!")); + if(rv > 0.98) messages.Add(new TObjString("ADCs are OK!")); else if(iDetPM==kFALSE){ messages.Add(new TObjString("Problem with ADCs!")); - messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); + messages.Add(new TObjString("IF THIS IS A PHYSICS RUN")); } else if(iDetPM==kTRUE) messages.Add(new TObjString("Minor problem with ADCs")); SetupHisto(messages, *hdata, rv); } - else if(irawHisto==23){ - Double_t refTDCs[6] = {-322.5,-319.1,-320.9,-319.2,-319.7,-319.2}; + else if(irawHisto==19){ + // Reference values from RUN 137161 + Double_t refTDCs[6] = {-320.7,-319.0,-318.6,-319.9,-321.3,-320.8}; Float_t resTDC=0.; for(int ibin=1; ibin<=hdata->GetNbinsX(); ibin++){ - if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){ + if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<3.){ res=1.; } - else{ - res=0.5; + else if(TMath::Abs((hdata->GetBinContent(ibin))-refTDCs[ibin-1])<4.){ + res=0.8; } + else res=0.5; // resTDC += res; test[specie] += res; @@ -605,29 +620,13 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra Float_t rv=1.; if(hdata->GetNbinsX() != 0) rv = resTDC/hdata->GetNbinsX(); if(rv == 1.) messages.Add(new TObjString("TDCs are OK!")); - else if(rv<1 && rv>0.9) messages.Add(new TObjString("Minor problem with TDCs")); + else if(rv<1 && rv>0.75) messages.Add(new TObjString("Minor problem with TDCs")); else{ messages.Add(new TObjString("Serious problem in ZDC timing")); - messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); + messages.Add(new TObjString("IF THIS IS A PHYSICS RUN")); } SetupHisto(messages, *hdata, rv); } - else if(irawHisto==26){ - Double_t yZNC=hdata->GetBinContent(2); - Double_t yZNA=hdata->GetBinContent(4); - if(TMath::Abs(yZNC)<0.4 && TMath::Abs(yZNA)<0.4) res=1.; - else res=0.5; - test[specie] += res; - count++; - // - printf(" yZNC = %1.2f yZNA = %1.2f -> res %1.2f\n",yZNC, yZNA,res); - if(res == 1.) messages.Add(new TObjString("ZN positions are OK!")); - else{ - messages.Add(new TObjString("Problem in ZN positions!")); - messages.Add(new TObjString("IF THIS IS NOT A TECHNICAL RUN")); - } - SetupHisto(messages, *hdata, res); - } irawHisto++; } @@ -712,18 +711,18 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra // // Check ESD HIGH GAIN CHAIN histos if(hdata->GetEntries()>0){ - if(esdInd==2) sumADCZNC = hdata->GetMean(); - else if(esdInd==3) sumADCZNA = hdata->GetMean(); - else if(esdInd==4) sumADCZPC = hdata->GetMean(); - else if(esdInd==5) sumADCZPA = hdata->GetMean(); - else if(esdInd==8) pmQZNC = hdata->GetMean(); - else if(esdInd==9) pmQZNA = hdata->GetMean(); - else if(esdInd==10) pmQZPC = hdata->GetMean(); - else if(esdInd==11) pmQZPA = hdata->GetMean(); - else if(esdInd==12) pmCZNC = hdata->GetMean(); - else if(esdInd==13) pmCZNA = hdata->GetMean(); - else if(esdInd==14) pmCZPC = hdata->GetMean(); - else if(esdInd==15) pmCZPA = hdata->GetMean(); + if(esdInd==0) sumADCZNC = hdata->GetMean(); + else if(esdInd==1) sumADCZNA = hdata->GetMean(); + else if(esdInd==2) sumADCZPC = hdata->GetMean(); + else if(esdInd==3) sumADCZPA = hdata->GetMean(); + else if(esdInd==6) pmQZNC = hdata->GetMean(); + else if(esdInd==7) pmQZNA = hdata->GetMean(); + else if(esdInd==8) pmQZPC = hdata->GetMean(); + else if(esdInd==9) pmQZPA = hdata->GetMean(); + else if(esdInd==10) pmCZNC = hdata->GetMean(); + else if(esdInd==11) pmCZNA = hdata->GetMean(); + else if(esdInd==12) pmCZPC = hdata->GetMean(); + else if(esdInd==13) pmCZPA = hdata->GetMean(); } // // --- Check whether 2*|Mean ZNA - Mean ZNC|/(Mean ZNA + Mean ZNC) < percentageDiff @@ -795,15 +794,15 @@ void AliZDCQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t index, TObjArra // ==================================================================== // Checks for Calibration events // ==================================================================== - else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) { - AliWarning(Form("\n\t No check implemented in ZDC QA for %s task\n",taskName)); + if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) { + AliWarning(Form("\n\t No check implemented in ZDC QA for %s task in CALIBRATION events\n",taskName)); return ; } // Calibration // ==================================================================== // Checks for cosmic events // ==================================================================== else if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCosmic) { - AliWarning(Form("\n\t No check implemented in ZDC QA for %s task\n",taskName)); + AliWarning(Form("\n\t No check needed in ZDC QA for %s task in COSMIC events\n",taskName)); return ; } // Cosmic if(TMath::Abs(count)>1.e-10) test[specie] = test[specie]/count; @@ -834,17 +833,17 @@ void AliZDCQAChecker::SetupHisto(const TObjArray& messages, TH1& histo, Float_t& color = kGreen; defaultText = "Everything is fine!"; } - else if(code<1. && code>=0.9){ + else if(code<1. && code>=0.85){ color = kYellow; defaultText = "To be monitored in next runs"; } - else if(code<0.9 && code>=0.6){ + else if(code<0.85 && code>=0.6){ color = kOrange; defaultText = "notify the expert DURING THE DAY!"; } else if(code<0.6){ color = kRed; - defaultText = "CALL THE EXPERT!!!!"; + defaultText = "PLEASE CALL THE EXPERT!!!!"; } @@ -855,6 +854,17 @@ void AliZDCQAChecker::SetupHisto(const TObjArray& messages, TH1& histo, Float_t& //histo.SetFillColor(color); histo.SetStats(kFALSE); - - histo.GetListOfFunctions()->Add(text); + + TList* lst = histo.GetListOfFunctions(); + if(lst){ + TObject *stats = lst->FindObject("stats"); + lst->Remove(stats); + TObject *obj; + while ((obj = lst->First())) { + while(lst->Remove(obj)) { } + delete obj; + } + if(stats) lst->Add(stats); + lst->Add(text); + } }