]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONQAChecker.cxx
Make the Scan method public
[u/mrichter/AliRoot.git] / MUON / AliMUONQAChecker.cxx
index 021342dadb130134784a4e255fe6ceb5da6a8bd3..8cc7f15a4331eebbfd9c61507b9206eea12f7037 100644 (file)
 #include "AliMUONTrackerQAChecker.h"
 #include "AliMUONTriggerQAChecker.h"
 #include "AliCodeTimer.h"
+#include "AliMUONQAIndices.h"
 
 /// \cond CLASSIMP
 ClassImp(AliMUONQAChecker)
 /// \endcond
 
+namespace
+{
+  const Int_t TRACKER=0;
+  const Int_t TRIGGER=1;
+}
+
 //__________________________________________________________________
 AliMUONQAChecker::AliMUONQAChecker() : 
     AliQACheckerBase("MUON","MUON Quality Assurance Data Maker"),
@@ -39,8 +46,8 @@ fCheckers(new TObjArray)
 {
        /// ctor
   fCheckers->SetOwner(kTRUE);
-  fCheckers->Add(new AliMUONTrackerQAChecker());
-  fCheckers->Add(new AliMUONTriggerQAChecker());
+  fCheckers->AddAt(new AliMUONTrackerQAChecker(),TRACKER);
+  fCheckers->AddAt(new AliMUONTriggerQAChecker(),TRIGGER);
 }          
 
 //__________________________________________________________________
@@ -51,8 +58,8 @@ AliMUONQAChecker::~AliMUONQAChecker()
 }
 
 //______________________________________________________________________________
-Double_t *
-AliMUONQAChecker::Check(AliQAv1::ALITASK_t index, 
+void
+AliMUONQAChecker::Check(Double_t* rv, AliQAv1::ALITASK_t index, 
                         TObjArray** list, 
                         const AliDetectorRecoParam * recoParam)
 {
@@ -60,18 +67,42 @@ AliMUONQAChecker::Check(AliQAv1::ALITASK_t index,
   
   AliCodeTimerAuto(AliQAv1::GetTaskName(index),0);
   
-  TIter next(fCheckers);
-  AliMUONVQAChecker* qac;
   const AliMUONRecoParam* muonRecoParam = static_cast<const AliMUONRecoParam*>(recoParam);
   AliMUONVQAChecker::ECheckCode* ecc(0x0);
-  Double_t* rv = new Double_t[AliRecoParam::kNSpecies];
+
   for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i ) 
   {
     rv[i] = -1.0;
   }
   
-  while ( ( qac = static_cast<AliMUONVQAChecker*>(next())) )
+  for ( Int_t ic = 0; ic <= fCheckers->GetLast(); ++ic )
   {
+    if ( ic != TRACKER && ic != TRIGGER ) continue;
+
+    Bool_t trackerRequested(kFALSE);
+    Bool_t triggerRequested(kFALSE);
+    
+    for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i ) 
+    {
+      // no need to take into account detector that was not requested
+      if ( ic == TRACKER && AliQAv1::GetData(list,AliMUONQAIndices::kTrackerIsThere,AliRecoParam::ConvertIndex(i)) ) trackerRequested=kTRUE;
+      if ( ic == TRIGGER && AliQAv1::GetData(list,AliMUONQAIndices::kTriggerIsThere,AliRecoParam::ConvertIndex(i)) ) triggerRequested=kTRUE;
+    }
+    
+    if ( ic == TRACKER && !trackerRequested ) 
+    {
+      AliInfo("Skipping tracker check as tracker not requested");
+      continue;      
+    }
+    
+    if ( ic == TRIGGER && !triggerRequested ) 
+    {
+      AliInfo("Skipping trigger check as trigger not requested");
+      continue;      
+    }
+    
+    AliMUONVQAChecker* qac = static_cast<AliMUONVQAChecker*>(fCheckers->At(ic));
+    
     if ( index == AliQAv1::kRAW ) 
     {    
       ecc = qac->CheckRaws(list,muonRecoParam);
@@ -91,6 +122,10 @@ AliMUONQAChecker::Check(AliQAv1::ALITASK_t index,
     {
       for ( Int_t i = 0; i < AliRecoParam::kNSpecies; ++i ) 
       {
+        // no need to take into account detector that was not requested
+        if ( ic == TRACKER && AliQAv1::GetData(list,AliMUONQAIndices::kTrackerIsThere,AliRecoParam::ConvertIndex(i))==0x0 ) continue;
+        if ( ic == TRIGGER && AliQAv1::GetData(list,AliMUONQAIndices::kTriggerIsThere,AliRecoParam::ConvertIndex(i))==0x0 ) continue;
+                
         switch ( ecc[i] ) 
         {
           case AliMUONVQAChecker::kInfo:
@@ -106,16 +141,15 @@ AliMUONQAChecker::Check(AliQAv1::ALITASK_t index,
             rv[i] = -1.0;
             break;
           default:
+            AliError("Invalid ecc value. FIXME !");
             rv[i] = -1.0;
             break;
         }
       }
     }
+
+    delete[] ecc;
   }
-  
-  delete[] ecc;
-  
-  return rv;
 }
 
 //______________________________________________________________________________
@@ -135,32 +169,3 @@ void AliMUONQAChecker::Init(const AliQAv1::DETECTORINDEX_t det)
   hiValue[AliQAv1::kFATAL]      = 0.0 ; 
   SetHiLo(&hiValue[0], &lowValue[0]) ; 
 }
-
-//______________________________________________________________________________
-void 
-AliMUONQAChecker::SetQA(AliQAv1::ALITASK_t index, Double_t * value) const
-{
-  /// sets the QA according the return value of the Check
-
-  AliQAv1 * qa = AliQAv1::Instance(index);
-  
-  for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
-    qa->UnSet(AliQAv1::kFATAL, specie);
-    qa->UnSet(AliQAv1::kWARNING, specie);
-    qa->UnSet(AliQAv1::kERROR, specie);
-    qa->UnSet(AliQAv1::kINFO, specie);
-
-    if ( ! value ) { // No checker is implemented, set all QA to Fatal
-      qa->Set(AliQAv1::kFATAL, specie) ; 
-    } else {
-      if ( value[specie] >= fLowTestValue[AliQAv1::kFATAL] && value[specie] < fUpTestValue[AliQAv1::kFATAL] ) 
-        qa->Set(AliQAv1::kFATAL, specie) ; 
-      else if ( value[specie] > fLowTestValue[AliQAv1::kERROR] && value[specie] <= fUpTestValue[AliQAv1::kERROR]  )
-        qa->Set(AliQAv1::kERROR, specie) ; 
-      else if ( value[specie] > fLowTestValue[AliQAv1::kWARNING] && value[specie] <= fUpTestValue[AliQAv1::kWARNING]  )
-        qa->Set(AliQAv1::kWARNING, specie) ;
-      else if ( value[specie] > fLowTestValue[AliQAv1::kINFO] && value[specie] <= fUpTestValue[AliQAv1::kINFO] ) 
-        qa->Set(AliQAv1::kINFO, specie) ;      
-    }
-  }
-}