]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ITS/AliITSQAChecker.cxx
warnings fixed
[u/mrichter/AliRoot.git] / ITS / AliITSQAChecker.cxx
index f8cfad6d3894164e6d18e0ca206edb6c7a55d894..7e006905e222d53392d789e227bfce6a8833d6f8 100644 (file)
@@ -30,6 +30,7 @@
 #include "AliITSQASPDChecker.h"
 #include "AliITSQASDDChecker.h"
 #include "AliITSQASSDChecker.h"
+#include "AliITSQADataMakerRec.h"
 
 ClassImp(AliITSQAChecker)
 
@@ -94,17 +95,24 @@ AliITSQAChecker& AliITSQAChecker::operator=(const AliITSQAChecker& qac){
   return *this;
 }
 
+
 //____________________________________________________________________________
-Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, AliDetectorRecoParam * /*recoParam*/)
+AliITSQAChecker::~AliITSQAChecker(){
+  // destructor
+  if(fSPDChecker)delete fSPDChecker;
+  if(fSDDChecker)delete fSDDChecker;
+  if(fSSDChecker)delete fSSDChecker;
+
+}
+//____________________________________________________________________________
+void AliITSQAChecker::Check(Double_t * rv, AliQAv1::ALITASK_t index, TObjArray ** list, const AliDetectorRecoParam * recoParam)
 {
 
 
-  // Super-basic check on the QA histograms on the input list:
-  // look whether they are empty!
-  //for the ITS subdetectorQA (Raws Digits Hits RecPoints SDigits) return the worst (= lowest) value of the three result
+  // basic checks on the QA histograms on the input list
+  //for the ITS subdetectorQA (Raws Digits Hits RecPoints SDigits) return the worst value of the three result
   if(index == AliQAv1::kESD){
-
-    Double_t * rv = new Double_t[AliRecoParam::kNSpecies] ; 
+    
     for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
       rv[specie] = 0.0 ; 
       if ( !AliQAv1::Instance()->IsEventSpecieSet(specie) ) 
@@ -160,7 +168,7 @@ Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, A
                 if(skipped[k-1]) continue;
                 if(hdata->GetBinContent(k)<0.5*(entries/6.)){
                   cluMapSA = kFALSE;
-                  AliDebug(AliQAv1::GetQADebugLevel(), Form("SA tracks have few points on layer %d - look at histogram hESDClustersSA",k));
+                  AliDebug(AliQAv1::GetQADebugLevel(),Form("SA tracks have few points on layer %d - look at histogram hESDClustersSA",k));
                 }
               }  
             }
@@ -175,7 +183,7 @@ Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, A
                 if(skipped[k-1]) continue;
                 if(hdata->GetBinContent(k)<0.5*(entries/6.)){
                   cluMapMI = kFALSE;
-                  AliDebug(AliQAv1::GetQADebugLevel(), Form("MI tracks have few points on layer %d - look at histogram hESDClustersMI",k));
+                  AliDebug(AliQAv1::GetQADebugLevel(),Form("MI tracks have few points on layer %d - look at histogram hESDClustersMI",k));
                 }
               }  
             }
@@ -188,7 +196,7 @@ Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, A
               for(Int_t k=2; k<7-nskipped; k++){
                 if(hdata->GetBinContent(k)>maxlaytracks){
                   cluMI = kFALSE;
-                  AliDebug(AliQAv1::GetQADebugLevel(), Form("MI Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersMI",k-1,6-nskipped));
+                  AliDebug(AliQAv1::GetQADebugLevel(),Form("MI Tracks with %d clusters are more than tracks with %d clusters. Look at histogram hESDClustersMI",k-1,6-nskipped));
                 }
               }
             }
@@ -212,47 +220,46 @@ Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, A
               verSPDZ = kTRUE;
               if(hdata->GetMean()<-5. && hdata->GetMean()>5.){
                 verSPDZ = kFALSE;
-                AliDebug(AliQAv1::GetQADebugLevel(), Form("Average z vertex coordinate is at z= %10.4g cm",hdata->GetMean()));
+                AliDebug(AliQAv1::GetQADebugLevel(),Form("Average z vertex coordinate is at z= %10.4g cm",hdata->GetMean()));
               }
             }
           }
-
           else{
             AliError("ESD Checker - invalid data type");
           }
-         
-          rv[specie] = 0.;
-          if(tested>0){
-            if(tested == empty){
-              rv[specie] = 0.1;
-              AliWarning("All ESD histograms are empty");
-            }
-            else {
-              rv[specie] = 0.1+0.4*(static_cast<Double_t>(tested-empty)/static_cast<Double_t>(tested));
-              if(cluMapSA)rv[specie]+=0.1;
-              if(cluMapMI)rv[specie]+=0.1;
-              if(cluMI)rv[specie]+=0.1;
-              if(cluSA)rv[specie]+=0.1;
-              if(verSPDZ)rv[specie]+=0.1;
-            }
-          }
-        }
-      }  
-      AliDebug(AliQAv1::GetQADebugLevel(), Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
+       }
+       rv[specie] = 0.;
+       if(tested>0){
+         if(tested == empty){
+           rv[specie] = 2500.; // set to error
+           AliWarning(Form("All ESD histograms are empty - specie=%d",specie));
+         }
+         else {
+           rv[specie] = 2500.-1500.*(static_cast<Double_t>(tested-empty)/static_cast<Double_t>(tested)); // INFO if all histos are filled
+           if(cluMapSA)rv[specie]-=200.;
+           if(cluMapMI)rv[specie]-=200.;
+           if(cluMI)rv[specie]-=200.;
+           if(cluSA)rv[specie]-=200.;
+           if(verSPDZ)rv[specie]-=199.;  // down to 1 if everything is OK
+         }
+       }
+      }
+      //     AliDebug(AliQAv1::GetQADebugLevel(), Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
+      AliInfo(Form("ESD - Tested %d histograms, Return value %f \n",tested,rv[specie]));
     }
-    return rv ; 
   }  // end of ESD QA
-  
-  Double_t * retval = new Double_t[AliRecoParam::kNSpecies] ; 
-  //____________________________________________________________________________
+  else{
+    
+    //____________________________________________________________________________
 
-  Double_t spdCheck[AliRecoParam::kNSpecies] ;
-  Double_t sddCheck[AliRecoParam::kNSpecies] ;
-  Double_t ssdCheck[AliRecoParam::kNSpecies] ;
+    Double_t spdCheck[AliRecoParam::kNSpecies] ;
+    Double_t sddCheck[AliRecoParam::kNSpecies] ;
+    Double_t ssdCheck[AliRecoParam::kNSpecies] ;
 
 
 
     for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
+      if ( !AliQAv1::Instance()->IsEventSpecieSet(specie)) continue; 
       if ( AliQAv1::Instance()->IsEventSpecieSet(specie) ) {
        Double_t histotot=list[specie]->GetEntries();
        if(histotot!=0)
@@ -260,71 +267,75 @@ Double_t * AliITSQAChecker::Check(AliQAv1::ALITASK_t index, TObjArray ** list, A
            spdCheck[specie]=0.;
            sddCheck[specie]=0.;
            ssdCheck[specie]=0.;
-           retval[specie] = 0.0 ;// 
+           rv[specie] = 0.0 ;// 
            //pixel
            if(fDet == 0 || fDet == 1) {
              fSPDChecker->SetTaskOffset(fSPDOffset);
              //printf("spdoffset = %i \n",fSPDOffset );
              Double_t histoSPD=double(GetSPDHisto());
-
-             Double_t *stepSPD=new Double_t[AliQAv1::kNBIT];
-             CreateStepForBit(histoSPD,stepSPD);
-             fSPDChecker->SetStepBit(stepSPD);
-             spdCheck[specie] = fSPDChecker->Check(index, list[specie]);
-             if(spdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||spdCheck[specie]<0.)
-               {
-                 AliInfo(Form("SPD check result for %s  is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),spdCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
-                 spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
-               }
-             //if(spdCheck[specie]<0.5)AliInfo(Form("SPD check result  for %s (%s) is < 0.5 .The result is %f ",AliQAv1::GetAliTaskName(index),AliRecoParam::GetEventSpecieName(specie),spdCheck[specie]) );
-             delete []stepSPD;
-             retval[specie]=spdCheck[specie];
-           }
+             if(AliITSQADataMakerRec::AreEqual(histoSPD,0)==kFALSE){
+               Double_t *stepSPD=new Double_t[AliQAv1::kNBIT];
+               CreateStepForBit(histoSPD,stepSPD);
+               fSPDChecker->SetStepBit(stepSPD);
+               spdCheck[specie] = fSPDChecker->Check(index, list[specie], recoParam);
+               if(spdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||spdCheck[specie]<0.)
+                 {
+                   AliInfo(Form("SPD check result for %s  is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),spdCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
+                   spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
+                 }
+               delete []stepSPD;
+             }//end check SPD entries
+             else{spdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+             rv[specie]=spdCheck[specie];
+           }//end SPD check
            //drift
            if(fDet == 0 || fDet == 2) {
              fSDDChecker->SetTaskOffset(fSDDOffset);
              Double_t histoSDD=double(GetSDDHisto());
-             Double_t *stepSDD=new Double_t[AliQAv1::kNBIT];
-             CreateStepForBit(histoSDD,stepSDD);
-             fSDDChecker->SetStepBit(stepSDD);
-             sddCheck[specie] = fSDDChecker->Check(index, list[specie]);
-             if(sddCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||sddCheck[specie]<0.)
-               {
-                 AliInfo(Form("SDD check result for %s  is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),sddCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
-                 sddCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
-               }
-             //if(sddCheck[specie]<0.5)AliInfo(Form("SDD check result  for %s (%s) is < 0.5 .The result is %f\f ",AliQAv1::GetAliTaskName(index),AliRecoParam::GetEventSpecieName(specie),sddCheck[specie]) );
-             delete []stepSDD;
-             if(sddCheck[specie]>retval[specie])retval[specie]=sddCheck[specie];  
-           }
+             if(AliITSQADataMakerRec::AreEqual(histoSDD,0)==kFALSE){
+               Double_t *stepSDD=new Double_t[AliQAv1::kNBIT];
+               CreateStepForBit(histoSDD,stepSDD);
+               fSDDChecker->SetStepBit(stepSDD);
+               sddCheck[specie] = fSDDChecker->Check(index, list[specie], recoParam);  
+               if(sddCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||sddCheck[specie]<0.)
+                 {
+                   AliInfo(Form("SDD check result for %s  is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),sddCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
+                   sddCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
+                 }
+               delete []stepSDD;
+             }//end check SDD entries
+             else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+             if(sddCheck[specie]>rv[specie])rv[specie]=sddCheck[specie];  
+           }//end SDD
            //strip
            if(fDet == 0 || fDet == 3) {
              fSSDChecker->SetTaskOffset(fSSDOffset);
              Double_t histoSSD=double(GetSSDHisto());
+             if(AliITSQADataMakerRec::AreEqual(histoSSD,0)==kFALSE){
              Double_t *stepSSD=new Double_t[AliQAv1::kNBIT];
              CreateStepForBit(histoSSD,stepSSD);
              fSSDChecker->SetStepBit(stepSSD);
-             ssdCheck[specie] = fSSDChecker->Check(index, list[specie]);
+             ssdCheck[specie] = fSSDChecker->Check(index, list[specie], recoParam);
              if(ssdCheck[specie]>fUpTestValue[AliQAv1::kFATAL]||ssdCheck[specie]<0.)
                {
                  AliInfo(Form("SSD check result for %s is out of range (%f)!!! Retval of specie %s is sit to -1\n ",AliQAv1::GetAliTaskName(index),ssdCheck[specie],AliRecoParam::GetEventSpecieName(specie)));
                  ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];
                }
-             //if(ssdCheck[specie]<0.5)AliInfo(Form("SSD check result  for %s (%s) is < 0.5 . The result is %f ",AliQAv1::GetAliTaskName(index),AliRecoParam::GetEventSpecieName(specie),ssdCheck[specie]) );
              delete [] stepSSD;
-             if(ssdCheck[specie]>retval[specie])retval[specie]=ssdCheck[specie];
-           }
+             }//end check SSD entries
+             else{ssdCheck[specie]=fUpTestValue[AliQAv1::kFATAL];}
+             if(ssdCheck[specie]>rv[specie])rv[specie]=ssdCheck[specie];
+           }//end SSD
            
-           AliInfo(Form("Check result for %s: \n\t  SPD %f \n\t  SDD %f \n\t  SSD %f \n Check result %f \n ",AliQAv1::GetAliTaskName(index),spdCheck[specie],sddCheck[specie],ssdCheck[specie],retval[specie]));
+           AliInfo(Form("Check result for %s: \n\t  SPD %f \n\t  SDD %f \n\t  SSD %f \n Check result %f \n ",AliQAv1::GetAliTaskName(index),spdCheck[specie],sddCheck[specie],ssdCheck[specie],rv[specie]));
            // here merging part for common ITS QA result
            // 
          }//end entries
       }//end if event specie
     }//end for
-    return retval;  
+  }
 }
 
-
 //____________________________________________________________________________
 void AliITSQAChecker::SetTaskOffset(Int_t SPDOffset, Int_t SDDOffset, Int_t SSDOffset)
 {