Updates related to the DQM of 2012. Main changes are in the QA checker. For the momen...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Feb 2012 13:10:09 +0000 (13:10 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 27 Feb 2012 13:10:09 +0000 (13:10 +0000)
VZERO/AliVZEROQAChecker.cxx
VZERO/AliVZEROQAChecker.h
VZERO/AliVZEROQADataMakerRec.cxx

index a14f743..1ea5877 100644 (file)
 #include "AliQAChecker.h"
 #include "AliVZEROQAChecker.h"
 #include "AliVZEROQADataMakerRec.h"
-//#include "AliCDBEntry.h"
-//#include "AliCDBManager.h"
 
 ClassImp(AliVZEROQAChecker)
 
 //__________________________________________________________________
-void AliVZEROQAChecker::Check(Double_t * check, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * /*recoParam*/) 
+AliVZEROQAChecker::AliVZEROQAChecker() : AliQACheckerBase("VZERO","VZERO Quality Assurance Data Checker"),
+  fLowEventCut(1000),
+  fORvsANDCut(0.2),
+  fBGvsBBCut(0.2)
 {
+  // Default constructor
+  // Nothing else here
+}
 
-// Main check function: Depending on the TASK, different checks will be applied
-// Check for empty histograms 
-
-//   AliDebug(AliQAv1::GetQADebugLevel(),Form("AliVZEROChecker"));
-//   AliCDBEntry *QARefRec = AliCDBManager::Instance()->Get("VZERO/QARef/RAW");
-//   if( !QARefRec){
-//     AliDebug(AliQAv1::GetQADebugLevel(), "QA reference data NOT retrieved for QA check...");
-//     return 1.;
-//   }
+//__________________________________________________________________
+void AliVZEROQAChecker::Check(Double_t * check, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * /*recoParam*/) 
+{
+  // Main check function: Depending on the TASK, different checks will be applied
+  // Check for missing channels and check on the trigger type for raw data
+  // Check for missing disk or rings for esd (to be redone)
 
-//   Check that histos are filled - (FATAL) set if empty
   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
-    check[specie]    = 1.0 ; 
+    check[specie] = 1.0;
+    // no check on cosmic or calibration events
+    if (AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCosmic || AliRecoParam::ConvertIndex(specie) == AliRecoParam::kCalib)
+      continue;
     if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) 
-      continue ; 
-    if(CheckEntries(list[specie]) == 0.0){
-        check[specie] =  CheckEntries(list[specie]);
-    } else {
-      //   Check for one disk missing (FATAL) or one ring missing (ERROR) in ESDs     
-      if(index == AliQAv1::kESD) 
-          check[specie] =  CheckEsds(list[specie]);
+      continue;
+    if (index == AliQAv1::kRAW) {
+      check[specie] =  CheckRaws(list[specie]);
+    } else if (index == AliQAv1::kESD) {
+      // Check for one disk missing (FATAL) or one ring missing (ERROR) in ESDs (to be redone)
+      check[specie] =  CheckEsds(list[specie]);
     } 
   }
 }
 
 //_________________________________________________________________
-Double_t AliVZEROQAChecker::CheckEntries(TObjArray * list) const
+Double_t AliVZEROQAChecker::CheckRaws(TObjArray * list) const
 {
 
-  //  check on the QA histograms on the input list: list
-//  list->Print();
-
-  Double_t test = 0.0 ;
-  Int_t   count = 0 ; 
+  //  Check on the QA histograms on the raw-data input list:
+  //  Two things are checked: the presence of data in all channels and
+  //  the ratio between different trigger types
 
+  Double_t test = 1.0;
   if (list->GetEntries() == 0){  
-       test = 1.0; 
-    AliDebug(AliQAv1::GetQADebugLevel(), Form("There are NO ENTRIES to be checked..."));
+    AliWarning("There are no histograms to be checked");
   } else {
-       TIter next(list) ; 
-       TH1 * hdata ;
-       count = 0 ; 
-       while ( (hdata = dynamic_cast<TH1 *>(next())) ) {
-               if (hdata) {       
-                       Double_t rv = 0.0;
-                       if(hdata->GetEntries()>0) rv=1.0;
-//        AliDebug(AliQAv1::GetQADebugLevel(), Form("%s -> %f", hdata->GetName(), rv)); 
-                       count++ ;        // number of histos
-                       test += rv ;     // number of histos filled
-        }else{
-                       AliError(Form("Data type cannot be processed"));
-        }      
-       }
-       if (count != 0) { 
-               if (test==0.0) {
-                       AliWarning(Form("Histograms are BOOKED for this specific task, but they are all EMPTY"));
-               } else {
-                       test /= count; 
-               }
-       }
+    TH1F *hTriggers  = (TH1F*)list->At(AliVZEROQADataMakerRec::kTriggers);
+    if (!hTriggers) {
+      AliWarning("Trigger type histogram is not found");
+    }
+    else if (hTriggers->GetEntries() < fLowEventCut) {
+      AliInfo("Not enough events to perform QA checks");
+    }
+    else {
+      Double_t nANDs = hTriggers->GetBinContent(hTriggers->FindBin(0));
+      Double_t nORs = hTriggers->GetBinContent(hTriggers->FindBin(1));
+      Double_t nBGAs = hTriggers->GetBinContent(hTriggers->FindBin(2));
+      Double_t nBGCs = hTriggers->GetBinContent(hTriggers->FindBin(3));
+      if ((nORs - nANDs) > fORvsANDCut*nANDs) test = 0.001;
+      if ((nBGAs + nBGCs) > fBGvsBBCut*nANDs) test = 0.002;
+    }
+    TH1F *hBBflags = (TH1F*)list->At(AliVZEROQADataMakerRec::kBBFlagsPerChannel);
+    if (!hBBflags) {
+      AliWarning("BB-flags per channel histogram is not found");
+    }
+    else if (hBBflags->GetEntries() < fLowEventCut) {
+      AliInfo("Not enough events to perform QA checks");
+    }
+    else {
+      for(Int_t iBin = 1; iBin <= 64; ++iBin) {
+       if (hBBflags->GetBinContent(iBin) < 1.0) test = -1.0;
+      }
+    }
   }
   return test ; 
 }  
@@ -114,7 +120,6 @@ Double_t AliVZEROQAChecker::CheckEsds(TObjArray * list) const
 {
   
 //  check the ESDs for missing disk or ring
-
 //  printf(" Number of entries in ESD list = %d\n", list->GetEntries()); 
 //  list->Print();
 
index 7d01530..92dafdc 100644 (file)
@@ -26,14 +26,18 @@ class AliVZEROLoader ;
 class AliVZEROQAChecker: public AliQACheckerBase {
 
 public:
-  AliVZEROQAChecker() : AliQACheckerBase("VZERO","VZERO Quality Assurance Data Checker") {;}          // ctor
+  AliVZEROQAChecker();
   virtual ~AliVZEROQAChecker() {;} // destructor
   
-  virtual void   Init(const AliQAv1::DETECTORINDEX_t det) ; 
+  virtual void   Init(const AliQAv1::DETECTORINDEX_t det);
+
+  void SetLowEventCut(Int_t nEvents) {fLowEventCut = nEvents;}
+  void SetORvsANDCut(Double_t cut) {fORvsANDCut = cut;}
+  void SetBGvsBBCut(Double_t cut) {fBGvsBBCut = cut;}
 
 protected:  
   virtual void Check( Double_t * test, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * recoParam);
-  Double_t CheckEntries(TObjArray * list) const ;
+  Double_t CheckRaws(TObjArray * list) const ;
   Double_t CheckEsds(TObjArray * list) const;
   
   virtual void SetQA(AliQAv1::ALITASK_t index, Double_t * value) const ;
@@ -41,6 +45,10 @@ protected:
 private:
   AliVZEROQAChecker(const AliVZEROQAChecker& qac); // cpy ctor   
   AliVZEROQAChecker &operator=(const AliVZEROQAChecker& qac); // assignment operator
+
+  Int_t    fLowEventCut; // Minimum number of events required by the QA checker
+  Double_t fORvsANDCut; // VZERO OR vs VZERO AND counters cut
+  Double_t fBGvsBBCut; // VZERO beam-gas vs beam-beam counters cut
   
   ClassDef(AliVZEROQAChecker,1)  // description 
 
index 87b0d59..f76a05c 100644 (file)
@@ -278,7 +278,7 @@ void AliVZEROQADataMakerRec::InitRaws()
 
        h2d = new TH2F("H2D_Trigger_Type", "V0 Trigger Type;V0A;V0C", 4,0 ,4,4,0,4) ;  
        Add2RawsList(h2d,kTriggers2, !expert, image, saveCorr);   iHisto++;
-       h2d->SetDrawOption("coltext");
+       h2d->SetOption("coltext");
        h2d->GetXaxis()->SetLabelSize(0.06);
        h2d->GetXaxis()->SetNdivisions(808,kFALSE);
        h2d->GetYaxis()->SetNdivisions(808,kFALSE);
@@ -423,7 +423,7 @@ void AliVZEROQADataMakerRec::InitRaws()
   // Creation of histograms with the charge sums used inthe centrality triggers
   h2d = new TH2F("H2D_CentrChargeV0A_V0C","Trigger charge sums V0C vs V0A; V0A Charge Sum [ADC counts]; V0C Charge Sum [ADC counts];",
                 300,0,15000,500,0,25000);
-  Add2RawsList(h2d,kCentrChargeV0AV0C, !expert, image, saveCorr); iHisto++;
+  Add2RawsList(h2d,kCentrChargeV0AV0C, expert, !image, saveCorr); iHisto++;
 
   AliDebug(AliQAv1::GetQADebugLevel(), Form("%d Histograms has been added to the Raws List",iHisto));
   //