QA works during reconstruction in and outside the event loop
authorschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 21 Mar 2008 15:11:46 +0000 (15:11 +0000)
committerschutz <schutz@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 21 Mar 2008 15:11:46 +0000 (15:11 +0000)
STEER/AliQA.cxx
STEER/AliQA.h
STEER/AliQADataMaker.cxx
STEER/AliQADataMakerRec.cxx
STEER/AliQADataMakerSteer.cxx
STEER/AliQADataMakerSteer.h
STEER/AliReconstruction.cxx

index f77dddb..6982500 100644 (file)
@@ -54,7 +54,7 @@ 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"} ;   
+                                                                                   "ZDC", "PMD", "T0", "VZERO", "ACORDE", "HLT", "Global"} ;   
 TString       AliQA::fgTaskNames[]       = {"Raws", "Hits", "SDigits", "Digits", "RecPoints", "TrackSegments", "RecParticles", "ESDs"} ;   
 const TString AliQA::fkgLabLocalFile     = "file://"  ; 
 const TString AliQA::fkgLabLocalOCDB     = "local://" ;  
@@ -127,7 +127,6 @@ AliQA::AliQA(const ALITASK_t tsk) :
   fDet(kNULLDET),
   fTask(tsk)
 {
-       AliInfo(Form("TTTTTTTTTTTTTTTTTTTTTTT %d", tsk)) ;      
   // constructor to be used in the AliRoot module (SIM, REC, ESD or ANA)
   if (! CheckRange(tsk) ) {
     fTask = kNULLTASK ; 
@@ -236,18 +235,7 @@ const char * AliQA::GetAliTaskName(ALITASK_t tsk)
 }
 
 //_______________________________________________________________
-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 AliQA::DETECTORINDEX_t AliQA::GetDetName(const char * name) 
+const AliQA::DETECTORINDEX_t AliQA::GetDetIndex(const char * name) 
 {
        // returns the detector index corresponding to a given name
        TString sname(name) ; 
@@ -262,6 +250,17 @@ const AliQA::DETECTORINDEX_t AliQA::GetDetName(const char * name)
 }
 
 //_______________________________________________________________
+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
index 1615cd1..29ca125 100644 (file)
@@ -19,7 +19,7 @@ public:
 
        enum DETECTORINDEX_t {
     kNULLDET=-1, kITS, kTPC, kTRD, kTOF, kPHOS, kHMPID, kEMCAL, kMUON, kFMD,
-    kZDC, kPMD, kT0, kVZERO, kACORDE, kHLT, kNDET };
+    kZDC, kPMD, kT0, kVZERO, kACORDE, kHLT, kGLOBAL, kNDET };
        enum ALITASK_t {
     kNULLTASK=-1, kRAW, kSIM, kREC, kESD, kANA, kNTASK };
        enum QABIT_t {
@@ -46,9 +46,8 @@ public:
     static const TString   GetLabLocalFile() { return fkgLabLocalFile ; } 
     static const TString   GetLabLocalOCDB() { return fkgLabLocalOCDB ; } 
     static const TString   GetLabAliEnOCDB() { return fkgLabAliEnOCDB ; } 
+       static const DETECTORINDEX_t GetDetIndex(const char * name) ; 
        static const TString   GetDetName(DETECTORINDEX_t det) { return fgDetNames[det] ; }
-       static const DETECTORINDEX_t GetDetName(const char * name) ; 
-       static const TString   GetTaskName(TASKINDEX_t tsk) { return fgTaskNames[tsk] ; }
        static const char *    GetDetName(Int_t det) ;
        static const char *    GetQADataFileName() { return fgQADataFileName.Data() ; }
        static TFile *         GetQADataFile(const char * name, const Int_t run, const Int_t cycle) ; 
@@ -61,6 +60,7 @@ public:
        static const char  *   GetQARefStorage() { return fgQARefDirName.Data() ; }
        static const char  *   GetRefOCDBDirName() { return fkgRefOCDBDirName.Data() ; }
        static const char  *   GetRefDataDirName() { return fkgRefDataDirName.Data() ; }
+       static const TString   GetTaskName(TASKINDEX_t tsk) { return fgTaskNames[tsk] ; }
        const Bool_t           IsSet(DETECTORINDEX_t det, ALITASK_t tsk, QABIT_t bit) const ;
        void                   Set(QABIT_t bit) ;
        static void                        SetQAResultDirName(const char * name) ; 
index dcd0746..8029599 100644 (file)
@@ -91,7 +91,7 @@ void AliQADataMaker::DefaultEndOfDetectorCycle(AliQA::TASKINDEX_t task)
 {
        // this method must be oveloaded by detectors
        // sets the QA result to Fatal
-       AliQA::Instance(AliQA::GetDetName(GetName())) ;
+       AliQA::Instance(AliQA::GetDetIndex(GetName())) ;
        AliQA * qa = AliQA::Instance(task) ;
        qa->Set(AliQA::kFATAL) ; 
        AliQA::GetQAResultFile()->cd() ; 
index a9a6cd5..e2a2d61 100644 (file)
@@ -84,12 +84,16 @@ void AliQADataMakerRec::EndOfCycle(AliQA::TASKINDEX_t task)
                list = fRecPointsQAList ; 
        else if ( task == AliQA::kESDS )
                list = fESDsQAList ; 
-       
+
+       DefaultEndOfDetectorCycle(task) ;
        EndOfDetectorCycle(task, list) ;
-       TDirectory * subDir = fDetectorDir->GetDirectory(AliQA::GetTaskName(task)) ; 
+       TDirectory * subDir = 0x0 ;
+       if (fDetectorDir) 
+               subDir = fDetectorDir->GetDirectory(AliQA::GetTaskName(task)) ; 
        if ( subDir ) {
                subDir->cd() ; 
-               list->Write() ;
+               if (list) 
+                       list->Write() ;
        }
 }
  
@@ -179,7 +183,7 @@ void AliQADataMakerRec::StartOfCycle(AliQA::TASKINDEX_t task, const Bool_t sameC
                        fOutput->Close() ; 
                fOutput = AliQA::GetQADataFile(GetName(), fRun, fCurrentCycle) ;        
        }       
-       AliDebug(1, Form(" Run %d Cycle %d task %s file %s", 
+       AliInfo(Form(" Run %d Cycle %d task %s file %s", 
                                 fRun, fCurrentCycle, AliQA::GetTaskName(task).Data(), fOutput->GetName() )) ;
 
        fDetectorDir = fOutput->GetDirectory(GetDetectorDirName()) ; 
index 9d663a9..2d7519e 100644 (file)
@@ -624,14 +624,15 @@ void AliQADataMakerSteer::Reset(const Bool_t sameCycle)
 }
 
 //_____________________________________________________________________________
-TString AliQADataMakerSteer::Run(const char * detectors, AliRawReader * rawReader) 
+TString AliQADataMakerSteer::Run(const char * detectors, AliRawReader * rawReader, const Bool_t sameCycle) 
 {
        //Runs all the QA data Maker for Raws only
-
-       fRawReader       = rawReader ;          
+       
+       fCycleSame       = sameCycle ;
+       fRawReader       = rawReader ;
        fDetectors       = detectors ; 
-       fDetectorsW      = detectors ; 
-
+       fDetectorsW      = detectors ;  
+       
        if ( !Init(AliQA::kRAWS, "rec") ) 
                return kFALSE ; 
        fRawReaderDelete = kFALSE ; 
@@ -641,10 +642,11 @@ TString AliQADataMakerSteer::Run(const char * detectors, AliRawReader * rawReade
 }
 
 //_____________________________________________________________________________
-TString AliQADataMakerSteer::Run(const char * detectors, const char * fileName) 
+TString AliQADataMakerSteer::Run(const char * detectors, const char * fileName, const Bool_t sameCycle) 
 {
        //Runs all the QA data Maker for Raws only
+
+       fCycleSame       = sameCycle ;
        fDetectors       = detectors ; 
        fDetectorsW      = detectors ;  
        
@@ -656,13 +658,14 @@ TString AliQADataMakerSteer::Run(const char * detectors, const char * fileName)
 }
 
 //_____________________________________________________________________________
-TString AliQADataMakerSteer::Run(const char * detectors, const AliQA::TASKINDEX_t taskIndex, const  char * fileName )
+TString AliQADataMakerSteer::Run(const char * detectors, const AliQA::TASKINDEX_t taskIndex, Bool_t const sameCycle, const  char * fileName ) 
 {
        // Runs all the QA data Maker for every detector
-
-       fDetectors  = detectors ; 
-       fDetectorsW = detectors ; 
-
+       
+       fCycleSame       = sameCycle ;
+       fDetectors       = detectors ; 
+       fDetectorsW      = detectors ;          
+       
        TString mode ; 
        if ( (taskIndex == AliQA::kHITS) || (taskIndex == AliQA::kSDIGITS) || (taskIndex == AliQA::kDIGITS) ) 
                mode = "sim" ; 
index 234c785..5210657 100644 (file)
@@ -40,9 +40,9 @@ public:
     TObjArray * GetFromOCDB(AliQA::DETECTORINDEX_t det, AliQA::TASKINDEX_t task, const char * year) const ; 
        Bool_t  Merge(const Int_t runNumber = -1) const ;  
     void    Reset(const Bool_t sameCycle = kFALSE) ;  
-       TString Run(const char * detectors, const AliQA::TASKINDEX_t taskIndex, const char * fileName = NULL) ; 
-       TString Run(const char * detectors, AliRawReader * rawReader) ; 
-       TString Run(const char * detectors, const char * filename) ;
+       TString Run(const char * detectors, const AliQA::TASKINDEX_t taskIndex, Bool_t const sameCycle = kFALSE, const char * fileName = NULL) ; 
+       TString Run(const char * detectors, AliRawReader * rawReader, Bool_t const sameCycle = kFALSE) ; 
+       TString Run(const char * detectors, const char * filename, Bool_t const sameCycle = kFALSE) ;
     Bool_t  Save2OCDB(const Int_t runNumber, const char * year = "08", const Int_t cycleNumber=0, const char * detectors = "ALL") const ; 
        void    SetCycleLength(const AliQA::DETECTORINDEX_t det, const Int_t cycle) { fQACycles[det] = cycle ; }
        void    SetMaxEvents(UInt_t max) { fMaxEvents = max ; }      
index d12c2bb..92f913f 100644 (file)
@@ -673,10 +673,14 @@ Bool_t AliReconstruction::Run(const char* input, Bool_t IsOnline)
   if (!MisalignGeometry(fLoadAlignData)) if (fStopOnError) return kFALSE;
    AliSysInfo::AddStamp("LoadGeom");
 
-  //QA 
+  //QA
+  Int_t sameQACycle = kFALSE ;         
   AliQADataMakerSteer qas ; 
-  if (fRunQA && fRawReader) qas.Run(fRunLocalReconstruction, fRawReader) ; 
-  // checking the QA of previous steps
+       if (fRunQA && fRawReader) { 
+               qas.Run(fRunLocalReconstruction, fRawReader) ; 
+               sameQACycle = kTRUE; 
+       }
+       // checking the QA of previous steps
   //CheckQA() ; 
  
   /*
@@ -806,22 +810,22 @@ Bool_t AliReconstruction::Run(const char* input, Bool_t IsOnline)
                fgkDetectorName[iDet]));
         qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun());
         qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
-        if (!fInLoopQA) {
-           qadm->StartOfCycle(AliQA::kRECPOINTS);
-           qadm->StartOfCycle(AliQA::kESDS,"same");
-        }
+ //       if (!fInLoopQA) {
+//           qadm->StartOfCycle(AliQA::kRECPOINTS);
+//           qadm->StartOfCycle(AliQA::kESDS,"same");
+//        }
      }
   }
   if (fRunGlobalQA) {
-     AliQADataMakerRec *qadm = GetQADataMaker(fgkNDetectors);
+         AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
      AliInfo(Form("Initializing the global QA data maker"));
      TObjArray *arr=
           qadm->Init(AliQA::kRECPOINTS, AliCDBManager::Instance()->GetRun());
      AliTracker::SetResidualsArray(arr);
      qadm->Init(AliQA::kESDS, AliCDBManager::Instance()->GetRun());
      if (!fInLoopQA) {
-        qadm->StartOfCycle(AliQA::kRECPOINTS);
-        qadm->StartOfCycle(AliQA::kESDS,"same");
+        qadm->StartOfCycle(AliQA::kRECPOINTS, sameQACycle);
+        qadm->StartOfCycle(AliQA::kESDS, "same");
      }
   }
 
@@ -858,14 +862,14 @@ Bool_t AliReconstruction::Run(const char* input, Bool_t IsOnline)
              if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
              AliQADataMakerRec *qadm = GetQADataMaker(iDet);  
              if (!qadm) continue;
-             qadm->StartOfCycle(AliQA::kRECPOINTS);
+             qadm->StartOfCycle(AliQA::kRECPOINTS, sameQACycle);
              qadm->StartOfCycle(AliQA::kESDS, "same") ;        
           }
        }
        if (fRunGlobalQA) {
-          AliQADataMakerRec *qadm = GetQADataMaker(fgkNDetectors);
-          qadm->StartOfCycle(AliQA::kRECPOINTS);
-          qadm->StartOfCycle(AliQA::kESDS,"same");
+          AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
+          qadm->StartOfCycle(AliQA::kRECPOINTS, sameQACycle);
+          qadm->StartOfCycle(AliQA::kESDS, "same");
        }
     }
 
@@ -1073,7 +1077,7 @@ Bool_t AliReconstruction::Run(const char* input, Bool_t IsOnline)
     if (fCleanESD) CleanESD(esd);
 
     if (fRunGlobalQA) {
-       AliQADataMakerRec *qadm = GetQADataMaker(fgkNDetectors);
+       AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
        if (qadm) qadm->Exec(AliQA::kESDS, esd);
     }
 
@@ -1105,16 +1109,18 @@ Bool_t AliReconstruction::Run(const char* input, Bool_t IsOnline)
            RunQA(fFillESD.Data(), esd);
            TString detStr(fFillESD); 
            for (Int_t iDet = 0; iDet < fgkNDetectors; iDet++) {
-             if (!IsSelected(fgkDetectorName[iDet], detStr)) continue;
-             AliQADataMakerRec * qadm = GetQADataMaker(iDet);
-             if (!qadm) continue;
-             qadm->EndOfCycle(AliQA::kRECPOINTS);
-             qadm->EndOfCycle(AliQA::kESDS);
-             qadm->Finish();
-           }
+                          if (!IsSelected(fgkDetectorName[iDet], detStr)) 
+                                  continue;
+                          AliQADataMakerRec * qadm = GetQADataMaker(iDet);
+                          if (!qadm) 
+                                  continue;
+                          qadm->EndOfCycle(AliQA::kRECPOINTS);
+                          qadm->EndOfCycle(AliQA::kESDS);
+                          qadm->Finish();
+                  }
         }
         if (fRunGlobalQA) {
-           AliQADataMakerRec *qadm = GetQADataMaker(fgkNDetectors);
+           AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
            if (qadm) {
              qadm->EndOfCycle(AliQA::kRECPOINTS);
              qadm->EndOfCycle(AliQA::kESDS);
@@ -1203,12 +1209,12 @@ Bool_t AliReconstruction::Run(const char* input, Bool_t IsOnline)
   //Finish QA and end of cycle for out-of-loop QA
   if (!fInLoopQA) {
      if (fRunQA) {
-        qas.Run(fRunLocalReconstruction.Data(), AliQA::kRECPOINTS);
+        qas.Run(fRunLocalReconstruction.Data(), AliQA::kRECPOINTS, sameQACycle);
         //qas.Reset() ;
-        qas.Run(fRunTracking.Data(), AliQA::kESDS);
+        qas.Run(fRunTracking.Data(), AliQA::kESDS, sameQACycle);
      }
      if (fRunGlobalQA) {
-        AliQADataMakerRec *qadm = GetQADataMaker(fgkNDetectors);
+        AliQADataMakerRec *qadm = GetQADataMaker(AliQA::kGLOBAL);
         if (qadm) {
           qadm->EndOfCycle(AliQA::kRECPOINTS);
           qadm->EndOfCycle(AliQA::kESDS);