#ifndef ALIQACHECKERBASE_H
#define ALIQACHECKERBASE_H
#include <TNamed.h>
#include "AliQAv1.h"
class TCanvas ;
class TFile ;
class TH1 ;
class TObjArray ;
class TDirectory ;
class TNtupleD ;
class AliDetectorRecoParam ;
class TList ;
class AliQACheckerBase: public TNamed {
public:
AliQACheckerBase(const char * name = "", const char * title = "") ;
virtual ~AliQACheckerBase() ;
void DeleteImages() ;
TList * GetExternParamlist() { return fExternParamList ;}
TCanvas ** GetImage() { return fImage ; }
TCanvas * GetImage(AliRecoParam::EventSpecie_t es) { return fImage[AliRecoParam::AConvert(es)] ; }
virtual void Init(const AliQAv1::DETECTORINDEX_t det) { AliQAv1::Instance(det) ; }
virtual void MakeImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode) ;
void PrintExternParam() ;
void Run(AliQAv1::ALITASK_t tsk, const AliDetectorRecoParam * recoParam = NULL);
void Run(AliQAv1::ALITASK_t tsk, TObjArray ** list, const AliDetectorRecoParam * recoParam = NULL);
void Run(AliQAv1::ALITASK_t , TNtupleD ** , const AliDetectorRecoParam * ) {;}
void SetExternParamlist(TList * list) { fExternParamList = list ;}
void SetHiLo(Float_t * hiValue, Float_t * lowValue) ;
void SetPrintImage(Bool_t opt = kTRUE) { fPrintImage = opt ; }
protected:
virtual void Check(Double_t *rv, AliQAv1::ALITASK_t, TObjArray ** list, const AliDetectorRecoParam * recoParam=0) ;
Double_t DiffC(const TH1 * href, const TH1 * hin) const ;
Double_t DiffK(const TH1 * href, const TH1 * hin) const ;
void Finish() const ;
void GetRefSubDir(const char * det, const char * task, TDirectory *& dirFile, TObjArray **& dirOCDB) ;
virtual void SetQA(AliQAv1::ALITASK_t index, Double_t * value) const ;
TDirectory * fDataSubDir ;
TDirectory * fRefSubDir ;
TObjArray ** fRefOCDBSubDir ;
Float_t * fLowTestValue ;
Float_t * fUpTestValue ;
TCanvas ** fImage ;
Bool_t fPrintImage ;
TList * fExternParamList;
private:
AliQACheckerBase(const AliQACheckerBase& qac) ;
AliQACheckerBase& operator = (const AliQACheckerBase& qac) ;
void PrivateCheck(Double_t * rv, AliQAv1::ALITASK_t index, const AliDetectorRecoParam * recoParam) ;
ClassDef(AliQACheckerBase,3)
};
#endif // AliQUALASSCHECKERBASE_H