ROOT logo
#ifndef ALIQACHECKERBASE_H
#define ALIQACHECKERBASE_H
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */


/* $Id$ */

//
//  Base class for detectors quality assurance checkers 
//  Compares Data made by QADataMakers with reference data
//  Y. Schutz CERN August 2007
//


// --- ROOT system ---
#include <TNamed.h>
#include "AliQAv1.h"
class TCanvas ; 
class TFile ; 
class TH1 ; 
class TObjArray ; 
class TDirectory ; 
class TNtupleD ;
class AliDetectorRecoParam ; 
class TList ; 

// --- Standard library ---

// --- AliRoot header files ---

class AliQACheckerBase: public TNamed {

public:
  AliQACheckerBase(const char * name = "", const char * title = "") ;          // ctor
  virtual ~AliQACheckerBase() ; // dtor
 
  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 /*tsk*/, TNtupleD ** /*nt*/, const AliDetectorRecoParam * /*recoParam*/) {;} 
  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     ; //! directory for the current task directory in the current detector directory in the data file
  TDirectory  * fRefSubDir      ; //! directory for the current task directory in the current detector directory in the reference file
  TObjArray   ** fRefOCDBSubDir ; //! Entry in OCDB for the current detector 
  Float_t     * fLowTestValue   ; // array of lower bounds for INFO, WARNING, ERROR, FATAL   
  Float_t     * fUpTestValue    ; // array of upper bounds for INFO, WARNING, ERROR, FATAL   
  TCanvas **    fImage          ; //[AliRecoParam::kNSpecies] 
  Bool_t        fPrintImage     ; //! flag to print the images or not
  TList       * fExternParamList; //List of external parameters (TParameter<double>)  

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)  // description 

};

#endif // AliQUALASSCHECKERBASE_H
 AliQACheckerBase.h:1
 AliQACheckerBase.h:2
 AliQACheckerBase.h:3
 AliQACheckerBase.h:4
 AliQACheckerBase.h:5
 AliQACheckerBase.h:6
 AliQACheckerBase.h:7
 AliQACheckerBase.h:8
 AliQACheckerBase.h:9
 AliQACheckerBase.h:10
 AliQACheckerBase.h:11
 AliQACheckerBase.h:12
 AliQACheckerBase.h:13
 AliQACheckerBase.h:14
 AliQACheckerBase.h:15
 AliQACheckerBase.h:16
 AliQACheckerBase.h:17
 AliQACheckerBase.h:18
 AliQACheckerBase.h:19
 AliQACheckerBase.h:20
 AliQACheckerBase.h:21
 AliQACheckerBase.h:22
 AliQACheckerBase.h:23
 AliQACheckerBase.h:24
 AliQACheckerBase.h:25
 AliQACheckerBase.h:26
 AliQACheckerBase.h:27
 AliQACheckerBase.h:28
 AliQACheckerBase.h:29
 AliQACheckerBase.h:30
 AliQACheckerBase.h:31
 AliQACheckerBase.h:32
 AliQACheckerBase.h:33
 AliQACheckerBase.h:34
 AliQACheckerBase.h:35
 AliQACheckerBase.h:36
 AliQACheckerBase.h:37
 AliQACheckerBase.h:38
 AliQACheckerBase.h:39
 AliQACheckerBase.h:40
 AliQACheckerBase.h:41
 AliQACheckerBase.h:42
 AliQACheckerBase.h:43
 AliQACheckerBase.h:44
 AliQACheckerBase.h:45
 AliQACheckerBase.h:46
 AliQACheckerBase.h:47
 AliQACheckerBase.h:48
 AliQACheckerBase.h:49
 AliQACheckerBase.h:50
 AliQACheckerBase.h:51
 AliQACheckerBase.h:52
 AliQACheckerBase.h:53
 AliQACheckerBase.h:54
 AliQACheckerBase.h:55
 AliQACheckerBase.h:56
 AliQACheckerBase.h:57
 AliQACheckerBase.h:58
 AliQACheckerBase.h:59
 AliQACheckerBase.h:60
 AliQACheckerBase.h:61
 AliQACheckerBase.h:62
 AliQACheckerBase.h:63
 AliQACheckerBase.h:64
 AliQACheckerBase.h:65
 AliQACheckerBase.h:66
 AliQACheckerBase.h:67
 AliQACheckerBase.h:68
 AliQACheckerBase.h:69
 AliQACheckerBase.h:70
 AliQACheckerBase.h:71
 AliQACheckerBase.h:72
 AliQACheckerBase.h:73
 AliQACheckerBase.h:74
 AliQACheckerBase.h:75
 AliQACheckerBase.h:76
 AliQACheckerBase.h:77
 AliQACheckerBase.h:78
 AliQACheckerBase.h:79