MakeImage is now a method of AliCheckerBase, was AliQADataMaker before. This will...
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 5 Jul 2009 22:03:39 +0000 (22:03 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 5 Jul 2009 22:03:39 +0000 (22:03 +0000)
17 files changed:
STEER/AliQAChecker.cxx
STEER/AliQAChecker.h
STEER/AliQACheckerBase.cxx
STEER/AliQACheckerBase.h
STEER/AliQADataMaker.cxx
STEER/AliQADataMaker.h
STEER/AliQADataMakerRec.cxx
STEER/AliQADataMakerRec.h
STEER/AliQADataMakerSim.cxx
STEER/AliQADataMakerSim.h
STEER/AliQAManager.cxx
STEER/AliQAManager.h
STEER/AliQAv1.cxx
STEER/AliQAv1.h
STEER/AliReconstruction.cxx
STEER/AliSimulation.cxx
test/ppbench/sim.C

index da373d9..27a6ff2 100644 (file)
@@ -56,7 +56,8 @@ AliQAChecker::AliQAChecker(const char* name, const char* title) :
   fRunInfoOwner(kFALSE), 
   fRefFile(0x0), 
   fFoundDetectors("."), 
-  fEventSpecie(AliRecoParam::kDefault) 
+  fEventSpecie(AliRecoParam::kDefault), 
+  fRun(0)
 {
   // ctor: initialise checkers and open the data file   
   for (Int_t det = 0 ; det < AliQAv1::kNDET ; det++) 
@@ -71,7 +72,8 @@ AliQAChecker::AliQAChecker(const AliQAChecker& qac) :
   fRunInfoOwner(kFALSE),   
   fRefFile(qac.fRefFile), 
   fFoundDetectors(qac.fFoundDetectors),
-  fEventSpecie(qac.fEventSpecie)
+  fEventSpecie(qac.fEventSpecie),
+  fRun(qac.fRun)
 {
   // copy constructor
   
@@ -116,7 +118,7 @@ AliQAChecker::~AliQAChecker()
        } else if (det == AliQAv1::kCORR) {
                qac = new AliCorrQAChecker() ; 
        } else {
-               AliDebug(AliQAv1::GetQADebugLevel(), Form("Retrieving QA checker for %s", detName.Data())) ; 
+               AliDebugClass(AliQAv1::GetQADebugLevel(), Form("Retrieving QA checker for %s", detName.Data())) ; 
                TPluginManager* pluginManager = gROOT->GetPluginManager() ;
                TString qacName = "Ali" + detName + "QAChecker" ;
 
@@ -175,7 +177,7 @@ void AliQAChecker::GetRefSubDir(const char * det, const char * task, TDirectory
     AliError(Form("%s is not a valid location for reference data", refStorage.Data())) ; 
     return ; 
   } else {
-    AliQAManager* manQA = AliQAManager::QAManager() ;
+    AliQAManager* manQA = AliQAManager::QAManager(AliQAv1::GetTaskIndex(task)) ;
     for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
       if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) 
         continue ; 
@@ -428,6 +430,10 @@ Bool_t AliQAChecker::Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task
   GetRefSubDir(AliQAv1::GetDetName(det), AliQAv1::GetTaskName(task), refDir, refOCDBDir) ;
   qac->SetRefandData(refDir, refOCDBDir) ; 
   qac->Run(index, list) ; 
+  
+  // make the image 
+  qac->MakeImage(list, task, AliQAv1::Mode(task)) ; 
+  
        return kTRUE ; 
 }
 
@@ -468,5 +474,6 @@ Bool_t AliQAChecker::Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task
   GetRefSubDir(AliQAv1::GetDetName(det), AliQAv1::GetTaskName(task), refDir, refOCDBDir) ;
   qac->SetRefandData(refDir, refOCDBDir) ; 
   qac->Run(index, list) ; 
+
   return kTRUE ; 
 }
index e17e237..f172648 100644 (file)
@@ -30,20 +30,21 @@ public:
                    const char* title = "Quality Assurance checker for Raws, Hits, Digits and ESDs");
   AliQAChecker(const AliQAChecker& qac);
   AliQAChecker& operator = (const AliQAChecker& qac);
-  virtual ~AliQAChecker();
+  virtual  ~AliQAChecker();
 
-  static  AliQAChecker * Instance() ;
-  AliQACheckerBase *     GetDetQAChecker(Int_t det) ; 
-  void                   GetRefSubDir(const char * det, const char * task, TDirectory *& dirFile, TObjArray **& dirOCDB) ;
+  static  AliQAChecker *     Instance() ;
+  AliQACheckerBase *         GetDetQAChecker(Int_t det) ; 
+  void                       GetRefSubDir(const char * det, const char * task, TDirectory *& dirFile, TObjArray **& dirOCDB) ;
 //  static TFile *         GetQAResultFile() ;
 //  static const char *    GetQAResultFileName() { return fgQAResultFileName.Data() ; }
 //  void                   SetQAResultDirName(const char * name) ; 
 //  void                   SetRefDirName(const char * name) ; 
-
-  virtual Bool_t Run(const char * fileName = NULL) ;
-  virtual Bool_t Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TObjArray ** list);
-  virtual Bool_t Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TNtupleD ** list);
-  void SetRunInfo(AliRunInfo * ei) {fRunInfo = ei;}
+  Bool_t Run(const char * fileName = NULL) ;
+  Bool_t Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TObjArray ** list);
+  Bool_t Run(AliQAv1::DETECTORINDEX_t det, AliQAv1::TASKINDEX_t task, TNtupleD ** list);
+  void   SetRunInfo(AliRunInfo * ei) {fRunInfo = ei;}
+  Int_t  GetRunNumber() { return fRun ; } 
+  void   SetRunNumber(Int_t run) { fRun = run ; } 
 
 private:
 
@@ -57,6 +58,7 @@ private:
   TString                     fFoundDetectors ;         //! detectors for which the Quality assurance could be done
   AliQACheckerBase *          fCheckers[AliQAv1::kNDET] ; //! list of detectors checkers
   AliRecoParam::EventSpecie_t fEventSpecie ;            //! event specie deduced from the GRP data
+       Int_t                       fRun ;                    //! run number
   ClassDef(AliQAChecker, 1)  // class for running generation, simulation and digitization
 };
 #endif
index f727004..27563e0 100644 (file)
@@ -23,6 +23,7 @@
 //
 
 // --- ROOT system ---
+#include <TCanvas.h>
 #include <TClass.h>
 #include <TH1F.h> 
 #include <TH1I.h> 
@@ -31,6 +32,7 @@
 #include <TFile.h> 
 #include <TList.h>
 #include <TNtupleD.h>
+#include <TPaveText.h>
 
 // --- Standard library ---
 
@@ -51,7 +53,9 @@ AliQACheckerBase::AliQACheckerBase(const char * name, const char * title) :
   fRefSubDir(0x0), 
   fRefOCDBSubDir(0x0), 
   fLowTestValue(0x0),
-  fUpTestValue(0x0)
+  fUpTestValue(0x0),
+  fImage(new TCanvas*[AliRecoParam::kNSpecies]), 
+  fPrintImage(kTRUE)
 {
   // ctor
   fLowTestValue = new Float_t[AliQAv1::kNBIT] ; 
@@ -74,6 +78,9 @@ AliQACheckerBase::AliQACheckerBase(const char * name, const char * title) :
                               fLowTestValue[AliQAv1::kFATAL], fUpTestValue[AliQAv1::kFATAL]) ; 
     AliInfo(Form("%s", text)) ; 
   }
+  
+  for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) 
+    fImage[specie] = NULL ; 
 }
 
 //____________________________________________________________________________ 
@@ -83,22 +90,25 @@ AliQACheckerBase::AliQACheckerBase(const AliQACheckerBase& qac) :
   fRefSubDir(qac.fRefSubDir), 
   fRefOCDBSubDir(qac.fRefOCDBSubDir), 
   fLowTestValue(qac.fLowTestValue),
-  fUpTestValue(qac.fLowTestValue)
+  fUpTestValue(qac.fLowTestValue), 
+  fImage(NULL),  
+  fPrintImage(kTRUE)
 {
   //copy ctor
   for (Int_t index = 0 ; index < AliQAv1::kNBIT ; index++) {
     fLowTestValue[index]  = qac.fLowTestValue[index] ; 
     fUpTestValue[index] = qac.fUpTestValue[index] ; 
   }
-    
+  for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) 
+    fImage[specie] = qac.fImage[specie] ; 
 }
 
 //____________________________________________________________________________
-AliQACheckerBase& AliQACheckerBase::operator = (const AliQACheckerBase& qadm )
+AliQACheckerBase& AliQACheckerBase::operator = (const AliQACheckerBase& qac )
 {
   // Equal operator.
   this->~AliQACheckerBase();
-  new(this) AliQACheckerBase(qadm);
+  new(this) AliQACheckerBase(qac);
   return *this;
 }
 
@@ -107,6 +117,11 @@ AliQACheckerBase::~AliQACheckerBase()
 {
   delete [] fLowTestValue ; 
   delete [] fUpTestValue ; 
+  for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
+    if ( fImage[esIndex] ) 
+      delete fImage[esIndex] ;
+  }
+  delete[] fImage ; 
 }
 
 //____________________________________________________________________________
@@ -269,6 +284,67 @@ void AliQACheckerBase::Finish() const
        AliQAv1::GetQAResultFile()->Close() ; 
 }
 
+//____________________________________________________________________________ 
+void AliQACheckerBase::MakeImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, AliQAv1::MODE_t mode) 
+{
+  // makes the QA image for sim and rec
+  Int_t nImages = 0 ;
+  for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
+    if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) ) 
+      continue ;
+    TIter next(list[esIndex]) ;  
+    TH1 * hdata = NULL ; 
+    while ( (hdata=static_cast<TH1 *>(next())) ) {
+      TString cln(hdata->ClassName()) ; 
+      if ( ! cln.Contains("TH1") )
+        continue ; 
+      if ( hdata->TestBit(AliQAv1::GetImageBit()) )
+        nImages++; 
+    }
+    break ; 
+  }
+  if ( nImages == 0 ) {
+    AliDebug(AliQAv1::GetQADebugLevel(), Form("No histogram will be plotted for %s %s\n", GetName(), AliQAv1::GetTaskName(task).Data())) ;  
+  } else {
+    AliDebug(AliQAv1::GetQADebugLevel(), Form("%d histograms will be plotted for %s %s\n", nImages, GetName(), AliQAv1::GetTaskName(task).Data())) ;  
+    for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
+      if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) ) 
+        continue ;
+      const Char_t * title = Form("QA_%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(esIndex)) ; 
+      if ( !fImage[esIndex] ) {
+        fImage[esIndex] = new TCanvas(title, title) ;
+      }
+      fImage[esIndex]->Clear() ; 
+      fImage[esIndex]->SetTitle(title) ; 
+      fImage[esIndex]->cd() ; 
+      TPaveText someText(0.015, 0.015, 0.98, 0.98) ;
+      someText.AddText(title) ;
+      someText.Draw() ; 
+      fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat())) ; 
+      fImage[esIndex]->Clear() ; 
+      Int_t nx = TMath::Sqrt(nImages) ; 
+      Int_t ny = nx  ; 
+      if ( nx < TMath::Sqrt(nImages)) 
+        ny++ ; 
+      fImage[esIndex]->Divide(nx, ny) ; 
+      TIter nexthist(list[esIndex]) ; 
+      TH1* hist = NULL ;
+      Int_t npad = 1 ; 
+      fImage[esIndex]->cd(npad) ; 
+      while ( (hist=static_cast<TH1*>(nexthist())) ) {
+        TString cln(hist->ClassName()) ; 
+        if ( ! cln.Contains("TH1") )
+          continue ; 
+        if(hist->TestBit(AliQAv1::GetImageBit())) {
+          hist->Draw() ; 
+          fImage[esIndex]->cd(++npad) ; 
+        }
+      }
+      fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), AliQAv1::GetModeName(mode), AliQAChecker::Instance()->GetRunNumber(), AliQAv1::GetImageFileFormat())) ; 
+    }
+  }  
+}
+
 //____________________________________________________________________________
 void AliQACheckerBase::SetHiLo(Float_t * hiValue, Float_t * lowValue) 
 {
index a2df5f0..671add6 100644 (file)
@@ -16,6 +16,7 @@
 // --- ROOT system ---
 #include <TNamed.h>
 #include "AliQAv1.h"
+class TCanvas ; 
 class TFile ; 
 class TH1 ; 
 class TObjArray ; 
@@ -34,10 +35,14 @@ public:
   AliQACheckerBase& operator = (const AliQACheckerBase& qac) ;
   virtual ~AliQACheckerBase() ; // dtor
 
+  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           Run(AliQAv1::ALITASK_t tsk, TObjArray ** list = NULL); 
   void           Run(AliQAv1::ALITASK_t /*tsk*/, TNtupleD ** /*nt*/) {;} 
   void           SetHiLo(Float_t * hiValue, Float_t * lowValue) ; 
+  void           SetPrintImage(Bool_t opt = kTRUE) { fPrintImage = opt ; }
   void           SetRefandData(TDirectory * ref, TObjArray ** refOCDB, TDirectory * data=NULL) { fRefSubDir = ref ;  fRefOCDBSubDir = refOCDB, fDataSubDir = data ; }
 
 protected:
@@ -54,8 +59,10 @@ protected:
   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
 
-  ClassDef(AliQACheckerBase,1)  // description 
+  ClassDef(AliQACheckerBase,2)  // description 
 
 };
 
index 8391ad5..6eb4685 100644 (file)
@@ -25,8 +25,6 @@
 
 // --- ROOT system ---
 #include <TROOT.h> 
-#include <TCanvas.h> 
-#include <TPaveText.h>
 #include <TSystem.h> 
 #include <TFile.h>
 #include <TList.h> 
@@ -70,15 +68,12 @@ AliQADataMaker::AliQADataMaker(const Char_t * name, const Char_t * title) :
   fParameterList(new TList*[AliRecoParam::kNSpecies]), 
   fRun(0), 
   fEventSpecie(AliRecoParam::kDefault), 
-  fImage(new TCanvas*[AliRecoParam::kNSpecies]), 
-  fPrintImage(kTRUE), 
   fDigitsArray(NULL) 
 {
   // ctor
   fDetectorDirName = GetName() ; 
     for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
       fParameterList[specie] = NULL ; 
-      fImage[specie] = NULL ; 
     }
 }
 
@@ -94,16 +89,14 @@ AliQADataMaker::AliQADataMaker(const AliQADataMaker& qadm) :
   fWriteExpert(qadm.fWriteExpert),
   fParameterList(qadm.fParameterList),  
   fRun(qadm.fRun), 
-  fEventSpecie(qadm.fEventSpecie), 
-  fImage(NULL),  
-  fPrintImage(kTRUE),
+  fEventSpecie(qadm.fEventSpecie),
   fDigitsArray(NULL) 
 {
   //copy ctor
   fDetectorDirName = GetName() ; 
   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
     fParameterList[specie] = qadm.fParameterList[specie] ; 
-    fImage[specie] = qadm.fImage[specie] ; 
+  //  fImage[specie] = qadm.fImage[specie] ; 
   }
 }
 
@@ -111,12 +104,9 @@ AliQADataMaker::AliQADataMaker(const AliQADataMaker& qadm) :
 AliQADataMaker::~AliQADataMaker()
 {
   for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
-    if ( fImage[esIndex] ) 
-      delete fImage[esIndex] ;
     if (fParameterList[esIndex] )
       delete fParameterList[esIndex] ; 
   }
-  delete[] fImage ; 
   delete[] fParameterList ; 
 
   if (fDigitsArray) {
@@ -255,59 +245,3 @@ Bool_t AliQADataMaker::IsValidEventSpecie(Int_t eventSpecieIndex, TObjArray ** l
   else
     return kTRUE ;
 }
-
-//____________________________________________________________________________ 
-void AliQADataMaker::MakeTheImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, const Char_t * mode) 
-{
-  // makes the QA image for sim and rec
-  TIter next(list[AliRecoParam::AConvert(fEventSpecie)]) ;  
-  TH1 * hdata = NULL ; 
-  Int_t nImages = 0 ;
-  while ( (hdata=static_cast<TH1 *>(next())) ) {
-    TString cln(hdata->ClassName()) ; 
-    if ( ! cln.Contains("TH1") )
-      continue ; 
-    if ( hdata->TestBit(AliQAv1::GetImageBit()) )
-      nImages++; 
-  }
-  if ( nImages == 0 ) {
-    AliDebug(AliQAv1::GetQADebugLevel(), Form("No histogram will be plotted for %s %s\n", GetName(), AliQAv1::GetTaskName(task).Data())) ;  
-  } else {
-    AliDebug(AliQAv1::GetQADebugLevel(), Form("%d histograms will be plotted for %s %s\n", nImages, GetName(), AliQAv1::GetTaskName(task).Data())) ;  
-    for (Int_t esIndex = 0 ; esIndex < AliRecoParam::kNSpecies ; esIndex++) {
-      if (! AliQAv1::Instance(AliQAv1::GetDetIndex(GetName()))->IsEventSpecieSet(AliRecoParam::ConvertIndex(esIndex)) ) 
-        continue ;
-      const Char_t * title = Form("QA_%s_%s_%s", GetName(), AliQAv1::GetTaskName(task).Data(), AliRecoParam::GetEventSpecieName(esIndex)) ; 
-      if ( !fImage[esIndex] ) {
-        fImage[esIndex] = new TCanvas(title, title) ;
-      }
-      fImage[esIndex]->Clear() ; 
-      fImage[esIndex]->SetTitle(title) ; 
-      fImage[esIndex]->cd() ; 
-      TPaveText someText(0.015, 0.015, 0.98, 0.98) ;
-      someText.AddText(title) ;
-      someText.Draw() ; 
-      fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), mode, fRun, AliQAv1::GetImageFileFormat())) ; 
-      fImage[esIndex]->Clear() ; 
-      Int_t nx = TMath::Sqrt(nImages) ; 
-      Int_t ny = nx  ; 
-      if ( nx < TMath::Sqrt(nImages)) 
-        ny++ ; 
-      fImage[esIndex]->Divide(nx, ny) ; 
-      TIter nexthist(list[esIndex]) ; 
-      TH1* hist = NULL ;
-      Int_t npad = 1 ; 
-      fImage[esIndex]->cd(npad) ; 
-      while ( (hist=static_cast<TH1*>(nexthist())) ) {
-        TString cln(hist->ClassName()) ; 
-        if ( ! cln.Contains("TH1") )
-          continue ; 
-        if(hist->TestBit(AliQAv1::GetImageBit())) {
-          hist->Draw() ; 
-          fImage[esIndex]->cd(++npad) ; 
-        }
-      }
-      fImage[esIndex]->Print(Form("%s%s%d.%s", AliQAv1::GetImageFileName(), mode, fRun, AliQAv1::GetImageFileFormat())) ; 
-    }
-  }  
-}
index b0a805f..a4e9da5 100644 (file)
@@ -18,7 +18,7 @@
 #include <TH1.h>
 #include <TObjArray.h>
 #include <TNamed.h>  
-class TCanvas ; 
+//class TCanvas ; 
 class TClonesArray;
 class TDirectory;
 class TFile;  
@@ -55,8 +55,6 @@ public:
        virtual TH1 *       GetDigitsData(const Int_t index)                       = 0 ; 
        virtual TH1 *       GetESDsData(const Int_t index)                         = 0 ; 
        virtual TH1 *       GetHitsData(const Int_t index)                         = 0 ; 
-  TCanvas **          GetImage() { return fImage ; }
-  TCanvas *           GetImage(AliRecoParam::EventSpecie_t es) { return fImage[AliRecoParam::AConvert(es)] ; }
        virtual TH1 *       GetRecPointsData(const Int_t index)                    = 0 ; 
        virtual TH1 *       GetRawsData(const Int_t index)                         = 0 ; 
        virtual TH1 *       GetSDigitsData(const Int_t index)                      = 0 ; 
@@ -71,7 +69,6 @@ public:
   virtual void        InitRecPoints()     = 0 ; 
   Bool_t              IsCycleDone() const { return fCycleCounter > fCycle ? kTRUE : kFALSE ; }
   Bool_t              IsValidEventSpecie(Int_t eventSpecieIndex, TObjArray ** list) ; 
-  virtual void        MakeImage(AliQAv1::TASKINDEX_t task) = 0 ; 
        void                Reset() { fCycleCounter = 0 ; }
        void                SetCycle(Int_t nevts) { fCycle = nevts ; } 
   void                SetWriteExpert() { fWriteExpert = kTRUE ; }
@@ -81,7 +78,6 @@ public:
   Bool_t              WriteExpert() { return fWriteExpert ; }
   void                SetEventSpecie(AliRecoParam::EventSpecie_t es) { fEventSpecie = es ; }
   void                SetEventSpecie(Int_t es) { fEventSpecie = AliRecoParam::Convert(es) ; }
-  void                SetPrintImage(Bool_t opt = kTRUE) { fPrintImage = opt ; }
   virtual void        SetRecoParam(const AliDetectorRecoParam *) {;}
 
   virtual void        InitRecPointsForTracker() {;} // needed by AliGlobalQADataMaker
@@ -110,7 +106,6 @@ protected:
        virtual void   MakeSDigits()      = 0 ;  
        virtual void   MakeSDigits(TTree * )             = 0 ;  
   //virtual void   MakeTrackSegments(TTree * )          = 0 ;  
-  virtual void   MakeTheImage( TObjArray ** list, AliQAv1::TASKINDEX_t task, const Char_t * mode) ; 
        void           ResetCycle() { fCurrentCycle++ ; fCycleCounter = 0 ; } 
        virtual void   StartOfDetectorCycle()            = 0 ;
        
@@ -124,8 +119,6 @@ protected:
   TList **       fParameterList ;   //! list of QA data parameters
        Int_t          fRun ;             //! run number
   AliRecoParam::EventSpecie_t fEventSpecie ; //! event specie, see AliRecoParam
-  TCanvas **     fImage ;           //[AliRecoParam::kNSpecies] 
-  Bool_t         fPrintImage ;      //! flag to print the images or not
   TClonesArray * fDigitsArray ;    //! array to hold the sdigits
   
 private:
index 8989c6f..9ba4b17 100644 (file)
@@ -24,7 +24,6 @@
 //
 
 // --- ROOT system ---
-#include <TCanvas.h>
 #include <TFile.h>
 #include <TTree.h>
 #include <TNtupleD.h>
@@ -206,47 +205,6 @@ void AliQADataMakerRec::EndOfCycle(AliQAv1::TASKINDEX_t task)
     }
     fOutput->Save() ; 
   }
-  MakeImage(task) ; 
-}
-
-//____________________________________________________________________________ 
-void AliQADataMakerRec::MakeImage(AliQAv1::TASKINDEX_t task)
-{
-  // create a drawing of detetor defined histograms
-  TObjArray ** list = NULL ;  
-  switch (task) {
-    case AliQAv1::kRAWS:
-      list = fRawsQAList ; 
-      break;
-    case AliQAv1::kHITS:
-      break;
-    case AliQAv1::kSDIGITS:
-      break;  
-    case AliQAv1::kDIGITS:
-      break;  
-    case AliQAv1::kDIGITSR:
-      list = fDigitsQAList ; 
-      break;  
-    case AliQAv1::kRECPOINTS:
-      list = fRecPointsQAList ; 
-      break;
-    case AliQAv1::kTRACKSEGMENTS:
-      break;
-    case AliQAv1::kRECPARTICLES:
-      break;
-    case AliQAv1::kESDS:
-      list = fESDsQAList ; 
-      break;
-    case AliQAv1::kNTASKINDEX:
-      break;
-    default:
-      break;
-  }
-  if ( !list) {
-    AliError("data not initialized, call AliQADataMaker::Init"); 
-    return ; 
-  }
-  MakeTheImage(list, task, "Rec") ; 
 }
 
 //____________________________________________________________________________
index 4df7fa7..134b230 100644 (file)
@@ -54,7 +54,6 @@ public:
        virtual TH1 *       GetRecPointsData(const Int_t index)  { return dynamic_cast<TH1 *>(GetData(fRecPointsQAList, index)) ; }
        virtual TH1 *       GetRawsData(const Int_t index)       { return dynamic_cast<TH1 *>(GetData(fRawsQAList, index))  ; }
        virtual TH1 *       GetSDigitsData(const Int_t /*index*/)   { return NULL ; }  
-  virtual void        MakeImage(AliQAv1::TASKINDEX_t task) ; 
        virtual TObjArray** Init(AliQAv1::TASKINDEX_t task, Int_t cycles = -1) ;
        virtual void        Init(AliQAv1::TASKINDEX_t task, TObjArray ** list, Int_t run, Int_t cycles = -1) ;
        virtual void        InitRaws() {AliInfo("To be implemented by detectors");}
index 76fbdae..ec5e313 100644 (file)
@@ -24,7 +24,6 @@
 //
 
 // --- ROOT system ---
-#include <TCanvas.h>
 #include <TFile.h>
 #include <TTree.h>
 #include <TClonesArray.h>
@@ -167,8 +166,6 @@ void AliQADataMakerSim::EndOfCycle(AliQAv1::TASKINDEX_t task)
     }
     fOutput->Save() ; 
   }
-  if (fPrintImage) 
-    MakeImage(task) ; 
 }
 
 //____________________________________________________________________________
@@ -213,45 +210,6 @@ void AliQADataMakerSim::Exec(AliQAv1::TASKINDEX_t task, TObject * data)
 }
 
 //____________________________________________________________________________ 
-void AliQADataMakerSim::MakeImage(AliQAv1::TASKINDEX_t task)
-{
-  // create a drawing of detetor defined histograms
-  TObjArray ** list = NULL ;  
-  switch (task) {
-    case AliQAv1::kRAWS:
-      break;
-    case AliQAv1::kHITS:
-      list = fHitsQAList ;
-      break;
-    case AliQAv1::kSDIGITS:
-      list = fSDigitsQAList ;
-      break;  
-    case AliQAv1::kDIGITS:
-      list = fDigitsQAList ;
-      break;  
-    case AliQAv1::kDIGITSR:
-      break;
-    case AliQAv1::kRECPOINTS:
-      break;
-    case AliQAv1::kTRACKSEGMENTS:
-      break;
-    case AliQAv1::kRECPARTICLES:
-      break;
-    case AliQAv1::kESDS:
-      break;
-    case AliQAv1::kNTASKINDEX:
-      break;
-    default:
-    break;
-  }
-  if ( !list) {
-    AliFatal("data not initialized, call AliQADataMaker::Init"); 
-  return ; 
-  }
-  MakeTheImage(list, task, "Sim") ; 
-}
-
-//____________________________________________________________________________ 
 TObjArray **  AliQADataMakerSim::Init(AliQAv1::TASKINDEX_t task, Int_t cycles)
 {
   // general intialisation
index 803a9b0..59036bb 100644 (file)
@@ -55,7 +55,6 @@ public:
        virtual void        Init(AliQAv1::TASKINDEX_t task, TObjArray ** list, Int_t run, Int_t cycles = -1) ;
   virtual void        InitRaws() {AliWarning("Call not valid") ; }
        virtual void        InitRecPoints()                  {AliWarning("Call not valid") ; } 
-  virtual void        MakeImage(AliQAv1::TASKINDEX_t task) ; 
        virtual void        StartOfCycle(Int_t run = -1) ;
        virtual void        StartOfCycle(AliQAv1::TASKINDEX_t task, Int_t run, const Bool_t sameCycle = kFALSE) ;
 
index 924b5e1..ce63307 100644 (file)
@@ -54,6 +54,8 @@
 #include "AliLog.h"
 #include "AliModule.h"
 #include "AliQAv1.h"
+#include "AliQAChecker.h"
+#include "AliQACheckerBase.h"
 #include "AliQADataMakerRec.h"
 #include "AliQADataMakerSim.h"
 #include "AliQAManager.h" 
@@ -103,7 +105,7 @@ AliQAManager::AliQAManager() :
 }
 
 //_____________________________________________________________________________
-AliQAManager::AliQAManager(const Char_t * mode, const Char_t* gAliceFilename) :
+AliQAManager::AliQAManager(AliQAv1::MODE_t mode, const Char_t* gAliceFilename) :
   AliCDBManager(), 
   fCurrentEvent(0),  
        fCycleSame(kFALSE),
@@ -114,7 +116,7 @@ AliQAManager::AliQAManager(const Char_t * mode, const Char_t* gAliceFilename) :
        fGAliceFileName(gAliceFilename), 
        fFirstEvent(0),        
        fMaxEvents(0),   
-  fMode(mode), 
+  fMode(AliQAv1::GetModeName(mode)), 
        fNumberOfEvents(999999), 
   fRecoParam(),
        fRunNumber(0), 
@@ -135,11 +137,6 @@ AliQAManager::AliQAManager(const Char_t * mode, const Char_t* gAliceFilename) :
     }
   }
   SetWriteExpert() ; 
-  fMode.ToLower() ; 
-  if (fMode.Contains("sim")) 
-               fMode.ReplaceAll("s", "S") ; 
-  else if (fMode.Contains("rec")) 
-    fMode.ReplaceAll("r", "R") ; 
 }
 
 //_____________________________________________________________________________
@@ -369,8 +366,8 @@ TCanvas ** AliQAManager::GetImage(Char_t * detName)
   // retrieves QA Image for the given detector
   TCanvas ** rv = NULL ; 
   Int_t detIndex = AliQAv1::GetDetIndex(detName) ; 
-  AliQADataMaker * qadm = GetQADataMaker(detIndex) ; 
-  rv = qadm->GetImage() ;
+  AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(detIndex) ; 
+  rv = qac->GetImage() ;
   return rv ; 
 }
 
@@ -522,6 +519,7 @@ void  AliQAManager::EndOfCycle(TObjArray * detArray)
        for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
                if (IsSelected(AliQAv1::GetDetName(iDet))) {
                        AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+                       AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(iDet) ;
                        if (!qadm) 
                                continue ;      
                        // skip non active detectors
@@ -530,7 +528,7 @@ void  AliQAManager::EndOfCycle(TObjArray * detArray)
                                if (!det || !det->IsActive())  
                                        continue ;
                        }
-      qadm->SetPrintImage(fPrintImage) ;
+      qac->SetPrintImage(fPrintImage) ;
       
                        for (UInt_t taskIndex = 0; taskIndex < AliQAv1::kNTASKINDEX; taskIndex++) {
                                if ( fTasks.Contains(Form("%d", taskIndex)) ) 
@@ -546,6 +544,7 @@ void  AliQAManager::EndOfCycle(TString detectors)
 {
        // End of cycle QADataMakers 
        
+  AliQAChecker::Instance()->SetRunNumber(fRunNumber) ; 
   if (fPrintImage) {
     TCanvas fakeCanvas ; 
     fakeCanvas.Print(Form("%s%s%d.%s[", AliQAv1::GetImageFileName(), GetMode(), fRunNumber, AliQAv1::GetImageFileFormat())) ; 
@@ -553,12 +552,13 @@ void  AliQAManager::EndOfCycle(TString detectors)
   for (UInt_t iDet = 0; iDet < fgkNDetectors ; iDet++) {
                if (IsSelected(AliQAv1::GetDetName(iDet))) {
                        AliQADataMaker * qadm = GetQADataMaker(iDet) ;
+      AliQACheckerBase * qac = AliQAChecker::Instance()->GetDetQAChecker(iDet) ;
                        if (!qadm) 
                                continue ;      
                        // skip non active detectors
       if (!detectors.Contains(AliQAv1::GetDetName(iDet))) 
         continue ;
-      qadm->SetPrintImage(fPrintImage) ;
+      qac->SetPrintImage(fPrintImage) ;
                for (UInt_t taskIndex = 0; taskIndex < AliQAv1::kNTASKINDEX; taskIndex++) {
                                if ( fTasks.Contains(Form("%d", taskIndex)) ) 
                                        qadm->EndOfCycle(AliQAv1::GetTaskIndex(AliQAv1::GetTaskName(taskIndex))) ;
@@ -1084,13 +1084,13 @@ void AliQAManager::Reset(const Bool_t sameCycle)
 }
 
 //_____________________________________________________________________________
-AliQAManager * AliQAManager::QAManager(const Char_t * mode, TMap *entryCache, Int_t run) 
+AliQAManager * AliQAManager::QAManager(AliQAv1::MODE_t mode, TMap *entryCache, Int_t run) 
 {
   // returns AliQAManager instance (singleton)
   
        if (!fgQAInstance) {
-    if ( (strcmp(mode, "sim") != 0) && (strcmp(mode, "rec") != 0) ) {
-      AliErrorClass("You must specify sim or rec") ; 
+    if ( (mode != AliQAv1::kSIMMODE) && (mode != AliQAv1::kRECMODE) ) {
+      AliErrorClass("You must specify kSIMMODE or kRECMODE") ; 
       return NULL ; 
     }
     fgQAInstance = new AliQAManager(mode) ;  
@@ -1106,37 +1106,7 @@ AliQAManager * AliQAManager::QAManager(const Char_t * mode, TMap *entryCache, In
 AliQAManager * AliQAManager::QAManager(AliQAv1::TASKINDEX_t task) 
 {
   // returns AliQAManager instance (singleton)
-  switch (task) {
-    case AliQAv1::kRAWS:
-      return QAManager("rec") ; 
-      break;
-    case AliQAv1::kHITS:
-      return QAManager("sim") ; 
-      break;
-    case AliQAv1::kSDIGITS:
-      return QAManager("sim") ; 
-      break;
-    case AliQAv1::kDIGITS:
-      return QAManager("sim") ; 
-      break;
-    case AliQAv1::kDIGITSR:
-      return QAManager("rec") ; 
-      break;
-    case AliQAv1::kRECPOINTS:
-      return QAManager("rec") ; 
-    case AliQAv1::kTRACKSEGMENTS:
-      return NULL ; 
-      break;
-    case AliQAv1::kRECPARTICLES:
-      return NULL ; 
-      break;
-    case AliQAv1::kESDS:
-      return QAManager("rec") ; 
-      break;
-    default:
-      return NULL ; 
-      break;
-  }
+  return QAManager(AliQAv1::Mode(task)) ; 
 }
 
 //_____________________________________________________________________________
index b23c853..b5b458b 100644 (file)
@@ -37,7 +37,7 @@ class AliCorrQADataMakerRec ;
 class AliQAManager : public AliCDBManager {
 private:
   AliQAManager() ; 
-       AliQAManager(const Char_t * mode, const Char_t * gAliceFilename = "galice.root") ; 
+       AliQAManager(AliQAv1::MODE_t mode, const Char_t * gAliceFilename = "galice.root") ; 
        AliQAManager(const AliQAManager & qas) ; 
        AliQAManager & operator = (const AliQAManager & qas) ; 
   ~AliQAManager() ; 
@@ -57,7 +57,7 @@ public:
        Bool_t           Merge(Int_t runNumber = -1, const char *fileName = NULL) const ;  
   void             MergeCustom() const ;
   Bool_t           MergeXML(const Char_t * collection, const Char_t * subFile = 0, const Char_t * outFile = 0) ; 
-  static           AliQAManager * QAManager(const Char_t * mode = "", TMap *entryCache = NULL, Int_t run = -1) ;
+  static           AliQAManager * QAManager(AliQAv1::MODE_t = AliQAv1::kNULLMODE, TMap *entryCache = NULL, Int_t run = -1) ;
   static           AliQAManager * QAManager(AliQAv1::TASKINDEX_t task) ;  
        void             Reset(const Bool_t sameCycle = kFALSE) ;  
        TString          Run(const Char_t * detectors, const AliQAv1::TASKINDEX_t taskIndex=AliQAv1::kNULLTASKINDEX, Bool_t const sameCycle = kFALSE, const Char_t * fileName = NULL) ; 
index 62ce6cd..d117b31 100644 (file)
@@ -60,6 +60,7 @@ TString        AliQAv1::fgDetNames[]           = {"ITS", "TPC", "TRD", "TOF", "P
                                                   "ZDC", "PMD", "T0", "VZERO", "ACORDE", "HLT", "Global", "CORR"} ;   
 TString        AliQAv1::fgGRPPath              = "GRP/GRP/Data" ; 
 TString        AliQAv1::fgTaskNames[]          = {"Raws", "Hits", "SDigits", "Digits", "DigitsR", "RecPoints", "TrackSegments", "RecParticles", "ESDs"} ;   
+TString        AliQAv1::fgModeNames[]          = {"", "Sim", "Rec"} ;   
 const TString  AliQAv1::fgkLabLocalFile        = "file://"  ; 
 const TString  AliQAv1::fgkLabLocalOCDB        = "local://" ;  
 const TString  AliQAv1::fgkLabAliEnOCDB        = "alien://" ;  
@@ -393,6 +394,43 @@ TFile * AliQAv1::GetQADataFile(const char * name, Int_t run)
 } 
 
 //_____________________________________________________________________________
+AliQAv1::MODE_t AliQAv1::Mode(TASKINDEX_t task) {
+  // return "rec" or "sim" depending on the task
+  
+  switch (task) {
+    case AliQAv1::kRAWS:
+      return kRECMODE ; 
+      break;
+    case AliQAv1::kHITS:
+      return kSIMMODE ; 
+      break;
+    case AliQAv1::kSDIGITS:
+      return kSIMMODE ; 
+      break;
+    case AliQAv1::kDIGITS:
+      return kSIMMODE ; 
+      break;
+    case AliQAv1::kDIGITSR:
+      return kRECMODE ; 
+      break;
+    case AliQAv1::kRECPOINTS:
+      return kRECMODE ; 
+      break ; 
+    case AliQAv1::kTRACKSEGMENTS:
+      return kRECMODE ; 
+      break;
+    case AliQAv1::kRECPARTICLES:
+      return kRECMODE ; 
+      break;
+    case AliQAv1::kESDS:
+      return kRECMODE ; 
+      break;
+    default:
+      break;
+  }
+}
+
+//_____________________________________________________________________________
 TFile * AliQAv1::GetQADataFile(const char * fileName)
 {
   // Open if necessary the Data file and return its pointer
index 4cc9d6b..8c91e60 100644 (file)
@@ -28,6 +28,7 @@ public:
     kNULLBit=-1, kINFO, kWARNING, kERROR, kFATAL, kNBIT };
   enum TASKINDEX_t {
     kNULLTASKINDEX=-1, kRAWS, kHITS, kSDIGITS, kDIGITS, kDIGITSR, kRECPOINTS, kTRACKSEGMENTS, kRECPARTICLES, kESDS, kNTASKINDEX };
+  enum MODE_t {kNULLMODE=0, kSIMMODE, kRECMODE};
   
   // Creators - destructors
   AliQAv1(); // beware singleton, not to be used
@@ -79,6 +80,7 @@ public:
   static const char  *   GetRefDataDirName() { return fgRefDataDirName.Data() ; }
   static     TASKINDEX_t GetTaskIndex(const char * name) ; 
   static       TString   GetTaskName(UInt_t tsk) { return fgTaskNames[tsk] ; }
+  static const char *    GetModeName(MODE_t mode) { return (mode == kSIMMODE || mode == kRECMODE) ? (fgModeNames[mode]).Data() : "" ; }
   Bool_t                 IsEventSpecieSet(AliRecoParam::EventSpecie_t es) const 
   {Int_t ibit=0; while(es!=1<<ibit) ++ibit; return fEventSpecies[ibit];}
   Bool_t                 IsEventSpecieSet(Int_t es) const { return fEventSpecies[es] ; }
@@ -87,6 +89,7 @@ public:
   Bool_t                 IsSetAny(DETECTORINDEX_t det, ALITASK_t tsk, AliRecoParam::EventSpecie_t es) const ;
   Bool_t                 IsSetAny(DETECTORINDEX_t det, AliRecoParam::EventSpecie_t es) const ;
   void                   Merge(TCollection * list) ; 
+  static MODE_t          Mode(TASKINDEX_t task) ;
   void                   Set(QABIT_t bit, AliRecoParam::EventSpecie_t es) ;
   void                   Set(QABIT_t bit, Int_t es) ;
   void                   SetEventSpecie(AliRecoParam::EventSpecie_t es) 
@@ -140,6 +143,7 @@ private:
   static TString        fgQAResultFileName     ; //! the output file where the QA results are stored  
   static TString        fgRTNames[]               ; //! list of Run Type names   
   static TString        fgTaskNames[]           ; //! list of tasks names   
+  static TString        fgModeNames[]           ; //! list of mode names   
   static const TString  fgkExpert              ; //! name for the expert directory
   static const UInt_t   fgkExpertBit           ; //! TObject bit identifing the object as "expert"
   static const UInt_t   fgkImageBit            ; //! TObject bit identifing the object to be plotted on the QA image
index 1f55951..35fc17f 100644 (file)
@@ -545,7 +545,7 @@ void AliReconstruction::InitQA()
   if (fInitQACalled) return;
   fInitQACalled = kTRUE;
   
-  AliQAManager * qam = AliQAManager::QAManager("rec") ; 
+  AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kRECMODE) ; 
   if (fWriteQAExpertData)
     qam->SetWriteExpert() ; 
  
index 1b505b6..02f3bb9 100644 (file)
@@ -204,7 +204,7 @@ AliSimulation::AliSimulation(const char* configFileName,
   SetGAliceFile("galice.root");
   
 // for QA
-       AliQAManager * qam = AliQAManager::QAManager("sim") ; 
+       AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kSIMMODE) ; 
        qam->SetActiveDetectors(fQADetectors) ; 
        fQATasks = Form("%d %d %d", AliQAv1::kHITS, AliQAv1::kSDIGITS, AliQAv1::kDIGITS) ; 
        qam->SetTasks(fQATasks) ;       
@@ -251,7 +251,7 @@ void AliSimulation::InitQA()
   if (fInitCDBCalled) return;
   fInitCDBCalled = kTRUE;
 
-  AliQAManager * qam = AliQAManager::QAManager("sim") ; 
+  AliQAManager * qam = AliQAManager::QAManager(AliQAv1::kSIMMODE) ; 
   qam->SetActiveDetectors(fQADetectors) ; 
   fQATasks = Form("%d %d %d", AliQAv1::kHITS, AliQAv1::kSDIGITS, AliQAv1::kDIGITS) ; 
   qam->SetTasks(fQATasks) ;
index c88e6d9..1840af8 100644 (file)
@@ -1,4 +1,4 @@
-void sim(Int_t nev=20) {
+void sim(Int_t nev=2) {
   if (gSystem->Getenv("EVENT"))
    nev = atoi(gSystem->Getenv("EVENT")) ;