#include <TClass.h>
#include <TH1F.h>
#include <TH1I.h>
#include <TIterator.h>
#include <TKey.h>
#include <TFile.h>
#include <TPaveText.h>
#include <TLine.h>
#include "AliLog.h"
#include "AliQAv1.h"
#include "AliQAChecker.h"
#include "AliACORDEQAChecker.h"
#include "AliCDBEntry.h"
#include "AliQAManager.h"
ClassImp(AliACORDEQAChecker)
AliACORDEQAChecker::AliACORDEQAChecker() :
AliQACheckerBase("ACORDE","ACORDE Quality Assurance Data Maker"),
fTextDQMShifterInfo(new TPaveText(2.2,0.90,2.9,0.99,"T")),
fMax(new TLine(1,0.5,3,0.5))
{
fMax->SetLineColor(kGreen);
fMax->SetLineWidth(3);
}
AliACORDEQAChecker::~AliACORDEQAChecker()
{
delete fTextDQMShifterInfo;
delete fMax;
}
AliACORDEQAChecker::AliACORDEQAChecker(const AliACORDEQAChecker& qac) :
AliQACheckerBase(qac.GetName(), qac.GetTitle()),
fTextDQMShifterInfo(new TPaveText(2.2,0.90,2.9,0.99,"T")),
fMax(static_cast<TLine*>(qac.fMax->Clone()))
{
}
AliACORDEQAChecker& AliACORDEQAChecker::operator = (const AliACORDEQAChecker &qac)
{
if (&qac==this) return *this;
new (this) AliACORDEQAChecker(qac);
return *this;
}
void AliACORDEQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t )
{
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
test[specie] = 0.0 ;
}
void AliACORDEQAChecker::Check(Double_t * test, AliQAv1::ALITASK_t , TObjArray ** list, const AliDetectorRecoParam * )
{
for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++)
{
test[specie] = 1.0;
if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) continue ;
if (list[specie]->GetEntries() == 0) test[specie] = 1.;
else
{
TIter next(list[specie]) ;
TH1 * hdata ;
while ( (hdata = dynamic_cast<TH1 *>(next())) )
{
if (hdata->GetEntries()!=0)
{
Double_t rv = 0.0 ;
if(hdata->GetEntries()>0) rv=1;
AliDebug(AliQAv1::GetQADebugLevel(), Form("%s -> %f", hdata->GetName(), rv)) ;
TString hdataName = hdata->GetName();
if (hdataName.Contains("fhACORDEStatusAMU_DQM"))
{
if (!hdata->GetListOfFunctions()->Contains(fTextDQMShifterInfo))
hdata->GetListOfFunctions()->Add(fTextDQMShifterInfo);
if (!hdata->GetListOfFunctions()->Contains(fMax))
hdata->GetListOfFunctions()->Add(fMax);
}
if ( (fRefOCDBSubDir[specie]) && (hdataName.Contains("ACORDEBitPattern")) )
{
TH1 * href = NULL;
if (fRefSubDir) href = static_cast<TH1*>(fRefSubDir->Get(hdata->GetName()));
else if (fRefOCDBSubDir[specie]) href = static_cast<TH1*>(fRefOCDBSubDir[specie]->FindObject(hdata->GetName()));
test[specie] = CheckAcordeRefHits(href,hdata);
}else
{
if (hdataName.Contains("ACORDEBitPattern"))
{
Float_t acoDataMax = hdata->GetMaximum();
Int_t flagAcoQAChecker = 0;
if (acoDataMax == 0) continue;
for(Int_t i=0;i<60;i++)
{
if ((hdata->GetBinContent(i)/acoDataMax) < 0.75) flagAcoQAChecker++;
}
Double_t simpleFlag = 1.-flagAcoQAChecker/60.;
if ( (simpleFlag >= 0.90) && (simpleFlag <= 1.0) ) test[specie] = 0.75;
if ( (simpleFlag >= 0.70) && (simpleFlag < 0.90) ) test[specie] = 0.50;
if ( (simpleFlag >= 0.25) && (simpleFlag < 0.70) ) test[specie] = 0.25;
if ( (simpleFlag >= 0.0) && (simpleFlag < 0.25) ) test[specie] = -1.0;
if (test[specie]>0) rv = test[specie];
else rv = 1.0;
}
if (hdataName.Contains("fhACORDEStatusAMU_DQM"))
{
Float_t goodModules = hdata->GetBinContent(1);
Float_t badModules = hdata->GetBinContent(2);
if (goodModules >= badModules)
test[specie] = 0.75;
else test[specie] = 0.30;
}
rv = test[specie];
if (fTextDQMShifterInfo)
{
fTextDQMShifterInfo->Clear();
if (rv > 0.4){
fTextDQMShifterInfo->SetFillColor(kGreen);
fTextDQMShifterInfo->AddText("ACORDE: O.K.");
}else{
fTextDQMShifterInfo->SetFillColor(kRed);
fTextDQMShifterInfo->AddText("ACORDE: Not, O.K.");
}
}
}
}
else AliError("Data type cannot be processed") ;
}
}
if ( (specie == AliRecoParam::kHighMult) || (specie == AliRecoParam::kLowMult) || (specie == AliRecoParam::kCalib) ) test[specie] = 0.75;
}
}
Double_t AliACORDEQAChecker::CheckAcordeRefHits(const TH1 * href, const TH1 * hdata) const
{
Double_t test = 0.;
Int_t flag=0;
for (Int_t i=0;i<60;i++)
{
if (TMath::Abs(href->GetBinContent(i)-hdata->GetBinContent(i))>10) flag++;
}
if ((flag>50)&&(flag<=60)) test = -1.;
if ((flag>30)&&(flag<=50)) test = 0.25;
if ((flag>10)&&(flag<=30)) test = 0.5;
if ((flag>0)&&(flag<=10)) test = 0.75;
return test;
}
AliACORDEQAChecker.cxx:10 AliACORDEQAChecker.cxx:11 AliACORDEQAChecker.cxx:12 AliACORDEQAChecker.cxx:13 AliACORDEQAChecker.cxx:14 AliACORDEQAChecker.cxx:15 AliACORDEQAChecker.cxx:16 AliACORDEQAChecker.cxx:17 AliACORDEQAChecker.cxx:18 AliACORDEQAChecker.cxx:19 AliACORDEQAChecker.cxx:20 AliACORDEQAChecker.cxx:21 AliACORDEQAChecker.cxx:22 AliACORDEQAChecker.cxx:23 AliACORDEQAChecker.cxx:24 AliACORDEQAChecker.cxx:25 AliACORDEQAChecker.cxx:26 AliACORDEQAChecker.cxx:27 AliACORDEQAChecker.cxx:28 AliACORDEQAChecker.cxx:29 AliACORDEQAChecker.cxx:30 AliACORDEQAChecker.cxx:31 AliACORDEQAChecker.cxx:32 AliACORDEQAChecker.cxx:33 AliACORDEQAChecker.cxx:34 AliACORDEQAChecker.cxx:35 AliACORDEQAChecker.cxx:36 AliACORDEQAChecker.cxx:37 AliACORDEQAChecker.cxx:38 AliACORDEQAChecker.cxx:39 AliACORDEQAChecker.cxx:40 AliACORDEQAChecker.cxx:41 AliACORDEQAChecker.cxx:42 AliACORDEQAChecker.cxx:43 AliACORDEQAChecker.cxx:44 AliACORDEQAChecker.cxx:45 AliACORDEQAChecker.cxx:46 AliACORDEQAChecker.cxx:47 AliACORDEQAChecker.cxx:48 AliACORDEQAChecker.cxx:49 AliACORDEQAChecker.cxx:50 AliACORDEQAChecker.cxx:51 AliACORDEQAChecker.cxx:52 AliACORDEQAChecker.cxx:53 AliACORDEQAChecker.cxx:54 AliACORDEQAChecker.cxx:55 AliACORDEQAChecker.cxx:56 AliACORDEQAChecker.cxx:57 AliACORDEQAChecker.cxx:58 AliACORDEQAChecker.cxx:59 AliACORDEQAChecker.cxx:60 AliACORDEQAChecker.cxx:61 AliACORDEQAChecker.cxx:62 AliACORDEQAChecker.cxx:63 AliACORDEQAChecker.cxx:64 AliACORDEQAChecker.cxx:65 AliACORDEQAChecker.cxx:66 AliACORDEQAChecker.cxx:67 AliACORDEQAChecker.cxx:68 AliACORDEQAChecker.cxx:69 AliACORDEQAChecker.cxx:70 AliACORDEQAChecker.cxx:71 AliACORDEQAChecker.cxx:72 AliACORDEQAChecker.cxx:73 AliACORDEQAChecker.cxx:74 AliACORDEQAChecker.cxx:75 AliACORDEQAChecker.cxx:76 AliACORDEQAChecker.cxx:77 AliACORDEQAChecker.cxx:78 AliACORDEQAChecker.cxx:79 AliACORDEQAChecker.cxx:80 AliACORDEQAChecker.cxx:81 AliACORDEQAChecker.cxx:82 AliACORDEQAChecker.cxx:83 AliACORDEQAChecker.cxx:84 AliACORDEQAChecker.cxx:85 AliACORDEQAChecker.cxx:86 AliACORDEQAChecker.cxx:87 AliACORDEQAChecker.cxx:88 AliACORDEQAChecker.cxx:89 AliACORDEQAChecker.cxx:90 AliACORDEQAChecker.cxx:91 AliACORDEQAChecker.cxx:92 AliACORDEQAChecker.cxx:93 AliACORDEQAChecker.cxx:94 AliACORDEQAChecker.cxx:95 AliACORDEQAChecker.cxx:96 AliACORDEQAChecker.cxx:97 AliACORDEQAChecker.cxx:98 AliACORDEQAChecker.cxx:99 AliACORDEQAChecker.cxx:100 AliACORDEQAChecker.cxx:101 AliACORDEQAChecker.cxx:102 AliACORDEQAChecker.cxx:103 AliACORDEQAChecker.cxx:104 AliACORDEQAChecker.cxx:105 AliACORDEQAChecker.cxx:106 AliACORDEQAChecker.cxx:107 AliACORDEQAChecker.cxx:108 AliACORDEQAChecker.cxx:109 AliACORDEQAChecker.cxx:110 AliACORDEQAChecker.cxx:111 AliACORDEQAChecker.cxx:112 AliACORDEQAChecker.cxx:113 AliACORDEQAChecker.cxx:114 AliACORDEQAChecker.cxx:115 AliACORDEQAChecker.cxx:116 AliACORDEQAChecker.cxx:117 AliACORDEQAChecker.cxx:118 AliACORDEQAChecker.cxx:119 AliACORDEQAChecker.cxx:120 AliACORDEQAChecker.cxx:121 AliACORDEQAChecker.cxx:122 AliACORDEQAChecker.cxx:123 AliACORDEQAChecker.cxx:124 AliACORDEQAChecker.cxx:125 AliACORDEQAChecker.cxx:126 AliACORDEQAChecker.cxx:127 AliACORDEQAChecker.cxx:128 AliACORDEQAChecker.cxx:129 AliACORDEQAChecker.cxx:130 AliACORDEQAChecker.cxx:131 AliACORDEQAChecker.cxx:132 AliACORDEQAChecker.cxx:133 AliACORDEQAChecker.cxx:134 AliACORDEQAChecker.cxx:135 AliACORDEQAChecker.cxx:136 AliACORDEQAChecker.cxx:137 AliACORDEQAChecker.cxx:138 AliACORDEQAChecker.cxx:139 AliACORDEQAChecker.cxx:140 AliACORDEQAChecker.cxx:141 AliACORDEQAChecker.cxx:142 AliACORDEQAChecker.cxx:143 AliACORDEQAChecker.cxx:144 AliACORDEQAChecker.cxx:145 AliACORDEQAChecker.cxx:146 AliACORDEQAChecker.cxx:147 AliACORDEQAChecker.cxx:148 AliACORDEQAChecker.cxx:149 AliACORDEQAChecker.cxx:150 AliACORDEQAChecker.cxx:151 AliACORDEQAChecker.cxx:152 AliACORDEQAChecker.cxx:153 AliACORDEQAChecker.cxx:154 AliACORDEQAChecker.cxx:155 AliACORDEQAChecker.cxx:156 AliACORDEQAChecker.cxx:157 AliACORDEQAChecker.cxx:158 AliACORDEQAChecker.cxx:159 AliACORDEQAChecker.cxx:160 AliACORDEQAChecker.cxx:161 AliACORDEQAChecker.cxx:162 AliACORDEQAChecker.cxx:163 AliACORDEQAChecker.cxx:164 AliACORDEQAChecker.cxx:165 AliACORDEQAChecker.cxx:166 AliACORDEQAChecker.cxx:167 AliACORDEQAChecker.cxx:168 AliACORDEQAChecker.cxx:169 AliACORDEQAChecker.cxx:170 AliACORDEQAChecker.cxx:171 AliACORDEQAChecker.cxx:172 AliACORDEQAChecker.cxx:173 AliACORDEQAChecker.cxx:174 AliACORDEQAChecker.cxx:175 AliACORDEQAChecker.cxx:176 AliACORDEQAChecker.cxx:177 AliACORDEQAChecker.cxx:178 AliACORDEQAChecker.cxx:179 AliACORDEQAChecker.cxx:180 AliACORDEQAChecker.cxx:181 AliACORDEQAChecker.cxx:182 AliACORDEQAChecker.cxx:183 AliACORDEQAChecker.cxx:184 AliACORDEQAChecker.cxx:185 AliACORDEQAChecker.cxx:186 AliACORDEQAChecker.cxx:187 AliACORDEQAChecker.cxx:188 AliACORDEQAChecker.cxx:189 AliACORDEQAChecker.cxx:190 AliACORDEQAChecker.cxx:191 AliACORDEQAChecker.cxx:192 AliACORDEQAChecker.cxx:193 AliACORDEQAChecker.cxx:194 AliACORDEQAChecker.cxx:195 AliACORDEQAChecker.cxx:196 AliACORDEQAChecker.cxx:197