#include "AliMUONTriggerQAChecker.h"
#include "AliRecoParam.h"
#include "AliMUONQAIndices.h"
#include "AliQAv1.h"
#include "TH1.h"
#include "TPaveText.h"
#include "TString.h"
#include "TObjArray.h"
#include "TList.h"
ClassImp(AliMUONTriggerQAChecker)
AliMUONTriggerQAChecker::AliMUONTriggerQAChecker() : AliMUONVQAChecker()
{
}
AliMUONTriggerQAChecker::~AliMUONTriggerQAChecker()
{
}
AliMUONVQAChecker::ECheckCode
AliMUONTriggerQAChecker::MarkHisto(TH1& histo, AliMUONVQAChecker::ECheckCode value) const
{
if ( value != AliMUONVQAChecker::kInfo )
{
histo.SetBit(AliQAv1::GetQABit());
}
return value;
}
AliMUONVQAChecker::ECheckCode*
AliMUONTriggerQAChecker::CheckRaws(TObjArray** list, const AliMUONRecoParam* )
{
AliMUONVQAChecker::ECheckCode * rv = new AliMUONVQAChecker::ECheckCode[AliRecoParam::kNSpecies];
Int_t histoRawsPercentIndex[] = {
AliMUONQAIndices::kTriggerErrorSummaryNorm,
AliMUONQAIndices::kTriggerCalibSummaryNorm,
AliMUONQAIndices::kTriggerReadOutErrorsNorm
};
const Int_t kNrawsHistos = sizeof(histoRawsPercentIndex)/sizeof(histoRawsPercentIndex[0]);
Float_t safeFactor = 5.;
Float_t warningPercentTrigAlgo[AliMUONQAIndices::kNtrigAlgoErrorBins] = {static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), 100., 100., 100., 100., static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.)};
Float_t warningPercentCalib[AliMUONQAIndices::kNtrigCalibSummaryBins] = {static_cast<Float_t>(safeFactor*0.4), static_cast<Float_t>(safeFactor*1.), 3.1, 0.0001, static_cast<Float_t>(safeFactor*0.4)};
Float_t warningPercentReadout[AliMUONQAIndices::kNtrigStructErrorBins] = {static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.), static_cast<Float_t>(safeFactor*1.)};
Float_t* warningPercent[kNrawsHistos] = {warningPercentTrigAlgo, warningPercentCalib, warningPercentReadout};
Float_t errorFactor = 30.;
Float_t errorPercentTrigAlgo[AliMUONQAIndices::kNtrigAlgoErrorBins] = {static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), 100., 100., 100., 100., static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.)};
Float_t errorPercentCalib[AliMUONQAIndices::kNtrigCalibSummaryBins] = {static_cast<Float_t>(errorFactor*0.4), static_cast<Float_t>(errorFactor*1.), 6.2, 3.*0.0001, static_cast<Float_t>(errorFactor*0.4)};
Float_t errorPercentReadout[AliMUONQAIndices::kNtrigStructErrorBins] = {static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.), static_cast<Float_t>(errorFactor*1.)};
Float_t* errorPercent[kNrawsHistos] = {errorPercentTrigAlgo, errorPercentCalib, errorPercentReadout};
TObjArray messages;
messages.SetOwner(kTRUE);
TH1* currHisto = 0x0;
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
rv[specie] = AliMUONVQAChecker::kInfo;
TH1* hAnalyzedEvents = AliQAv1::GetData(list,AliMUONQAIndices::kTriggerRawNAnalyzedEvents,AliRecoParam::ConvertIndex(specie));
for(Int_t ihisto = 0; ihisto<kNrawsHistos; ihisto++){
Int_t nAnalyzedEvents = 0;
Int_t ibinNevents = ( histoRawsPercentIndex[ihisto] == AliMUONQAIndices::kTriggerReadOutErrorsNorm ) ? 1 : 2;
if ( hAnalyzedEvents ) nAnalyzedEvents = TMath::Nint(hAnalyzedEvents->GetBinContent(ibinNevents));
AliMUONVQAChecker::ECheckCode currRv = AliMUONVQAChecker::kInfo;
messages.Clear();
currHisto = AliQAv1::GetData(list,histoRawsPercentIndex[ihisto],AliRecoParam::ConvertIndex(specie));
if ( ! currHisto ) continue;
Int_t nbins = currHisto->GetXaxis()->GetNbins();
for (Int_t ibin = 1; ibin<=nbins; ibin++){
Double_t binContent = currHisto->GetBinContent(ibin);
if ( binContent > errorPercent[ihisto][ibin-1] )
currRv = AliMUONVQAChecker::kError;
else if ( binContent > warningPercent[ihisto][ibin-1] )
currRv = AliMUONVQAChecker::kWarning;
else if ( ibin == 4 && binContent > 50. && AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib) {
messages.Add(new TObjString("Do not panic:"));
messages.Add(new TObjString("copy errors do not affect data"));
}
}
if ( currRv != AliMUONVQAChecker::kInfo ) {
switch ( histoRawsPercentIndex[ihisto] ) {
case AliMUONQAIndices::kTriggerErrorSummaryNorm:
case AliMUONQAIndices::kTriggerCalibSummaryNorm:
messages.Add(new TObjString("Trigger algo errors"));
break;
case AliMUONQAIndices::kTriggerReadOutErrorsNorm:
messages.Add(new TObjString("Readout errors"));
break;
}
if ( currRv == AliMUONVQAChecker::kWarning )
messages.Add(new TObjString("are a little bit high"));
else if ( currRv == AliMUONVQAChecker::kError ||
currRv == AliMUONVQAChecker::kFatal )
messages.Add(new TObjString("are too high"));
}
else if ( nAnalyzedEvents != 0 ) {
switch ( histoRawsPercentIndex[ihisto] ) {
case AliMUONQAIndices::kTriggerErrorSummaryNorm:
case AliMUONQAIndices::kTriggerCalibSummaryNorm:
case AliMUONQAIndices::kTriggerReadOutErrorsNorm:
messages.Add(new TObjString("Values within limits"));
break;
}
}
if ( MarkHisto(*currHisto, currRv) < rv[specie] )
rv[specie] = currRv;
currHisto->GetYaxis()->SetRangeUser(0., 110.);
SetupHisto(nAnalyzedEvents, messages, *currHisto, currRv, specie);
}
}
return rv;
}
AliMUONVQAChecker::ECheckCode*
AliMUONTriggerQAChecker::CheckRecPoints(TObjArray** , const AliMUONRecoParam* )
{
return 0x0;
}
AliMUONVQAChecker::ECheckCode*
AliMUONTriggerQAChecker::CheckESD(TObjArray** , const AliMUONRecoParam* )
{
return 0x0;
}
void AliMUONTriggerQAChecker::SetupHisto(Int_t nevents, const TObjArray& messages, TH1& histo, AliMUONVQAChecker::ECheckCode code, Int_t esIndex)
{
Double_t y1 = 0.87 - (messages.GetLast()+2)*0.075;
TPaveText* text = new TPaveText(0.25,y1,0.75,0.89,"NDC");
Int_t eventLimit = ( AliRecoParam::ConvertIndex(esIndex) == AliRecoParam::kCalib ) ? 5 : 20;
text->AddText(Form("MTR - Specie: %s", AliRecoParam::GetEventSpecieName(esIndex)));
text->AddText(Form("Total events %i", nevents));
TString defaultText = "";
Int_t color = 0;
if ( nevents == 0 ) {
color = AliMUONVQAChecker::kFatalColor;
defaultText = "No events analyzed!";
}
else if ( nevents <= eventLimit ) {
color = AliMUONVQAChecker::kWarningColor;
text->AddText("Not enough events to judge");
defaultText = "Please wait for more statistics";
}
else {
TIter next(&messages);
TObjString* str;
while ( ( str = static_cast<TObjString*>(next()) ) ){
text->AddText(str->String());
}
switch ( code ) {
case AliMUONVQAChecker::kInfo:
color = AliMUONVQAChecker::kInfoColor;
defaultText = "All is fine!";
break;
case AliMUONVQAChecker::kWarning:
color = AliMUONVQAChecker::kWarningColor;
defaultText = "Please keep an eye on it!";
break;
case AliMUONVQAChecker::kFatal:
color = AliMUONVQAChecker::kFatalColor;
defaultText = "PLEASE CALL MUON TRIGGER EXPERT!!!";
break;
default:
color = AliMUONVQAChecker::kErrorColor;
defaultText = "PLEASE CALL MUON TRIGGER EXPERT!";
break;
}
}
text->AddText(defaultText.Data());
text->SetFillColor(color);
histo.SetFillStyle(1001);
histo.SetFillColor(color);
histo.SetStats(kFALSE);
histo.GetListOfFunctions()->Delete();
histo.GetListOfFunctions()->Add(text);
}
AliMUONTriggerQAChecker.cxx:1 AliMUONTriggerQAChecker.cxx:2 AliMUONTriggerQAChecker.cxx:3 AliMUONTriggerQAChecker.cxx:4 AliMUONTriggerQAChecker.cxx:5 AliMUONTriggerQAChecker.cxx:6 AliMUONTriggerQAChecker.cxx:7 AliMUONTriggerQAChecker.cxx:8 AliMUONTriggerQAChecker.cxx:9 AliMUONTriggerQAChecker.cxx:10 AliMUONTriggerQAChecker.cxx:11 AliMUONTriggerQAChecker.cxx:12 AliMUONTriggerQAChecker.cxx:13 AliMUONTriggerQAChecker.cxx:14 AliMUONTriggerQAChecker.cxx:15 AliMUONTriggerQAChecker.cxx:16 AliMUONTriggerQAChecker.cxx:17 AliMUONTriggerQAChecker.cxx:18 AliMUONTriggerQAChecker.cxx:19 AliMUONTriggerQAChecker.cxx:20 AliMUONTriggerQAChecker.cxx:21 AliMUONTriggerQAChecker.cxx:22 AliMUONTriggerQAChecker.cxx:23 AliMUONTriggerQAChecker.cxx:24 AliMUONTriggerQAChecker.cxx:25 AliMUONTriggerQAChecker.cxx:26 AliMUONTriggerQAChecker.cxx:27 AliMUONTriggerQAChecker.cxx:28 AliMUONTriggerQAChecker.cxx:29 AliMUONTriggerQAChecker.cxx:30 AliMUONTriggerQAChecker.cxx:31 AliMUONTriggerQAChecker.cxx:32 AliMUONTriggerQAChecker.cxx:33 AliMUONTriggerQAChecker.cxx:34 AliMUONTriggerQAChecker.cxx:35 AliMUONTriggerQAChecker.cxx:36 AliMUONTriggerQAChecker.cxx:37 AliMUONTriggerQAChecker.cxx:38 AliMUONTriggerQAChecker.cxx:39 AliMUONTriggerQAChecker.cxx:40 AliMUONTriggerQAChecker.cxx:41 AliMUONTriggerQAChecker.cxx:42 AliMUONTriggerQAChecker.cxx:43 AliMUONTriggerQAChecker.cxx:44 AliMUONTriggerQAChecker.cxx:45 AliMUONTriggerQAChecker.cxx:46 AliMUONTriggerQAChecker.cxx:47 AliMUONTriggerQAChecker.cxx:48 AliMUONTriggerQAChecker.cxx:49 AliMUONTriggerQAChecker.cxx:50 AliMUONTriggerQAChecker.cxx:51 AliMUONTriggerQAChecker.cxx:52 AliMUONTriggerQAChecker.cxx:53 AliMUONTriggerQAChecker.cxx:54 AliMUONTriggerQAChecker.cxx:55 AliMUONTriggerQAChecker.cxx:56 AliMUONTriggerQAChecker.cxx:57 AliMUONTriggerQAChecker.cxx:58 AliMUONTriggerQAChecker.cxx:59 AliMUONTriggerQAChecker.cxx:60 AliMUONTriggerQAChecker.cxx:61 AliMUONTriggerQAChecker.cxx:62 AliMUONTriggerQAChecker.cxx:63 AliMUONTriggerQAChecker.cxx:64 AliMUONTriggerQAChecker.cxx:65 AliMUONTriggerQAChecker.cxx:66 AliMUONTriggerQAChecker.cxx:67 AliMUONTriggerQAChecker.cxx:68 AliMUONTriggerQAChecker.cxx:69 AliMUONTriggerQAChecker.cxx:70 AliMUONTriggerQAChecker.cxx:71 AliMUONTriggerQAChecker.cxx:72 AliMUONTriggerQAChecker.cxx:73 AliMUONTriggerQAChecker.cxx:74 AliMUONTriggerQAChecker.cxx:75 AliMUONTriggerQAChecker.cxx:76 AliMUONTriggerQAChecker.cxx:77 AliMUONTriggerQAChecker.cxx:78 AliMUONTriggerQAChecker.cxx:79 AliMUONTriggerQAChecker.cxx:80 AliMUONTriggerQAChecker.cxx:81 AliMUONTriggerQAChecker.cxx:82 AliMUONTriggerQAChecker.cxx:83 AliMUONTriggerQAChecker.cxx:84 AliMUONTriggerQAChecker.cxx:85 AliMUONTriggerQAChecker.cxx:86 AliMUONTriggerQAChecker.cxx:87 AliMUONTriggerQAChecker.cxx:88 AliMUONTriggerQAChecker.cxx:89 AliMUONTriggerQAChecker.cxx:90 AliMUONTriggerQAChecker.cxx:91 AliMUONTriggerQAChecker.cxx:92 AliMUONTriggerQAChecker.cxx:93 AliMUONTriggerQAChecker.cxx:94 AliMUONTriggerQAChecker.cxx:95 AliMUONTriggerQAChecker.cxx:96 AliMUONTriggerQAChecker.cxx:97 AliMUONTriggerQAChecker.cxx:98 AliMUONTriggerQAChecker.cxx:99 AliMUONTriggerQAChecker.cxx:100 AliMUONTriggerQAChecker.cxx:101 AliMUONTriggerQAChecker.cxx:102 AliMUONTriggerQAChecker.cxx:103 AliMUONTriggerQAChecker.cxx:104 AliMUONTriggerQAChecker.cxx:105 AliMUONTriggerQAChecker.cxx:106 AliMUONTriggerQAChecker.cxx:107 AliMUONTriggerQAChecker.cxx:108 AliMUONTriggerQAChecker.cxx:109 AliMUONTriggerQAChecker.cxx:110 AliMUONTriggerQAChecker.cxx:111 AliMUONTriggerQAChecker.cxx:112 AliMUONTriggerQAChecker.cxx:113 AliMUONTriggerQAChecker.cxx:114 AliMUONTriggerQAChecker.cxx:115 AliMUONTriggerQAChecker.cxx:116 AliMUONTriggerQAChecker.cxx:117 AliMUONTriggerQAChecker.cxx:118 AliMUONTriggerQAChecker.cxx:119 AliMUONTriggerQAChecker.cxx:120 AliMUONTriggerQAChecker.cxx:121 AliMUONTriggerQAChecker.cxx:122 AliMUONTriggerQAChecker.cxx:123 AliMUONTriggerQAChecker.cxx:124 AliMUONTriggerQAChecker.cxx:125 AliMUONTriggerQAChecker.cxx:126 AliMUONTriggerQAChecker.cxx:127 AliMUONTriggerQAChecker.cxx:128 AliMUONTriggerQAChecker.cxx:129 AliMUONTriggerQAChecker.cxx:130 AliMUONTriggerQAChecker.cxx:131 AliMUONTriggerQAChecker.cxx:132 AliMUONTriggerQAChecker.cxx:133 AliMUONTriggerQAChecker.cxx:134 AliMUONTriggerQAChecker.cxx:135 AliMUONTriggerQAChecker.cxx:136 AliMUONTriggerQAChecker.cxx:137 AliMUONTriggerQAChecker.cxx:138 AliMUONTriggerQAChecker.cxx:139 AliMUONTriggerQAChecker.cxx:140 AliMUONTriggerQAChecker.cxx:141 AliMUONTriggerQAChecker.cxx:142 AliMUONTriggerQAChecker.cxx:143 AliMUONTriggerQAChecker.cxx:144 AliMUONTriggerQAChecker.cxx:145 AliMUONTriggerQAChecker.cxx:146 AliMUONTriggerQAChecker.cxx:147 AliMUONTriggerQAChecker.cxx:148 AliMUONTriggerQAChecker.cxx:149 AliMUONTriggerQAChecker.cxx:150 AliMUONTriggerQAChecker.cxx:151 AliMUONTriggerQAChecker.cxx:152 AliMUONTriggerQAChecker.cxx:153 AliMUONTriggerQAChecker.cxx:154 AliMUONTriggerQAChecker.cxx:155 AliMUONTriggerQAChecker.cxx:156 AliMUONTriggerQAChecker.cxx:157 AliMUONTriggerQAChecker.cxx:158 AliMUONTriggerQAChecker.cxx:159 AliMUONTriggerQAChecker.cxx:160 AliMUONTriggerQAChecker.cxx:161 AliMUONTriggerQAChecker.cxx:162 AliMUONTriggerQAChecker.cxx:163 AliMUONTriggerQAChecker.cxx:164 AliMUONTriggerQAChecker.cxx:165 AliMUONTriggerQAChecker.cxx:166 AliMUONTriggerQAChecker.cxx:167 AliMUONTriggerQAChecker.cxx:168 AliMUONTriggerQAChecker.cxx:169 AliMUONTriggerQAChecker.cxx:170 AliMUONTriggerQAChecker.cxx:171 AliMUONTriggerQAChecker.cxx:172 AliMUONTriggerQAChecker.cxx:173 AliMUONTriggerQAChecker.cxx:174 AliMUONTriggerQAChecker.cxx:175 AliMUONTriggerQAChecker.cxx:176 AliMUONTriggerQAChecker.cxx:177 AliMUONTriggerQAChecker.cxx:178 AliMUONTriggerQAChecker.cxx:179 AliMUONTriggerQAChecker.cxx:180 AliMUONTriggerQAChecker.cxx:181 AliMUONTriggerQAChecker.cxx:182 AliMUONTriggerQAChecker.cxx:183 AliMUONTriggerQAChecker.cxx:184 AliMUONTriggerQAChecker.cxx:185 AliMUONTriggerQAChecker.cxx:186 AliMUONTriggerQAChecker.cxx:187 AliMUONTriggerQAChecker.cxx:188 AliMUONTriggerQAChecker.cxx:189 AliMUONTriggerQAChecker.cxx:190 AliMUONTriggerQAChecker.cxx:191 AliMUONTriggerQAChecker.cxx:192 AliMUONTriggerQAChecker.cxx:193 AliMUONTriggerQAChecker.cxx:194 AliMUONTriggerQAChecker.cxx:195 AliMUONTriggerQAChecker.cxx:196 AliMUONTriggerQAChecker.cxx:197 AliMUONTriggerQAChecker.cxx:198 AliMUONTriggerQAChecker.cxx:199 AliMUONTriggerQAChecker.cxx:200 AliMUONTriggerQAChecker.cxx:201 AliMUONTriggerQAChecker.cxx:202 AliMUONTriggerQAChecker.cxx:203 AliMUONTriggerQAChecker.cxx:204 AliMUONTriggerQAChecker.cxx:205 AliMUONTriggerQAChecker.cxx:206 AliMUONTriggerQAChecker.cxx:207 AliMUONTriggerQAChecker.cxx:208 AliMUONTriggerQAChecker.cxx:209 AliMUONTriggerQAChecker.cxx:210 AliMUONTriggerQAChecker.cxx:211 AliMUONTriggerQAChecker.cxx:212 AliMUONTriggerQAChecker.cxx:213 AliMUONTriggerQAChecker.cxx:214 AliMUONTriggerQAChecker.cxx:215 AliMUONTriggerQAChecker.cxx:216 AliMUONTriggerQAChecker.cxx:217 AliMUONTriggerQAChecker.cxx:218 AliMUONTriggerQAChecker.cxx:219 AliMUONTriggerQAChecker.cxx:220 AliMUONTriggerQAChecker.cxx:221 AliMUONTriggerQAChecker.cxx:222 AliMUONTriggerQAChecker.cxx:223 AliMUONTriggerQAChecker.cxx:224 AliMUONTriggerQAChecker.cxx:225 AliMUONTriggerQAChecker.cxx:226 AliMUONTriggerQAChecker.cxx:227 AliMUONTriggerQAChecker.cxx:228 AliMUONTriggerQAChecker.cxx:229 AliMUONTriggerQAChecker.cxx:230 AliMUONTriggerQAChecker.cxx:231 AliMUONTriggerQAChecker.cxx:232 AliMUONTriggerQAChecker.cxx:233 AliMUONTriggerQAChecker.cxx:234 AliMUONTriggerQAChecker.cxx:235 AliMUONTriggerQAChecker.cxx:236 AliMUONTriggerQAChecker.cxx:237 AliMUONTriggerQAChecker.cxx:238 AliMUONTriggerQAChecker.cxx:239 AliMUONTriggerQAChecker.cxx:240 AliMUONTriggerQAChecker.cxx:241 AliMUONTriggerQAChecker.cxx:242 AliMUONTriggerQAChecker.cxx:243 AliMUONTriggerQAChecker.cxx:244 AliMUONTriggerQAChecker.cxx:245 AliMUONTriggerQAChecker.cxx:246 AliMUONTriggerQAChecker.cxx:247 AliMUONTriggerQAChecker.cxx:248 AliMUONTriggerQAChecker.cxx:249 AliMUONTriggerQAChecker.cxx:250