]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSQASPDChecker.cxx
Protection against division by zero.
[u/mrichter/AliRoot.git] / ITS / AliITSQASPDChecker.cxx
index 9a3a912c1ec1523e8bf9656c2a9311e98d430d67..4fb407fe611d847ba1cf51f0b5769067a7b99bff 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/* $Id$ */
+/* $Id $ */
 
 // *****************************************
 //  Checks the quality assurance 
 //  INFN Torino
 
 // --- ROOT system ---
+#include "TH1.h"
+#include "TString.h"
 
 // --- AliRoot header files ---
 #include "AliITSQASPDChecker.h"
+#include "AliLog.h"
 
 ClassImp(AliITSQASPDChecker)
-
 //__________________________________________________________________
 AliITSQASPDChecker& AliITSQASPDChecker::operator = (const AliITSQASPDChecker& qac ) 
 {
@@ -37,47 +39,84 @@ AliITSQASPDChecker& AliITSQASPDChecker::operator = (const AliITSQASPDChecker& qa
   return *this;
 }
 
+
 //__________________________________________________________________
-const Double_t AliITSQASPDChecker::Check(AliQA::ALITASK_t /*index*/
+const Double_t AliITSQASPDChecker::Check(AliQA::ALITASK_t /*index*/, TObjArray * list)
 {
-/*
-  TObjArray * list
-  Double_t test = 0.0  ;
-  Int_t count = 0 ;
+  AliDebug(1,Form("AliITSQASPDChecker called with offset: %d\n", fSubDetOffset));
 
-  if (list->GetEntries() == 0){
-    test = 1. ; // nothing to check
+  Double_t test = 0.0;
+  Int_t count = 0;
+
+  if (list->GetEntries() == 0) {
+    test = 1.; // nothing to check
   }
   else {
-    TIter next(list) ;
-    TH1 * hdata ;
-    count = 0 ;
+    TIter next(list);
+    TH1 * hdata;
+    count = 0;
     while ( (hdata = dynamic_cast<TH1 *>(next())) ) {
       if (hdata) {
+        TString histName = hdata->GetName();
+        if (!histName.Contains("_SPD")) continue;
         Double_t rv = 0.;
-        if(hdata->GetEntries()>0)rv=1;
-        AliInfo(Form("%s -> %f", hdata->GetName(), rv)) ;
-        count++ ;
-        test += rv ;
+        if (hdata->GetEntries()>0) rv = 1;
+        if (histName.Contains("LayPattern")) {
+         if (hdata->GetBinContent(1)) {
+           Double_t ratio=hdata->GetBinContent(2)/hdata->GetBinContent(1);
+           AliInfo(Form("%s: ratio RecPoints lay2 / lay1 = %f", hdata->GetName(), ratio));
+         }
+         else
+           AliInfo("No RecPoints in lay1");
+       }
+        else if(histName.Contains("ModPattern")) {
+           Int_t ndead=0;
+           for(Int_t ibin=0;ibin<hdata->GetNbinsX();ibin++) {
+             if(histName.Contains("SPD1") && ibin<80 && hdata->GetBinContent(ibin+1)>0) ndead++;
+             if(histName.Contains("SPD2") && ibin>79 && hdata->GetBinContent(ibin+1)>0) ndead++;
+           }
+           AliInfo(Form("%s: Entries = %d  number of empty modules = %d", 
+                        hdata->GetName(),(Int_t)hdata->GetEntries(),ndead));
+        }
+        else if(histName.Contains("SizeYvsZ")) {
+           Double_t meanz=hdata->GetMean(1);
+           Double_t meany=hdata->GetMean(2);
+           Double_t rmsz=hdata->GetRMS(1);
+           Double_t rmsy=hdata->GetRMS(2);
+           AliInfo(Form("%s: Cluster sizeY mean = %f  rms = %f", hdata->GetName(),meany,rmsy));
+           AliInfo(Form("%s: Cluster sizeZ mean = %f  rms = %f", hdata->GetName(),meanz,rmsz));
+        }
+        else if(histName.Contains("Multiplicity")) {
+           AliInfo(Form("%s: Events = %d  mean = %f  rms = %f",
+                        hdata->GetName(),(Int_t)hdata->GetEntries(),hdata->GetMean(),hdata->GetRMS()));}
+
+        // else AliInfo(Form("%s -> %f", hdata->GetName(), rv));
+        count++;
+        test += rv;
       }
-      else{
+      else {
         AliError("Data type cannot be processed") ;
       }
-
     }
+
     if (count != 0) {
       if (test==0) {
         AliWarning("Histograms are there, but they are all empty: setting flag to kWARNING");
         test = 0.5;  //upper limit value to set kWARNING flag for a task
       }
       else {
-        test /= count ;
+        test /= count;
       }
     }
   }
 
-  AliInfo(Form("Test Result = %f", test)) ;
+  AliInfo(Form("Test Result = %f", test));
   return test ;
-*/
-  return 0.;   
-} 
+
+}
+
+//__________________________________________________________________
+void AliITSQASPDChecker::SetTaskOffset(Int_t TaskOffset)
+{
+  fSubDetOffset = TaskOffset;
+}