Changed the directory structure of QA reference data in OCDB
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 8 Dec 2007 00:28:44 +0000 (00:28 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 8 Dec 2007 00:28:44 +0000 (00:28 +0000)
STEER/AliQA.cxx
STEER/AliQA.h
STEER/AliQAChecker.cxx
STEER/AliQAChecker.h
STEER/AliQACheckerBase.h
STEER/AliQADataMaker.cxx
STEER/AliQADataMakerSteer.cxx
STEER/AliQADataMakerSteer.h

index 9ed7f5fa65d46c2ceff1555bba6cd2187908663f..2f11f96740cf7f290333116de13db6cead0980d0 100644 (file)
 
 
 ClassImp(AliQA)
-AliQA    * AliQA::fgQA                 = 0x0 ;
-TFile    * AliQA::fgQADataFile         = 0x0 ;   
-TString    AliQA::fgQADataFileName     = "QA" ;  // will transform into Det.QA.run.cycle.root  
-TFile    * AliQA::fgQARefFile          = 0x0 ;   
-TString    AliQA::fgQARefDirName          = "" ; 
-TString    AliQA::fgQARefFileName      = "QA.root" ;
-TFile    * AliQA::fgQAResultFile       = 0x0 ;  
-TString    AliQA::fgQAResultDirName    = "" ;  
-TString    AliQA::fgQAResultFileName   = "QA.root" ; 
-TString    AliQA::fgDetNames[]         = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD",
-                                                                                "ZDC", "PMD", "T0", "VZERO", "ACORDE", "HLT"} ;   
-TString       AliQA::fgTaskNames[]     = {"Raws", "Hits", "SDigits", "Digits", "RecPoints", "TrackSegments", "RecParticles", "ESDs"} ;   
-const TString AliQA::fkgLabLocalFile          = "file://"  ; 
-const TString AliQA::fkgLabLocalOCDB          = "local://" ;  
-const TString AliQA::fkgLabAliEnOCDB          = "alien://" ;  
-const TString AliQA::fkgRefFileName    = "QA.root" ; 
-const TString AliQA::fkgRefOCDBDirName = "QA/Ref"  ; 
+AliQA    * AliQA::fgQA                   = 0x0 ;
+TFile    * AliQA::fgQADataFile           = 0x0 ;   
+TString    AliQA::fgQADataFileName       = "QA" ;  // will transform into Det.QA.run.cycle.root  
+TFile    * AliQA::fgQARefFile            = 0x0 ;   
+TString    AliQA::fgQARefDirName            = "" ; 
+TString    AliQA::fgQARefFileName        = "QA.root" ;
+TFile    * AliQA::fgQAResultFile         = 0x0 ;  
+TString    AliQA::fgQAResultDirName      = "" ;  
+TString    AliQA::fgQAResultFileName     = "QA.root" ; 
+TString    AliQA::fgDetNames[]           = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD",
+                                                                                   "ZDC", "PMD", "T0", "VZERO", "ACORDE", "HLT"} ;   
+TString       AliQA::fgTaskNames[]       = {"Raws", "Hits", "SDigits", "Digits", "RecPoints", "TrackSegments", "RecParticles", "ESDs"} ;   
+const TString AliQA::fkgLabLocalFile     = "file://"  ; 
+const TString AliQA::fkgLabLocalOCDB     = "local://" ;  
+const TString AliQA::fkgLabAliEnOCDB     = "alien://" ;  
+const TString AliQA::fkgRefFileName      = "QA.root" ; 
+const TString AliQA::fkgQAOCDBDirName    = "QA"  ; 
+const TString AliQA::fkgRefOCDBDirName   = "Ref"  ; 
+const TString AliQA::fkgQARefOCDBDefault = "local://$ALICE_ROOT"  ; 
 //____________________________________________________________________________
 AliQA::AliQA() : 
   TNamed("", ""), 
@@ -452,7 +454,7 @@ void AliQA::SetQARefStorage(const char * name)
   if ( fgQARefDirName.Contains(fkgLabLocalFile) )
         fgQARefFileName =  fkgRefFileName ; 
   else if (    fgQARefDirName.Contains(fkgLabLocalOCDB) )
-         fgQARefFileName =  fkgRefOCDBDirName ; 
+         fgQARefFileName =  fkgQAOCDBDirName ; 
   else {
          printf("ERROR: %s is an invalid storage definition\n", name) ; 
          fgQARefDirName  = "" ; 
index adc0026f21dcb0968f11e8c8e816a9017186228f..42a150e4ed74e7e7d9b3ee0609a14b957b2e79cb 100644 (file)
@@ -54,9 +54,11 @@ public:
        static TFile *             GetQADataFile(const char * fileName) ;
        static TFile *         GetQAResultFile() ; 
        static const char  *   GetQAResultFileName() { return (fgQAResultDirName + fgQAResultFileName).Data() ; }
+       static const char  *   GetQARefDefaultStorage() { return fkgQARefOCDBDefault.Data() ; }
        static const char  *   GetQARefFileName() { return fgQARefFileName ; }
        static const char  *   GetQARefStorage() { return fgQARefDirName.Data() ; }
-       static const char  *   GetQARefOCDBDirName() { return fkgRefOCDBDirName .Data() ; }
+       static const char  *   GetQAOCDBDirName() { return fkgQAOCDBDirName.Data() ; }
+       static const char  *   GetRefOCDBDirName() { return fkgRefOCDBDirName.Data() ; }
        const Bool_t           IsSet(DETECTORINDEX det, ALITASK tsk, QABIT bit) const ;
        void                   Set(QABIT bit) ;
        static void                        SetQAResultDirName(const char * name) ; 
@@ -99,7 +101,9 @@ private:
        static const TString fkgLabLocalOCDB    ; //! label to identify a file as local OCDB 
        static const TString fkgLabAliEnOCDB    ; //! label to identify a file as AliEn OCDB 
        static const TString fkgRefFileName     ; //! name of Reference File Name 
+       static const TString fkgQAOCDBDirName   ; //! name of Reference directory name in OCDB          
        static const TString fkgRefOCDBDirName  ; //! name of Reference directory name in OCDB          
+       static const TString fkgQARefOCDBDefault; //! default storage for QA in OCDB 
 
  ClassDef(AliQA,1)  //ALICE Quality Assurance Object
 };
index 2bdbe49afe17502cfefeacb7db54d3f72adad3fd..db1de0ea0d03bd7f1b5bd93117b6ce04f8e5dbd2 100644 (file)
@@ -125,7 +125,7 @@ AliQAChecker::~AliQAChecker()
 
 
 //_____________________________________________________________________________
-void AliQAChecker::GetRefSubDir(const char * det, const char * task, TDirectory *& dirFile, TList *& dirOCDB)     
+void AliQAChecker::GetRefSubDir(const char * det, const char * task, TDirectory *& dirFile, TObjArray *& dirOCDB)     
 { 
   // Opens and returns the file with the reference data 
        
@@ -153,12 +153,18 @@ void AliQAChecker::GetRefSubDir(const char * det, const char * task, TDirectory
                }  
        } else if (refStorage.Contains(AliQA::GetLabLocalOCDB()) || refStorage.Contains(AliQA::GetLabAliEnOCDB())) {    
                AliCDBManager* man = AliCDBManager::Instance() ; 
+               if ( ! man->IsDefaultStorageSet() ) {
+                       man->SetDefaultStorage(AliQA::GetQARefDefaultStorage()) ; 
+                       man->SetSpecificStorage(Form("%s/*", AliQA::GetQAOCDBDirName()), AliQA::GetQARefStorage()) ; 
+               }
                char detOCDBDir[20] ; 
-               sprintf(detOCDBDir, "%s/%s", AliQA::GetQARefFileName(), det) ; 
-               AliCDBEntry * entry = man->Get(detOCDBDir) ;
-               TList * listDetQAD = dynamic_cast<TList *>(entry->GetObject()) ;
-               if ( listDetQAD ) 
-                       dirOCDB = dynamic_cast<TList *>(listDetQAD->FindObject(task)) ; 
+               sprintf(detOCDBDir, "%s/%s/%s", AliQA::GetQAOCDBDirName(), det, AliQA::GetRefOCDBDirName()) ; 
+               AliCDBEntry * entry = man->Get(detOCDBDir, 0) ; //FIXME 0 --> RUN NUMBER
+               if (entry) {
+                       TList * listDetQAD = dynamic_cast<TList *>(entry->GetObject()) ;
+                       if ( listDetQAD ) 
+                               dirOCDB = dynamic_cast<TObjArray *>(listDetQAD->FindObject(task)) ; 
+               }
        }
 }
 
@@ -232,8 +238,8 @@ Bool_t AliQAChecker::Run(const char * fileName)
                index = AliQA::kESD ; 
       qac->Init(AliQA::DETECTORINDEX(det)) ; 
 
-         TDirectory * refDir     = NULL ; 
-         TList * refOCDBDir      = NULL ;      
+         TDirectory * refDir    = NULL ; 
+         TObjArray * refOCDBDir = NULL ;       
          GetRefSubDir(detNameQA.Data(), taskName.Data(), refDir, refOCDBDir) ;
          if ( refDir || refOCDBDir) {
                  qac->SetRefandData(refDir, refOCDBDir, taskDir) ;
@@ -284,8 +290,8 @@ Bool_t AliQAChecker::Run(AliQA::DETECTORINDEX det, AliQA::TASKINDEX task, TObjAr
   else if ( task == AliQA::kESDS ) 
                index = AliQA::kESD ; 
 
-  TDirectory * refDir = NULL ; 
-  TList *refOCDBDir   = NULL ; 
+  TDirectory * refDir    = NULL ; 
+  TObjArray * refOCDBDir = NULL ;      
        GetRefSubDir(AliQA::GetDetName(det), AliQA::GetTaskName(task), refDir, refOCDBDir) ;
   if ( refDir || refOCDBDir) {
          qac->Init(det) ; 
index 3cf384eb349df934fe47341fad8f8aba8cdc2d30..012eedd6933aee33b9a8f50e57a60a7f46190d0a 100644 (file)
@@ -31,7 +31,7 @@ public:
 
   static  AliQAChecker * Instance() ;
   AliQACheckerBase *     GetDetQAChecker(Int_t det) ; 
-  void                   GetRefSubDir(const char * det, const char * task, TDirectory *& dirFile, TList *& dirOCDB) ;
+  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) ; 
index 0ae34ffa8bd6b66d85de8cdb75920435ed36769e..63a7c2c48383fa1e2f2c1e92ece051791a9d84fe 100644 (file)
@@ -35,7 +35,7 @@ public:
 
   void   Init(const AliQA::DETECTORINDEX det) ; 
   void   Run(AliQA::ALITASK tsk, TObjArray * list=0x0); 
-  void   SetRefandData(TDirectory * ref, TList * refOCDB, TDirectory * data=NULL) { fRefSubDir = ref ;  fRefOCDBSubDir = refOCDB, fDataSubDir = data ; }
+  void   SetRefandData(TDirectory * ref, TObjArray * refOCDB, TDirectory * data=NULL) { fRefSubDir = ref ;  fRefOCDBSubDir = refOCDB, fDataSubDir = data ; }
 
 protected:
   virtual const Double_t Check() ;
@@ -46,7 +46,7 @@ protected:
 
   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
-  TList       * fRefOCDBSubDir ; //! Entry in OCDB for the current detector 
+  TObjArray   * fRefOCDBSubDir ; //! Entry in OCDB for the current detector 
 
   ClassDef(AliQACheckerBase,1)  // description 
 
index 7410980452f2c850187ad69005f4368796271fb9..752d4e14467da013f313987c5ade4f575690ac98 100644 (file)
@@ -97,7 +97,7 @@ Int_t AliQADataMaker::Add2List(TH1 * hist, const Int_t index, TObjArray * list)
 { 
        // Set histograms memory resident and add to the list 
        hist->SetDirectory(0) ; 
-       list->AddAt(hist, index) ; 
+       list->AddAtAndExpand(hist, index) ; 
        return list->GetLast() ; 
 }
 
@@ -245,8 +245,8 @@ void AliQADataMaker::Exec(AliQA::TASKINDEX task, TObject * data)
                                AliError("Wrong type of esd container") ; 
                        break ;
                }  
-               case AliQA::kNTASKINDEX:
-                       break ;  
+               case AliQA::kNTASKINDEX:
+               break ;  
        }         
 }
 
index 6c0df970a9f76617ba4754bafafbeaffeebdaccd..9047bcd8a10df75cdd03f7cd796332db24d035c2 100644 (file)
@@ -238,20 +238,27 @@ Bool_t AliQADataMakerSteer::Finish(const AliQA::TASKINDEX taskIndex)
 }
 
 //_____________________________________________________________________________
-TList * AliQADataMakerSteer::GetFromOCDB(AliQA::DETECTORINDEX det, AliQA::TASKINDEX task) const 
+TObjArray * AliQADataMakerSteer::GetFromOCDB(AliQA::DETECTORINDEX det, AliQA::TASKINDEX task) const 
 {
        // Retrieve the list of QA data for a given detector and a given task 
-       TList * rv = NULL ;
+       TObjArray * rv = NULL ;
+       TString tmp(AliQA::GetQARefStorage()) ; 
+       if ( tmp.IsNull() ) { 
+               AliError("No storage defined, use AliQA::SetQARefStorage") ; 
+               return NULL ; 
+       }       
        AliCDBManager* man = AliCDBManager::Instance() ; 
-       man->SetDefaultStorage("local://TestCDB")  ; 
-       char detOCDBDir[20] ; 
-       sprintf(detOCDBDir, "QA/Ref/%s", AliQA::GetDetName((Int_t)det)) ; 
-       AliInfo(Form("Retrieving reference data from local://TestCDB/%s %s", detOCDBDir, AliQA::GetTaskName(task).Data())) ; 
-       AliCDBEntry* entry = man->Get(detOCDBDir,0) ;
+       if ( ! man->IsDefaultStorageSet() ) {
+               man->SetDefaultStorage(AliQA::GetQARefDefaultStorage()) ; 
+               man->SetSpecificStorage(Form("%s/*", AliQA::GetQAOCDBDirName()), AliQA::GetQARefStorage()) ;
+       }
+       char detOCDBDir[10] ; 
+       sprintf(detOCDBDir, "%s/%s/%s", AliQA::GetQAOCDBDirName(), AliQA::GetDetName((Int_t)det), AliQA::GetRefOCDBDirName()) ; 
+       AliInfo(Form("Retrieving reference data from %s/%s for %s", AliQA::GetQARefStorage(), detOCDBDir, AliQA::GetTaskName(task).Data())) ; 
+       AliCDBEntry* entry = man->Get(detOCDBDir, 0) ; //FIXME 0 --> Run Number
        TList * listDetQAD = dynamic_cast<TList *>(entry->GetObject()) ;
        if ( listDetQAD ) 
-               rv = dynamic_cast<TList *>(listDetQAD->FindObject(AliQA::GetTaskName(task))) ; 
-
+               rv = dynamic_cast<TObjArray *>(listDetQAD->FindObject(AliQA::GetTaskName(task))) ; 
        return rv ; 
 }
 
@@ -632,14 +639,14 @@ Bool_t AliQADataMakerSteer::Save2OCDB(const Int_t runNumber, const Int_t cycleNu
                char inputFileName[20] ; 
                sprintf(inputFileName, "Merged.%s.%d.root", AliQA::GetQADataFileName(), runNumber) ; 
                inputFile = TFile::Open(inputFileName) ; 
-               rv = SaveIt2OCDB(inputFile) ; 
+               rv = SaveIt2OCDB(runNumber, inputFile) ; 
        } else {
                for (Int_t index = 0; index < AliQA::kNDET; index++) {
                        if (sdet.Contains(AliQA::GetDetName(index))) {
                                char inputFileName[20] ; 
                                sprintf(inputFileName, "%s.%s.%d.%d.root", AliQA::GetDetName(index), AliQA::GetQADataFileName(), runNumber, cycleNumber) ; 
                                inputFile = TFile::Open(inputFileName) ;                        
-                               rv *= SaveIt2OCDB(inputFile) ; 
+                               rv *= SaveIt2OCDB(runNumber, inputFile) ; 
                        }
                }
        }
@@ -647,21 +654,23 @@ Bool_t AliQADataMakerSteer::Save2OCDB(const Int_t runNumber, const Int_t cycleNu
 }
 
 //_____________________________________________________________________________
-Bool_t AliQADataMakerSteer::SaveIt2OCDB(TFile * inputFile) const
+Bool_t AliQADataMakerSteer::SaveIt2OCDB(const Int_t runNumber, TFile * inputFile) const
 {
        // reads the TH1 from file and adds it to appropriate list before saving to OCDB
        Bool_t rv = kTRUE ;
        AliInfo(Form("Saving TH1s in %s to %s", inputFile->GetName(), AliQA::GetQARefStorage())) ; 
        AliCDBManager* man = AliCDBManager::Instance() ; 
-       man->SetDefaultStorage(AliQA::GetQARefStorage()) ; 
-
+       if ( ! man->IsDefaultStorageSet() ) {
+               man->SetDefaultStorage(AliQA::GetQARefDefaultStorage()) ; 
+               man->SetSpecificStorage(Form("%s/*", AliQA::GetQAOCDBDirName()), AliQA::GetQARefStorage()) ; 
+       }
        for ( Int_t detIndex = 0 ; detIndex < AliQA::kNDET ; detIndex++) {
                TDirectory * detDir = inputFile->GetDirectory(AliQA::GetDetName(detIndex)) ; 
                if ( detDir ) {
                        AliInfo(Form("Entering %s", detDir->GetName())) ;
-                       char detOCDBDir[20] ; 
-                       sprintf(detOCDBDir, "QA/Ref/%s", AliQA::GetDetName(detIndex)) ; 
-                       AliCDBId idr(detOCDBDir,0,999999999)  ;
+                       char detOCDBDir[20] ;
+                       sprintf(detOCDBDir, "%s/%s/%s", AliQA::GetQAOCDBDirName(), AliQA::GetDetName(detIndex), AliQA::GetRefOCDBDirName()) ; 
+                       AliCDBId idr(detOCDBDir, runNumber, 999999999)  ;
                        TList * listDetQAD = new TList() ;
                        char listName[20] ; 
                        sprintf(listName, "%s QA data Reference", AliQA::GetDetName(detIndex)) ; 
@@ -672,7 +681,7 @@ Bool_t AliQADataMakerSteer::SaveIt2OCDB(TFile * inputFile) const
                        while ( (taskKey = dynamic_cast<TKey*>(nextTask())) ) {
                                TDirectory * taskDir = detDir->GetDirectory(taskKey->GetName()) ; 
                                AliInfo(Form("Saving %s", taskDir->GetName())) ; 
-                               TList * listTaskQAD = new TList() ; 
+                               TObjArray * listTaskQAD = new TObjArray(100) ; 
                                listTaskQAD->SetName(taskKey->GetName()) ;
                                listDetQAD->Add(listTaskQAD) ; 
                                TList * histList = taskDir->GetListOfKeys() ; 
index cf4cd811c114b75eeb19eafcefeab974eb6aff87..902c6f15fff5217668f63ef281f8f23e5c818c86 100644 (file)
@@ -36,7 +36,7 @@ public:
        AliQADataMakerSteer(const AliQADataMakerSteer & qas) ; 
        AliQADataMakerSteer & operator = (const AliQADataMakerSteer & qas) ; 
        virtual ~AliQADataMakerSteer() ; 
-    TList * GetFromOCDB(AliQA::DETECTORINDEX det, AliQA::TASKINDEX task) const ; 
+    TObjArray * GetFromOCDB(AliQA::DETECTORINDEX det, AliQA::TASKINDEX task) const ; 
        Bool_t  Merge(const Int_t runNumber = -1) const ;  
     void    Reset() ;  
        Bool_t  Run(const char * detectors, const AliQA::TASKINDEX taskIndex, const char * fileName = NULL) ; 
@@ -54,7 +54,7 @@ private:
        Bool_t           InitRunLoader() ; 
        Bool_t           IsSelected(const char * detName)  ;
        Bool_t           Finish(const AliQA::TASKINDEX taskIndex) ;
-       Bool_t           SaveIt2OCDB(TFile * inputFile) const ;  
+       Bool_t           SaveIt2OCDB(const Int_t runNumber, TFile * inputFile) const ;  
 
  
        Bool_t                     fCycleSame ;                    //! true if 2 consecutive data making for a same detector