#ifndef ALIQACHECKER_H
#define ALIQACHECKER_H
#include <TNamed.h>
#include <TFile.h>
class TNtupleD ;
#include "AliQAv1.h"
#include "AliRecoParam.h"
class AliCDBEntry ;
class AliRunInfo ;
class AliQACheckerBase ;
class AliDetectorRecoParam ;
class AliQAChecker: public TNamed {
public:
AliQAChecker(const char* name = "AliQAChecker",
const char* title = "Quality Assurance checker for Raws, Hits, Digits and ESDs");
AliQAChecker(const AliQAChecker& qac);
AliQAChecker& operator = (const AliQAChecker& qac);
virtual ~AliQAChecker();
static AliQAChecker * Instance() ;
AliQACheckerBase * GetDetQAChecker(Int_t det) ;
Bool_t Run(const char * fileName = NULL, AliDetectorRecoParam * recoParam = NULL) ;
Bool_t Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TObjArray ** list, AliDetectorRecoParam * recoParam = NULL);
Bool_t Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TNtupleD ** list, AliDetectorRecoParam * recoParam = NULL);
void SetRunInfo(AliRunInfo * ei) {fRunInfo = ei;}
Int_t GetRunNumber() const { return fRun ; }
void SetRunNumber(Int_t run) { fRun = run ; }
private:
void LoadRunInfoFromGRP() ;
static AliQAChecker * fgQAChecker ;
TFile * fDataFile ;
AliRunInfo * fRunInfo ;
Bool_t fRunInfoOwner;
TFile * fRefFile ;
TString fFoundDetectors ;
AliQACheckerBase * fCheckers[AliQAv1::kNDET] ;
AliRecoParam::EventSpecie_t fEventSpecie ;
Int_t fRun ;
ClassDef(AliQAChecker, 1)
};
#endif