]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliQA.cxx
M AliTPCcalibDButil.cxx - Protection agains missing Offset calibration...
[u/mrichter/AliRoot.git] / STEER / AliQA.cxx
index 7c95ac2dd0bcb9df0dd93ffd2e617f8eddb0a32f..23543845ca9da37f8da744f6136d371eb6ce7474 100644 (file)
@@ -34,6 +34,7 @@
 
 #include <cstdlib>
 // --- ROOT system ---
+#include <TClass.h>
 #include <TFile.h>
 #include <TSystem.h>
 #include <TROOT.h>
@@ -50,7 +51,7 @@ 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::fgQARefDirName              = "" ; 
 TString    AliQA::fgQARefFileName        = "QA.root" ;
 TFile    * AliQA::fgQAResultFile         = 0x0 ;  
 TString    AliQA::fgQAResultDirName      = "" ;  
@@ -67,15 +68,19 @@ TString    AliQA::fgRTNames[]            = {"UNKNOWN", "AUTO_TEST", "CALIBRATION
                                                                                                                                                                                "STANDALONE_EMD", "STANDALONE_LASER", "STANDALONE_MB", "STANDALONE_PEDESTAL", 
                                                                                                                                                                                "STANDALONE_SEMICENTRAL", "STANDALONE_PULSER" } ;   
 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::fkgQAName           = "QA"  ; 
-const TString AliQA::fkgQACorrNtName     = "CorrQA" ;  
-const TString AliQA::fkgRefOCDBDirName   = "Ref"  ; 
-TString AliQA::fkgRefDataDirName        = ""  ; 
-const TString AliQA::fkgQARefOCDBDefault = "alien://folder=/alice/QA/20"  ; 
+const TString AliQA::fgkLabLocalFile     = "file://"  ; 
+const TString AliQA::fgkLabLocalOCDB     = "local://" ;  
+const TString AliQA::fgkLabAliEnOCDB     = "alien://" ;  
+const TString AliQA::fgkRefFileName      = "QA.root" ; 
+const TString AliQA::fgkQAName           = "QA"  ; 
+const TString AliQA::fgkQACorrNtName     = "CorrQA" ;  
+const TString AliQA::fgkRefOCDBDirName   = "Ref"  ; 
+TString AliQA::fgkRefDataDirName              = ""  ; 
+const TString AliQA::fgkQARefOCDBDefault = "alien://folder=/alice/QA/20"  ; 
+const TString AliQA::fgkExpert           = "Expert" ; 
+const UInt_t  AliQA::fgkExpertBit        = 16 ; 
+const UInt_t  AliQA::fgkQABit            = 17 ; 
+
 //____________________________________________________________________________
 AliQA::AliQA() : 
   TNamed("", ""), 
@@ -96,11 +101,13 @@ AliQA::AliQA() :
 AliQA::AliQA(const AliQA& qa) :
   TNamed(qa),
   fNdet(qa.fNdet), 
-  fQA(qa.fQA), 
+  fQA(new ULong_t[qa.fNdet]), 
   fDet(qa.fDet),
   fTask(qa.fTask)
 { 
   // cpy ctor
+  for (Int_t index = 0 ; index < fNdet ; index++) 
+       fQA[index] = qa.fQA[index] ; 
 }
 
 //_____________________________________________________________________________
@@ -172,7 +179,7 @@ void AliQA::Close()
 } 
 
 //_______________________________________________________________
-const Bool_t AliQA::CheckFatal() const
+Bool_t AliQA::CheckFatal() const
 {
   // check if any FATAL status is set
   Bool_t rv = kFALSE ;
@@ -183,7 +190,7 @@ const Bool_t AliQA::CheckFatal() const
 }
 
 //_______________________________________________________________
-const Bool_t AliQA::CheckRange(DETECTORINDEX_t det) const
+Bool_t AliQA::CheckRange(DETECTORINDEX_t det) const
 { 
   // check if detector is in given detector range: 0-kNDET
 
@@ -194,7 +201,7 @@ const Bool_t AliQA::CheckRange(DETECTORINDEX_t det) const
 }
 
 //_______________________________________________________________
-const Bool_t AliQA::CheckRange(ALITASK_t task) const
+Bool_t AliQA::CheckRange(ALITASK_t task) const
 { 
   // check if task is given taskk range: 0:kNTASK
   Bool_t rv = ( task < kRAW || task > kNTASK )  ? kFALSE : kTRUE ;
@@ -204,7 +211,7 @@ const Bool_t AliQA::CheckRange(ALITASK_t task) const
 }
 
 //_______________________________________________________________
-const Bool_t AliQA::CheckRange(QABIT_t bit) const
+Bool_t AliQA::CheckRange(QABIT_t bit) const
 { 
   // check if bit is in given bit range: 0-kNBit
 
@@ -217,7 +224,7 @@ const Bool_t AliQA::CheckRange(QABIT_t bit) const
 
 
 //_______________________________________________________________
-const char * AliQA::GetAliTaskName(ALITASK_t tsk)
+char * AliQA::GetAliTaskName(ALITASK_t tsk)
 {
        // returns the char name corresponding to module index
        TString tskName ;
@@ -243,11 +250,11 @@ const char * AliQA::GetAliTaskName(ALITASK_t tsk)
                        tsk = kNULLTASK ; 
                        break ;
        }
-       return tskName.Data() ;
+       return Form("%s", tskName.Data()) ;
 }
 
 //_______________________________________________________________
-const char * AliQA::GetBitName(QABIT_t bit) const
+char * AliQA::GetBitName(QABIT_t bit) const
 {
        // returns the char name corresponding to bit 
        TString bitName ;
@@ -270,11 +277,11 @@ const char * AliQA::GetBitName(QABIT_t bit) const
                        bit = kNULLBit ; 
                        break ;
        }
-       return bitName.Data() ;
+       return Form("%s", bitName.Data()) ; 
 }
 
 //_______________________________________________________________
-const AliQA::DETECTORINDEX_t AliQA::GetDetIndex(const char * name) 
+AliQA::DETECTORINDEX_t AliQA::GetDetIndex(const char * name) 
 {
        // returns the detector index corresponding to a given name
        TString sname(name) ; 
@@ -300,10 +307,10 @@ const char * AliQA::GetDetName(Int_t det)
 }
 
 //_______________________________________________________________
-TFile * AliQA::GetQADataFile(const char * name, const Int_t run, const Int_t cycle
+TFile * AliQA::GetQADataFile(const char * name, const Int_t run) 
 {
   // opens the file to store the detectors Quality Assurance Data Maker results
-       const char * temp = Form("%s.%s.%d.%d.root", name, fgQADataFileName.Data(), run, cycle) ; 
+       const char * temp = Form("%s.%s.%d.root", name, fgQADataFileName.Data(), run) ; 
        TString opt ; 
        if (! fgQADataFile ) {     
                if  (gSystem->AccessPathName(temp))
@@ -337,8 +344,7 @@ TFile * AliQA::GetQADataFile(const char * fileName)
        if  (!gSystem->AccessPathName(fileName)) {
                fgQADataFile =  TFile::Open(fileName) ;
        } else {
-               printf("File %s not found", fileName) ;
-               exit(1) ;  
+               AliFatalClass(Form("File %s not found", fileName)) ;
        }
   return fgQADataFile ; 
 }
@@ -352,8 +358,8 @@ TFile * AliQA::GetQAResultFile()
        fgQAResultFile = 0x0 ; 
 //     if (!fgQAResultFile) { 
                TString dirName(fgQAResultDirName) ; 
-               if ( dirName.Contains(fkgLabLocalFile)) 
-                       dirName.ReplaceAll(fkgLabLocalFile, "") ;
+               if ( dirName.Contains(fgkLabLocalFile)) 
+                       dirName.ReplaceAll(fgkLabLocalFile, "") ;
                TString fileName(dirName + fgQAResultFileName) ; 
                TString opt("") ; 
                if ( !gSystem->AccessPathName(fileName) )
@@ -372,13 +378,14 @@ TFile * AliQA::GetQAResultFile()
 //_______________________________________________________________
 const TString AliQA::GetRunTypeName(RUNTYPE_t rt) 
 { 
+  // returns the name of a run type
        TString rv("Invalid Run Type") ;        
        if ( rt == kNULLTYPE ) {
                rv = "Known RUN_TYPE are: \n" ; 
                for (Int_t index = 0 ; index < kNTYPE; index++) {
                        rv += Form("%2d -- %s\n", index, fgRTNames[index].Data()) ;  
                }
-               printf("%s", rv.Data()) ; 
+               AliErrorClass(Form("%s", rv.Data())) ; 
                return "" ; 
        }
        else {
@@ -389,11 +396,11 @@ const TString AliQA::GetRunTypeName(RUNTYPE_t rt)
 }
 
 //_______________________________________________________________
-const AliQA::TASKINDEX_t AliQA::GetTaskIndex(const char * name) 
+AliQA::TASKINDEX_t AliQA::GetTaskIndex(const char * name) 
 {
        // returns the detector index corresponding to a given name
        TString sname(name) ; 
-       TASKINDEX_t rv ; 
+       TASKINDEX_t rv = kNULLTASKINDEX 
        for (Int_t tsk = 0; tsk < kNTASKINDEX ; tsk++) {
                if ( GetTaskName(tsk) == sname ) {
                        rv = TASKINDEX_t(tsk) ; 
@@ -404,7 +411,7 @@ const AliQA::TASKINDEX_t AliQA::GetTaskIndex(const char * name)
 }
 
 //_______________________________________________________________
-const Bool_t AliQA::IsSet(DETECTORINDEX_t det, ALITASK_t tsk, QABIT_t bit) const
+Bool_t AliQA::IsSet(DETECTORINDEX_t det, ALITASK_t tsk, QABIT_t bit) const
 {
   // Checks is the requested bit is set
        
@@ -420,7 +427,7 @@ const Bool_t AliQA::IsSet(DETECTORINDEX_t det, ALITASK_t tsk, QABIT_t bit) const
 }
 
 //_______________________________________________________________
-const Bool_t AliQA::IsSetAny(DETECTORINDEX_t det, ALITASK_t tsk) const
+Bool_t AliQA::IsSetAny(DETECTORINDEX_t det, ALITASK_t tsk) const
 {
   // Checks is the requested bit is set
        
@@ -440,7 +447,7 @@ const Bool_t AliQA::IsSetAny(DETECTORINDEX_t det, ALITASK_t tsk) const
                return kTRUE ;
 }
 //_______________________________________________________________
-const Bool_t AliQA::IsSetAny(DETECTORINDEX_t det) const
+Bool_t AliQA::IsSetAny(DETECTORINDEX_t det) const
 {
   // Checks is the requested bit is set
        
@@ -501,13 +508,13 @@ AliQA * AliQA::Instance(const ALITASK_t tsk)
       fgQA = new AliQA(tsk) ;
       break ;
     case kREC:
-      printf("fgQA = gAlice->GetQA()") ;
+      AliInfoClass("fgQA = gAlice->GetQA()") ;
       break ;
     case kESD:
-      printf("fgQA = dynamic_cast<AliQA *> (esdFile->Get(\"QA\")") ;
+      AliInfoClass("fgQA = dynamic_cast<AliQA *> (esdFile->Get(\"QA\")") ;
       break ;
     case kANA:
-      printf("fgQA = dynamic_cast<AliQA *> (esdFile->Get(\"QA\")") ;
+      AliInfoClass("fgQA = dynamic_cast<AliQA *> (esdFile->Get(\"QA\")") ;
       break ;
     case kNTASK:
       break ;
@@ -557,7 +564,7 @@ void AliQA::Merge(TCollection * list) {
 }
 
 //_______________________________________________________________
-const ULong_t AliQA::Offset(ALITASK_t tsk) const
+ULong_t AliQA::Offset(ALITASK_t tsk) const
 {
   // Calculates the bit offset for a given module (SIM, REC, ESD, ANA)
 
@@ -603,20 +610,20 @@ void AliQA::SetQARefStorage(const char * name)
        // Set the root directory where the QA reference data are stored
 
        fgQARefDirName = name ; 
-       if ( fgQARefDirName.Contains(fkgLabLocalFile) )
-               fgQARefFileName =  fkgRefFileName ; 
-       else if ( fgQARefDirName.Contains(fkgLabLocalOCDB) )
-               fgQARefFileName =  fkgQAName ; 
-       else if ( fgQARefDirName.Contains(fkgLabAliEnOCDB) )
-               fgQARefFileName =  fkgQAName ; 
+       if ( fgQARefDirName.Contains(fgkLabLocalFile) )
+               fgQARefFileName =  fgkRefFileName ; 
+       else if ( fgQARefDirName.Contains(fgkLabLocalOCDB) )
+               fgQARefFileName =  fgkQAName ; 
+       else if ( fgQARefDirName.Contains(fgkLabAliEnOCDB) )
+               fgQARefFileName =  fgkQAName ; 
 
   else {
-         printf("ERROR: %s is an invalid storage definition\n", name) ; 
+         AliErrorClass(Form("%s is an invalid storage definition\n", name)) ; 
          fgQARefDirName  = "" ; 
          fgQARefFileName = "" ; 
   }    
        TString tmp(fgQARefDirName) ; // + fgQARefFileName) ;
-       printf("AliQA::SetQARefDir: QA references are in  %s\n", tmp.Data() ) ;
+       AliInfoClass(Form("AliQA::SetQARefDir: QA references are in  %s\n", tmp.Data()) ) ;
 }
 
 //_____________________________________________________________________________
@@ -633,7 +640,7 @@ void AliQA::SetQARefDataDirName(const char * name)
        }
        
        if (rt == kNULLTYPE) {
-      printf("AliQA::SetQARefDataDirName: %s is an unknown RUN TYPE name\n", name) ; 
+      AliWarningClass(Form("AliQA::SetQARefDataDirName: %s is an unknown RUN TYPE name\n", name)) ; 
       return ; 
        }
  
@@ -646,9 +653,9 @@ void AliQA::SetQAResultDirName(const char * name)
   // Set the root directory where to store the QA status object
 
   fgQAResultDirName.Prepend(name) ; 
-  printf("AliQA::SetQAResultDirName: QA results are in  %s\n", fgQAResultDirName.Data()) ;
-  if ( fgQAResultDirName.Contains(fkgLabLocalFile)) 
-    fgQAResultDirName.ReplaceAll(fkgLabLocalFile, "") ;
+  AliInfoClass(Form("AliQA::SetQAResultDirName: QA results are in  %s\n", fgQAResultDirName.Data())) ;
+  if ( fgQAResultDirName.Contains(fgkLabLocalFile)) 
+    fgQAResultDirName.ReplaceAll(fgkLabLocalFile, "") ;
   fgQAResultFileName.Prepend(fgQAResultDirName) ;
 }
 
@@ -716,7 +723,7 @@ void AliQA::ShowASCIIStatus(DETECTORINDEX_t det, ALITASK_t tsk, const ULong_t st
                }
        }
        if (! text.IsNull())
-               printf("           %8s %4s 0x%4x, Problem signalled: %8s \n", GetDetName(det).Data(), GetAliTaskName(tsk), status, text.Data()) ; 
+               AliWarningClass(Form("           %8s %4s 0x%4lx, Problem signalled: %8s \n", GetDetName(det).Data(), GetAliTaskName(tsk), status, text.Data())) ; 
 }
 
 //_______________________________________________________________