Corrected protection.
[u/mrichter/AliRoot.git] / STEER / AliQA.cxx
index dfabd49..544b539 100644 (file)
@@ -34,6 +34,7 @@
 
 #include <cstdlib>
 // --- ROOT system ---
+#include <TClass.h>
 #include <TFile.h>
 #include <TSystem.h>
 #include <TROOT.h>
@@ -67,18 +68,18 @@ 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::fkgExpert           = "Expert" ; 
-const UInt_t  AliQA::fkgExpertBit        = 16 ; 
-const UInt_t  AliQA::fkgQABit            = 17 ; 
+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() : 
@@ -100,23 +101,23 @@ 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] ; 
 }
 
 //_____________________________________________________________________________
 AliQA& AliQA::operator = (const AliQA& qa)
 {
 // assignment operator
-    if(&qa == this) return *this;
-    
-    fNdet = qa.fNdet;
-    for (Int_t index = 0 ; index < fNdet ; index++) 
-       fQA[index] = qa.fQA[index]; 
-    return *this;
+
+  this->~AliQA();
+  new(this) AliQA(qa);
+  return *this;
 }
 
 //_______________________________________________________________
@@ -223,7 +224,7 @@ 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 ;
@@ -249,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 ;
@@ -276,7 +277,7 @@ const char * AliQA::GetBitName(QABIT_t bit) const
                        bit = kNULLBit ; 
                        break ;
        }
-       return bitName.Data() ;
+       return Form("%s", bitName.Data()) ; 
 }
 
 //_______________________________________________________________
@@ -343,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 ; 
 }
@@ -358,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) )
@@ -378,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 {
@@ -507,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 ;
@@ -609,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()) ) ;
 }
 
 //_____________________________________________________________________________
@@ -639,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 ; 
        }
  
@@ -652,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) ;
 }
 
@@ -699,7 +700,7 @@ void AliQA::ShowStatus(DETECTORINDEX_t det, ALITASK_t tsk) const
        tskStatus[kESD] = status & 0x0f000 ;
        tskStatus[kANA] = status & 0xf0000 ;
 
-       AliInfo(Form("====> QA Status for %8s raw =0x%x, sim=0x%x, rec=0x%x, esd=0x%x, ana=0x%x", GetDetName(det).Data(), 
+       AliInfo(Form("====> QA Status for %8s raw =0x%lx, sim=0x%lx, rec=0x%lx, esd=0x%lx, ana=0x%lx", GetDetName(det).Data(), 
                                 tskStatus[kRAW], tskStatus[kSIM], tskStatus[kREC], tskStatus[kESD], tskStatus[kANA] )) ;
        if (tsk == kNULLTASK) {
                for (Int_t itsk = kRAW ; itsk < kNTASK ; itsk++) {
@@ -722,7 +723,7 @@ void AliQA::ShowASCIIStatus(DETECTORINDEX_t det, ALITASK_t tsk, const ULong_t st
                }
        }
        if (! text.IsNull())
-               printf("           %8s %4s 0x%4lx, 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())) ; 
 }
 
 //_______________________________________________________________