]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - T0/AliT0QAChecker.cxx
fixed warning
[u/mrichter/AliRoot.git] / T0 / AliT0QAChecker.cxx
index 44b6cafc45a10b938fa71277a2b3cfa857113c34..595e7bfde090bb01ccef47c76efdc5522a9de2c4 100644 (file)
 
 // --- AliRoot header files ---
 #include "AliLog.h"
-#include "AliQA.h"
+#include "AliQAv1.h"
 #include "AliQAChecker.h"
+#include "AliCDBEntry.h"
+#include "AliQAManager.h"
 #include "AliT0QAChecker.h"
 
 ClassImp(AliT0QAChecker)
 
-
 //__________________________________________________________________
-Double_t AliT0QAChecker::Check(AliQA::ALITASK_t index,TObjArray * list)
+Double_t * AliT0QAChecker::Check(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!
+  
+  Double_t * test = new Double_t[AliRecoParam::kNSpecies] ; 
+  
+  char * detOCDBDir = Form("T0/%s/%s", AliQAv1::GetRefOCDBDirName(), AliQAv1::GetRefDataDirName()) ; 
 
-
-  Double_t test = 10.0  ;
+  AliCDBEntry *QARefRec = AliQAManager::QAManager()->Get(detOCDBDir);
+  //  QARefRec->Dump();
+  if( !QARefRec){
+    AliInfo("QA reference data NOT retrieved for Reconstruction check. No T0 reference distribution");
+  }
   
-  Double_t nent[250];
-  TString hname[250];
+   for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) 
+    test[specie]    = 10.0 ; 
+
+  Double_t nent[500];
+  TString hname[500];
   const char *cname;
-  memset(nent,0,250*sizeof(Double_t));
-  Double_t w[250];
-  memset(w,1,250*sizeof(Double_t));
+  memset(nent,0,500*sizeof(Double_t));
+  Double_t w[500];
+  memset(w,1,500*sizeof(Double_t));
   TH2 *fhRecDiff[3];  
-  TH2 *fhRawEff[250];
-   TH1 *fhESD[2];
+  TH1 *fhRawEff[500];
+  TH2 *fhRawTime[500];
+  TH1 *fhESD[2];
+  TH2 *fhHits[10];
+  
+  for (Int_t specie = 0 ; specie < AliRecoParam::kNSpecies ; specie++) {
+    //  TString dataType = AliQAv1::GetAliTaskName(index);
+    if (list[specie]->GetEntries() == 0){
+      test[specie] = 1. ; // nothing to check
+    }
+    else {
+      TH1 * hdata ;
+      TH2 * h ;
+      for (Int_t ir=0; ir<list[specie]->GetEntries(); ir++) {
+      
+       //hits
 
-  //  TString dataType = AliQA::GetAliTaskName(index);
+       if(index == AliQAv1::kSIM && AliQAv1::GetTaskName(AliQAv1::kHITS)){
+         h =  (TH2*) list[specie]->UncheckedAt(ir);
+         cname = h->GetName();
+         hname[ir] = cname;
+         fhHits[ir] = h;
+       }
 
-  if (list->GetEntries() == 0){
-    test = 1. ; // nothing to check
-  }
-  else {
-    
-    TIter next(list) ;
-    TH1 * hdata ;
-    
-    TH2 * h ;
-    //  printf(" data type %i %s nentries %i\n",
-    //    index,dataType.Data(),list->GetEntries());
-    
-    for (Int_t ir=0; ir<list->GetEntries(); ir++) 
-      {
        //raw
-       if(index==0 ){
-         /*
-         if(ir < 205) {
-           hdata = (TH1*) list->UncheckedAt(ir);
-           if(hdata) {
-             cname = hdata->GetName();
-             hname[ir] = cname;
-             AliDebug(10,Form("count %i %s \n",ir, hname[ir].Data())) ;
-             fhRaw[ir] = hdata;
-           }
-           }*/
-         if(ir > 204) {
-           //    else{
-           h = (TH2*) list->UncheckedAt(ir);
-           printf(" index %i ir %i \n", index,ir);
-           if(h) {
-             cname = h->GetName();
-             hname[ir] = cname;
-             AliDebug(1,Form("count %i %s \n",ir, hname[ir].Data())) ;
-             fhRawEff[ir] = h;
-           }
-         }
-       }
-     
-       //rec
-       if(index==2){
-         h = (TH2*) list->UncheckedAt(ir);
-         
+      if(index == AliQAv1::kRAW ){
+        if(ir > 204 && ir<208 ) {
+          hdata = (TH1*) list[specie]->UncheckedAt(ir);
+          if(hdata) {
+            cname = hdata->GetName();
+            hname[ir] = cname;
+            fhRawEff[ir] = hdata;
+          }
+        }
+       if((ir>207 && ir<210)  && specie == AliRecoParam::kCalib) {
+         h =  (TH2*) list[specie]->UncheckedAt(ir);
          if(h) {
            cname = h->GetName();
            hname[ir] = cname;
-           AliDebug(1,Form("count %i %s \n",ir, hname[ir].Data())) ;
-           fhRecDiff[ir] = h;
-         }
-       }
-       //esd
-       if(index==3){
-         cout<<" ir "<<ir<<endl;
-         hdata = (TH1*) list->UncheckedAt(ir);
-         if(hdata){
-           fhESD[ir] = hdata;
-           AliDebug(1,Form("count %i %s ",ir, hname[ir].Data()) );
+           fhRawTime[ir] = h;
+          AliDebug(AliQAv1::GetQADebugLevel(), Form("count %i %s ",ir, hname[ir].Data()) );
          }
        }
       }
-      
-    if (index == 0)
-      {
-       //raw data
-       
-       for (Int_t icase=205; icase<207; icase++) {
-         for (Int_t idet=0; idet<24; idet++) {
-           Double_t mean = fhRawEff[icase]->
-             ProjectionY(Form("%s_py_%i_%i",
-                              fhRawEff[icase]->GetName(), idet,icase),
-                         idet,idet+1)->GetMean();
-           Double_t rms= fhRawEff[icase]->
-             ProjectionY(Form("%s_py%i_%i", 
-                              fhRawEff[icase]->GetName(), idet,icase),
-                         idet,idet+1)->GetRMS();
-           printf("name %s icase %i idet %i mean %f, rms %f\n",
-                  fhRawEff[icase]->GetName(), icase, idet, mean,rms);
-           
-           if (mean<1.2 && mean> 0.8 ) {
-             test = 1;
-             AliDebug(1,Form("All channels works meane efficieny %f with rms %f test %f",  mean, rms, test)) ; 
-           }
-           if (mean<=0.8 && mean>= 0.5 ){
-             test = 0.5;
-             AliDebug(1,Form("%s problem in channel %i  efficieny %f test %f",
-                             fhRawEff[icase]->GetName(), idet,  mean, test)) ; 
-           }
-           if (mean<0.5 ) { 
-             test = 0.25;
-             AliDebug(1,Form("%s big problem in channel %i  efficieny %f test %f",
-                             fhRawEff[icase]->GetName(), idet,  mean, test)) ; 
-           }
-            
-         }
-         
-       }
+      //rec
+      if(index == AliQAv1::kREC){
+        h = (TH2*) list[specie]->UncheckedAt(ir);
+        if(h) {
+          cname = h->GetName();
+          hname[ir] = cname;
+           fhRecDiff[ir] = h;
+        }
+      }
+      //esd
+      if(index ==  AliQAv1::kESD){
+        hdata = (TH1*) list[specie]->UncheckedAt(ir);
+        if(hdata){
+          fhESD[ir] = hdata;
+          AliDebug(AliQAv1::GetQADebugLevel(), Form("count %i %s ",ir, hname[ir].Data()) );
+        }
       }
-    
-    if(index == 2){
-      //rec points
-      for (Int_t icase=0; icase<2; icase++) {
-       for (Int_t idet=0; idet<24; idet++) {
-         Double_t mean = fhRecDiff[icase]->
-           ProjectionY(Form("%s_py", fhRecDiff[icase]->GetName()),
-                       idet,idet+1)->GetMean();
-         Double_t rms= fhRecDiff[icase]->
-           ProjectionY(Form("%s_py", fhRecDiff[icase]->GetName()),
-                       idet,idet+1)->GetRMS();
-         printf("name %s icase %i idet %i mean %f, rms %f\n",
-                fhRecDiff[icase]->GetName(), icase, idet, mean,rms); 
-                 
-         if(TMath::Abs(mean) >1.5 || rms >1){
-           AliDebug(1,Form(" calibration is nor perfect; test=%f", test)) ;
-           test=0.25;
-         }
-         if(mean>3 || rms >5) {
-           test = 0.1;
-           AliDebug(1,Form(" wrong calibration test=%f", test)) ;
-           } 
-        }
-               
-      }         
     }
-       
-    if (index == 3) {
-      //ESD
-      for (Int_t icase=0; icase<2; icase++) {
-       Double_t rmsVertex = fhESD[icase]->GetRMS();
-       Double_t meanVertex = fhESD[icase]->GetMean();
-
-       test=1;
-       cout<<"numentries "<< fhESD[icase]->GetEntries()<<" meanVertex "<<meanVertex<<" rmsVertex "<<rmsVertex<<endl;
-       if (TMath::Abs(rmsVertex)>3) {
-         test=0.25;
-         AliDebug(1,Form("Vertex position resolution not good  , rms= %f test=%f",
-                           rmsVertex, test)) ; 
-       }
-       if (TMath::Abs(meanVertex)>3) {
-         test=0.25;
-         AliDebug(1,Form("Vertex position bad calibrated  , Mean= %f test=%f",
-                         meanVertex, test)) ; 
-       }
+
+
+
+    //raw data
+
+      if (index == AliQAv1::kRAW && specie == AliRecoParam::kCalib){
+       test[specie] = CheckRaw(list[specie],dynamic_cast<TObjArray*>(dynamic_cast<TList *>(QARefRec->GetObject())->First()));
       }
       
-    }
-       
-  } //  if (list->GetEntries() != 0
-    
-  AliInfo(Form("Test Result = %f", test)) ;
+      if(index == AliQAv1::kREC){
+        //rec points
+        for (Int_t icase=0; icase<2; icase++) {
+          for (Int_t idet=0; idet<24; idet++) {
+            Double_t mean = fhRecDiff[icase]->
+            ProjectionY(Form("%s_py", fhRecDiff[icase]->GetName()),
+                        idet,idet+1)->GetMean();
+            Double_t rms= fhRecDiff[icase]->
+            ProjectionY(Form("%s_py", fhRecDiff[icase]->GetName()),
+                        idet,idet+1)->GetRMS();
+            AliDebug(AliQAv1::GetQADebugLevel(), Form("name %s icase %i idet %i mean %f, rms %f\n",
+                         fhRecDiff[icase]->GetName(), icase, idet, mean,rms)); 
+                 
+            if(TMath::Abs(mean) >1.5 || rms >1){
+              AliDebug(AliQAv1::GetQADebugLevel(), Form(" calibration is nor perfect; test=%f", test)) ;
+              test[specie]=0.25;
+            }
+            if(mean>3 || rms >5) {
+              test[specie] = 0.1;
+              AliDebug(AliQAv1::GetQADebugLevel(), Form(" wrong calibration test=%f", test[specie])) ;
+            } 
+          }
+        }       
+      }
+      if (index == AliQAv1::kESD) {
+        //ESD
+        for (Int_t icase=0; icase<2; icase++) {
+          Double_t rmsVertex = fhESD[icase]->GetRMS();
+          Double_t meanVertex = fhESD[icase]->GetMean();
+          test[specie]=1;
+          AliDebug(AliQAv1::GetQADebugLevel(), Form("numentries %d meanVertex %f rmsVertex %f", fhESD[icase]->GetEntries(), meanVertex, rmsVertex));
+          if (TMath::Abs(rmsVertex)>3) {
+            test[specie]=0.25;
+            AliDebug(AliQAv1::GetQADebugLevel(), Form("Vertex position resolution not good  , rms= %f test=%f",
+                            rmsVertex, test[specie])) ; 
+          }
+          if (TMath::Abs(meanVertex)>3) {
+            test[specie]=0.25;
+            AliDebug(AliQAv1::GetQADebugLevel(), Form("Vertex position bad calibrated  , Mean= %f test=%f",
+                            meanVertex, test[specie])) ; 
+          }
+        }
+      }
+    } //  if (list->GetEntries() != 0
+    AliDebug(AliQAv1::GetQADebugLevel(), Form("Test Result = %f", test[specie])) ;
+  } 
   
   return test ;
 }
 
+//--------------------------------------------------------------------------
+Double_t AliT0QAChecker::CheckRaw(TObjArray *listrec , TObjArray *listref) const
+{
+  
+    //TH1 *fhRawEff;
+    //TH1 *fhRawRef;
+  TH2 *fhRawRec2d;
+  TH2 *fhTime;
+
+  TIter next(listref) ;
+    //Int_t counter=0;
+  Float_t refmean[50][25]; 
+  Float_t refrms[50][25]; 
+  Float_t checkr = 0;
+  
+    //Int_t nref = listref->GetEntries(); 
+    //Int_t nrec = listrec->GetEntries(); 
+  
+  for (Int_t iii=4; iii<6; iii++){
+    fhRawRec2d =(TH2*) listref->At(iii); 
+    for (Int_t idet=1; idet<25; idet++) {
+      
+      refmean[iii-4][idet] = fhRawRec2d->      
+       ProjectionY(Form("%s_py_%i_%i",                                                              fhRawRec2d ->GetName(), idet,iii-4),
+                   idet,idet+1)->GetMean();
+      
+      refrms[iii-4][idet] = fhRawRec2d->
+       ProjectionY(Form("%s_py%i_%i", 
+                        fhRawRec2d ->GetName(), idet,iii-4),
+                   idet,idet+1)->GetRMS();
+      
+      }
+  }
+
+  
+  TString nameDev[2] = {"CDF", "LED"};
+  for (Int_t icase=208; icase<210; icase++) {
+    fhTime = (TH2*) listrec->At(icase);
+    for (Int_t idet=1; idet<25; idet++) {
+      Double_t binmean = fhTime->
+      ProjectionY(Form("%s_py_%i_%i",                                                              fhTime ->GetName(), idet,icase),
+                   idet,idet+1)->GetMean();
+//        Double_t rms= fhTime ->ProjectionY(Form("%s_py%i_%i", 
+//                                              fhTime ->GetName(), idet,icase),
+//                                         idet,idet+1)->GetRMS();
+      Double_t diffmean = binmean-refmean[icase-208][idet];
+      
+      if (TMath::Abs(diffmean) < 2 ) {
+       checkr = 1;
+       //      printf(" Laser calibration signal sits on its place %f for PMT %s %i : check = %f\n",  diffmean, nameDev[icase-208].Data() ,idet, checkr);
+       AliDebug(AliQAv1::GetQADebugLevel(),
+                Form(" Laser calibration signal sits on its place %f for PMT %s %i : check = %f\n",  diffmean, nameDev[icase-208].Data(),idet, checkr)) ; 
+     }
+     if (TMath::Abs(diffmean) <= 5 && TMath::Abs(diffmean) >= 2 ){
+       checkr = 0.5;
+       // printf(" Laser calibration signal shifted by  %f ps for PMT %s %i : check = %f\n",  diffmean*24.4, nameDev[icase-208].Data(),idet, checkr);
+       AliDebug(AliQAv1::GetQADebugLevel(),
+               Form(" Laser calibration signal shifted by  %f ps (%f channels) for PMT %s %i : check = %f\n",  diffmean*24.4 ,diffmean , nameDev[icase-208].Data(),idet, checkr)) ; 
+      }
+     if (TMath::Abs(diffmean) > 5) { 
+       checkr = 0.25;
+       //   printf(" Big problems :laser calibration signal shifted by  %f ps (%f channels) for PMT %s %i : check = %f\n",  diffmean*24.4, diffmean, nameDev[icase-208].Data(),idet, checkr);
+       AliDebug(AliQAv1::GetQADebugLevel(),
+               Form(" Big problems :laser calibration signal shifted by  %f ps (%f channels) for PMT %s %i : check = %i\n",  diffmean*24.4, diffmean, nameDev[icase-208].Data(),idet, checkr)) ; 
+       
+     }
+     
+   }
+ }
+
+  return checkr;
+}
+