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


/*
  Checks the quality assurance. 
  By comparing with reference data

  Based on PHOS code written by
  Y. Schutz CERN July 2007
  
  Implemented by Yaxian Mao (CERN Oct. 2009)
*/


// --- ROOT system ---
class TFile ; 
class TH1F ; 
class TH1I ; 
class TH1 ;
class TLine ;
class TText ;
class TObjArray;
class TPaveText ;

// --- Standard library ---
// --- AliRoot header files ---
#include "AliQACheckerBase.h"
class AliEMCALLoader ; 

class AliEMCALQAChecker: public AliQACheckerBase {

public:
  //Histograms for Raw data control
  enum HRawType_t { 
    // first normal Low Gain and High Gain info
    kNsmodLG,kNsmodHG,kTimeLG,kTimeHG,
    kNtotLG,kNtotHG,kSigHG,kSigLG,
    kPedLG,kPedHG,
    k2DRatioAmp,kRatioDist, kLEDMonRatio, kLEDMonRatioDist,
    // then TRU info
    kNsmodTRU,
    kSigTRU,kNtotTRU,
    kNL0TRU, kTimeL0TRU,
		kNL0FirstTRU, kTimeL0FirstTRU,
    // and also LED Mon info
    kNsmodLGLEDMon,kNsmodHGLEDMon,kTimeLGLEDMon,kTimeHGLEDMon,
    kSigLGLEDMon,kSigHGLEDMon,kNtotLGLEDMon,kNtotHGLEDMon,
    kPedLGLEDMon,kPedHGLEDMon,
		//and STU info
		kAmpL1, kGL1, kJL1,
		kGL1V0, kJL1V0, kSTUTRU  
  } ;
	//Histograms for RecPoints  control
	enum HRPType_t {kRecPE,kRecPM,kRecPDigM};
	
	//Histograms for ESDs  control
	enum HESDType_t {kESDCaloClusE,kESDCaloClusM,kESDCaloCellA,kESDCaloCellM} ;

  AliEMCALQAChecker() ;        // ctor
  virtual ~AliEMCALQAChecker() ; // dtor
	
  virtual void   Init(const AliQAv1::DETECTORINDEX_t det) ; 

protected:
		
  virtual void Check( Double_t * test, AliQAv1::ALITASK_t index, TObjArray ** list,  const AliDetectorRecoParam * /*recoParam*/) ;
  //virtual void SetQA(AliQAv1::ALITASK_t index, Double_t * value) const ;	
	
  void CheckRaws(Double_t* test, TObjArray ** list);
  void CheckRecPoints(Double_t* /*test*/, TObjArray** /*list*/) const {;}
  void CheckESD(Double_t* /*test*/, TObjArray** /*list*/) const {;}
	void CleanListOfFunctions(TList *list);
  TH1* GetHisto(TObjArray* list, const char* hname, Int_t specie) const;
  Double_t MarkHisto(TH1& histo, Double_t value) const;
	
	
private:
  AliEMCALQAChecker(const AliEMCALQAChecker& qac);
  AliEMCALQAChecker& operator = (const AliEMCALQAChecker& qac) ;
	//TH1F * htemp; //a tempory histrogram for getting the mean and sigma
	//Double_t fMean; //mean value 
	//Double_t fWidth; //sigma of the distribution
  static const Int_t fgknSM = 20;    //! number of current SM; EMCal + DCal
//  TLine **     fLine       ; //! line to distinguish the different SM
//  TLine **     fHref       ; //! Line marking the average value for each SM
  TText **    fTextSM        ; //! Text info for each SM
  TLine *     fLineCol       ; //! line to distinguish the different SM side: A side and C side
  TLine *     fLineRow[5]       ; //! line to distinguish the different SM sectors (0-5) 
  TPaveText * fText          ;  //! Information text for the quality of each SM
	TPaveText * fTextL1[3];       //! Information text for the quality of L1 plots (3 plots in total)
  ClassDef(AliEMCALQAChecker,4)  // description 

};

#endif // AliEMCALQAChecker_H
 AliEMCALQAChecker.h:1
 AliEMCALQAChecker.h:2
 AliEMCALQAChecker.h:3
 AliEMCALQAChecker.h:4
 AliEMCALQAChecker.h:5
 AliEMCALQAChecker.h:6
 AliEMCALQAChecker.h:7
 AliEMCALQAChecker.h:8
 AliEMCALQAChecker.h:9
 AliEMCALQAChecker.h:10
 AliEMCALQAChecker.h:11
 AliEMCALQAChecker.h:12
 AliEMCALQAChecker.h:13
 AliEMCALQAChecker.h:14
 AliEMCALQAChecker.h:15
 AliEMCALQAChecker.h:16
 AliEMCALQAChecker.h:17
 AliEMCALQAChecker.h:18
 AliEMCALQAChecker.h:19
 AliEMCALQAChecker.h:20
 AliEMCALQAChecker.h:21
 AliEMCALQAChecker.h:22
 AliEMCALQAChecker.h:23
 AliEMCALQAChecker.h:24
 AliEMCALQAChecker.h:25
 AliEMCALQAChecker.h:26
 AliEMCALQAChecker.h:27
 AliEMCALQAChecker.h:28
 AliEMCALQAChecker.h:29
 AliEMCALQAChecker.h:30
 AliEMCALQAChecker.h:31
 AliEMCALQAChecker.h:32
 AliEMCALQAChecker.h:33
 AliEMCALQAChecker.h:34
 AliEMCALQAChecker.h:35
 AliEMCALQAChecker.h:36
 AliEMCALQAChecker.h:37
 AliEMCALQAChecker.h:38
 AliEMCALQAChecker.h:39
 AliEMCALQAChecker.h:40
 AliEMCALQAChecker.h:41
 AliEMCALQAChecker.h:42
 AliEMCALQAChecker.h:43
 AliEMCALQAChecker.h:44
 AliEMCALQAChecker.h:45
 AliEMCALQAChecker.h:46
 AliEMCALQAChecker.h:47
 AliEMCALQAChecker.h:48
 AliEMCALQAChecker.h:49
 AliEMCALQAChecker.h:50
 AliEMCALQAChecker.h:51
 AliEMCALQAChecker.h:52
 AliEMCALQAChecker.h:53
 AliEMCALQAChecker.h:54
 AliEMCALQAChecker.h:55
 AliEMCALQAChecker.h:56
 AliEMCALQAChecker.h:57
 AliEMCALQAChecker.h:58
 AliEMCALQAChecker.h:59
 AliEMCALQAChecker.h:60
 AliEMCALQAChecker.h:61
 AliEMCALQAChecker.h:62
 AliEMCALQAChecker.h:63
 AliEMCALQAChecker.h:64
 AliEMCALQAChecker.h:65
 AliEMCALQAChecker.h:66
 AliEMCALQAChecker.h:67
 AliEMCALQAChecker.h:68
 AliEMCALQAChecker.h:69
 AliEMCALQAChecker.h:70
 AliEMCALQAChecker.h:71
 AliEMCALQAChecker.h:72
 AliEMCALQAChecker.h:73
 AliEMCALQAChecker.h:74
 AliEMCALQAChecker.h:75
 AliEMCALQAChecker.h:76
 AliEMCALQAChecker.h:77
 AliEMCALQAChecker.h:78
 AliEMCALQAChecker.h:79
 AliEMCALQAChecker.h:80
 AliEMCALQAChecker.h:81
 AliEMCALQAChecker.h:82
 AliEMCALQAChecker.h:83
 AliEMCALQAChecker.h:84
 AliEMCALQAChecker.h:85
 AliEMCALQAChecker.h:86
 AliEMCALQAChecker.h:87
 AliEMCALQAChecker.h:88
 AliEMCALQAChecker.h:89
 AliEMCALQAChecker.h:90
 AliEMCALQAChecker.h:91
 AliEMCALQAChecker.h:92
 AliEMCALQAChecker.h:93
 AliEMCALQAChecker.h:94
 AliEMCALQAChecker.h:95
 AliEMCALQAChecker.h:96
 AliEMCALQAChecker.h:97
 AliEMCALQAChecker.h:98