ALL QA naming conventions and files in AliQA
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Nov 2007 11:19:56 +0000 (11:19 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 7 Nov 2007 11:19:56 +0000 (11:19 +0000)
STEER/AliQA.cxx
STEER/AliQA.h

index 19904bdb186c7745639d40ba0bded259100e0b59..95872dc5e6048951954d4f735d03642f531c2f5a 100644 (file)
 
 ClassImp(AliQA)
   AliQA    * AliQA::fgQA                = 0x0 ;
-  TFile    * AliQA::fgDataFile          = 0x0 ;   
-  TString    AliQA::fgDataName          = "QA" ;  // will transform into Det.QA.run.cycle.root  
+  TFile    * AliQA::fgQADataFile        = 0x0 ;   
+  TString    AliQA::fgQADataFileName    = "QA" ;  // will transform into Det.QA.run.cycle.root  
+  TFile    * AliQA::fgQARefFile         = 0x0 ;   
   TString    AliQA::fgQARefDirName             = "local://Ref/" ; 
   TString    AliQA::fgQARefFileName     = "QA.root" ;
+  TFile    * AliQA::fgQAResultFile      = 0x0 ;  
   TString    AliQA::fgQAResultDirName   = "local://RUN/" ;  
   TString    AliQA::fgQAResultFileName  = "QA.root" ; 
   TString    AliQA::fgDetNames[]  = {"ITS", "TPC", "TRD", "TOF", "PHOS", "HMPID", "EMCAL", "MUON", "FMD",
@@ -152,6 +154,21 @@ const Bool_t AliQA::AddQAData2CDB(const char * defSto) const
        return rv ; 
 }  
 
+//_______________________________________________________________
+void AliQA::Close() 
+{
+       // close the open files
+       if (fgQADataFile) 
+               if (fgQADataFile->IsOpen())
+                       fgQADataFile->Close() ; 
+       if (fgQAResultFile) 
+               if (fgQAResultFile->IsOpen()) 
+                       fgQAResultFile->Close() ;
+       if (fgQARefFile)
+               if (fgQARefFile->IsOpen())
+                       fgQARefFile->Close() ; 
+} 
+
 //_______________________________________________________________
 const Bool_t AliQA::CheckFatal() const
 {
@@ -195,43 +212,8 @@ const Bool_t AliQA::CheckRange(QABIT bit) const
   return rv ;
 }
 
-//_______________________________________________________________
-TFile * AliQA::GetQADMOutFile(const char * name, const Int_t run, const Int_t cycle) 
-{
-  // opens the file to store the detectors Quality Assurance Data Maker results
-  char temp[100] ; 
-  sprintf(temp, "%s.%s.%d.%d.root", name, fgDataName.Data(), run, cycle) ; 
-  TString opt ; 
-  if (! fgDataFile ) {     
-    if  (gSystem->AccessPathName(temp))
-      opt = "NEW" ;
-    else 
-      opt = "UPDATE" ; 
-    fgDataFile = TFile::Open(temp, opt.Data()) ;
-  } else {
-   if ( (strcmp(temp, fgDataFile->GetName()) != 0) ) {
-     if  (gSystem->AccessPathName(temp))
-      opt = "NEW" ;
-    else 
-      opt = "UPDATE" ; 
-    fgDataFile = TFile::Open(temp, opt.Data()) ;
-   }
-  }
-  return fgDataFile ; 
-} 
 
 
-//_______________________________________________________________
-const char * AliQA::GetDetName(Int_t det) 
-{
-       // returns the detector name corresponding to a given index (needed in a loop)
-
-       if ( det >= 0 &&  det < kNDET) 
-               return (fgDetNames[det]).Data() ; 
-       else 
-               return NULL ; 
-}
-
 //_______________________________________________________________
 const char * AliQA::GetAliTaskName(ALITASK tsk)
 {
@@ -262,34 +244,94 @@ const char * AliQA::GetAliTaskName(ALITASK tsk)
   return tskName.Data() ;
 }
 
+//_______________________________________________________________
+const char * AliQA::GetDetName(Int_t det) 
+{
+       // returns the detector name corresponding to a given index (needed in a loop)
+
+       if ( det >= 0 &&  det < kNDET) 
+               return (fgDetNames[det]).Data() ; 
+       else 
+               return NULL ; 
+}
+
+//_______________________________________________________________
+TFile * AliQA::GetQADataFile(const char * name, const Int_t run, const Int_t cycle) 
+{
+  // opens the file to store the detectors Quality Assurance Data Maker results
+  char temp[100] ; 
+  sprintf(temp, "%s.%s.%d.%d.root", name, fgQADataFileName.Data(), run, cycle) ; 
+  TString opt ; 
+  if (! fgQADataFile ) {     
+    if  (gSystem->AccessPathName(temp))
+      opt = "NEW" ;
+    else 
+      opt = "UPDATE" ; 
+    fgQADataFile = TFile::Open(temp, opt.Data()) ;
+  } else {
+   if ( (strcmp(temp, fgQADataFile->GetName()) != 0) ) {
+     if  (gSystem->AccessPathName(temp))
+      opt = "NEW" ;
+    else 
+      opt = "UPDATE" ; 
+    fgQADataFile = TFile::Open(temp, opt.Data()) ;
+   }
+  }
+  return fgQADataFile ; 
+} 
+
+//_____________________________________________________________________________
+TFile * AliQA::GetQADataFile(const char * fileName)
+{
+  // Open if necessary the Data file and return its pointer
+
+  if (!fgQADataFile) 
+       if (!fileName) 
+               fileName = AliQA::GetQADataFileName() ; 
+       if  (!gSystem->AccessPathName(fileName)) {
+               fgQADataFile =  TFile::Open(fileName) ;
+       } else {
+               printf("File %s not found", fileName) ;
+               exit(1) ;  
+       }
+  return fgQADataFile ; 
+}
+
 //_______________________________________________________________
 TFile * AliQA::GetQARefFile() 
 {
   // opens the file whwre Quality Assurance Reference Data are stored
 
-       TString fileName(fgQARefDirName + fgQARefFileName) ; 
+       if (!fgQARefFile) {
+               TString fileName(fgQARefDirName + fgQARefFileName) ; 
 
-       if ( fileName.Contains("local://")) 
-               fileName.ReplaceAll("local://", "") ;
+               if ( fileName.Contains("local://")) 
+                       fileName.ReplaceAll("local://", "") ;
 
-       return TFile::Open(fileName.Data(), "READ") ;
-} 
+               fgQARefFile = TFile::Open(fileName.Data(), "READ") ;
+       }
+       return fgQARefFile ; 
+}
 
 //_______________________________________________________________
 TFile * AliQA::GetQAResultFile() 
 {
   // opens the file to store the  Quality Assurance Data Checker results
    
-       TString fileName(fgQAResultDirName + fgQAResultFileName) ; 
-       if ( fileName.Contains("local://")) 
-               fileName.ReplaceAll("local://", "") ;
-       TString opt("") ; 
-       if ( !gSystem->AccessPathName(fileName) )
-               opt = "UPDATE" ; 
-       else 
-               opt = "NEW" ; 
+       if (!fgQAResultFile) { 
+               TString fileName(fgQAResultDirName + fgQAResultFileName) ; 
+               if ( fileName.Contains("local://")) 
+                       fileName.ReplaceAll("local://", "") ;
+               TString opt("") ; 
+               if ( !gSystem->AccessPathName(fileName) )
+                       opt = "UPDATE" ; 
+               else 
+                       opt = "NEW" ; 
       
-       return TFile::Open(fileName, opt) ;   
+               fgQAResultFile = TFile::Open(fileName, opt) ;   
+       }
+       
+       return fgQAResultFile ;
 }
 
 //_______________________________________________________________
@@ -323,7 +365,7 @@ AliQA * AliQA::Instance(const DETECTORINDEX det)
   // Get an instance of the singleton. The only authorized way to call the ctor
   
   if ( ! fgQA) {
-    TFile * f = AliQAChecker::GetQAResultFile() ; 
+    TFile * f = GetQAResultFile() ; 
        fgQA = dynamic_cast<AliQA *>(f->Get("QA")) ; 
     if ( ! fgQA ) 
                fgQA = new AliQA(det) ;
index 9394732ac45b9a621a20cf2b5d69db1fa87be9c7..c4f3856e5d00cd6274ed0996ac72f68f132f218b 100644 (file)
@@ -45,12 +45,14 @@ public:
   static  AliQA *   Instance(const ALITASK tsk) ;
   const Bool_t           AddQAData2CDB(const char * defSto) const ;
   const Bool_t           CheckFatal() const ;
+  static void            Close() ; 
   static const char *    GetAliTaskName(ALITASK tsk) ;
-  static const char *    GetDataName() { return fgDataName.Data() ; }
   static const TString   GetDetName(DETECTORINDEX det) { return fgDetNames[det] ; }
   static const TString   GetTaskName(TASKINDEX tsk) { return fgTaskNames[tsk] ; }
   static const char *    GetDetName(Int_t det) ;
-  static TFile *         GetQADMOutFile(const char * name, const Int_t run, const Int_t cycle) ; 
+  static const char *    GetQADataFileName() { return fgQADataFileName.Data() ; }
+  static TFile *         GetQADataFile(const char * name, const Int_t run, const Int_t cycle) ; 
+  static TFile *                GetQADataFile(const char * fileName) ;
   static TFile *         GetQAResultFile() ; 
   static TFile *         GetQARefFile() ; 
   static const char  *   GetQAResultFileName() { return (fgQAResultDirName + fgQAResultFileName).Data() ; }
@@ -83,13 +85,15 @@ private:
   ULong_t    *       fQA                               ; //[fNdet] the status word 4 bits for SIM, REC, ESD, ANA each
   DETECTORINDEX      fDet                              ; //!  the current detector (ITS, TPC, ....)
   ALITASK            fTask                             ; //!  the current environment (SIM, REC, ESD, ANA)
-  static TFile *     fgDataFile                        ; //! the output file where the quality assurance maker store their results
-  static TString     fgDataName                        ; //! the name of the file where the quality assurance maker store their results
   static TString     fgDetNames[]              ; //! list of detector names   
-  static TString     fgQAResultDirName  ; //! the location of the output file where the QA results are stored  
-  static TString     fgQAResultFileName ; //! the output file where the QA results are stored  
+  static TFile *     fgQADataFile              ; //! the output file where the quality assurance maker store their results
+  static TString     fgQADataFileName  ; //! the name of the file where the quality assurance maker store their results
+  static TFile *     fgQARefFile               ; //! the output file where the quality assurance maker store their results
   static TString     fgQARefDirName            ; //! name of directory where to find the reference data file
   static TString     fgQARefFileName   ; //! file name where to find the reference data
+  static TFile *     fgQAResultFile     ; //! File where to find the QA result
+  static TString     fgQAResultDirName  ; //! the location of the output file where the QA results are stored  
+  static TString     fgQAResultFileName ; //! the output file where the QA results are stored  
   static TString     fgTaskNames[]             ; //! list of tasks names   
 
  ClassDef(AliQA,1)  //ALICE Quality Assurance Object