]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
improved QA
authoralla <alla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 19 Jun 2008 07:52:16 +0000 (07:52 +0000)
committeralla <alla@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 19 Jun 2008 07:52:16 +0000 (07:52 +0000)
T0/AliT0QAChecker.cxx
T0/AliT0QADataMakerRec.cxx
T0/AliT0RawReader.cxx
T0/AliT0RawReader.h

index d77e4e00f8391c7af0f59296c98f2751be9fa59d..b230b33efb5295a374d136110555c26226b55e3d 100644 (file)
@@ -61,12 +61,15 @@ const Double_t AliT0QAChecker::Check(AliQA::ALITASK_t index,TObjArray * list)
   cout<<" GetAliTaskName "<<AliQA::GetAliTaskName(index)<<" index "<<index<<endl;
 
 
-  Double_t test = 0.0  ;
+  Double_t test = 10.0  ;
+  
   Int_t count = 0 ;
-  Double_t nent[100];
-  memset(nent,0,100*sizeof(Double_t));
-  Double_t w[100];
-  memset(w,1,100*sizeof(Double_t));
+  Double_t nent[200], nentraw[200];
+  TString hname[200];
+  const char *cname;
+  memset(nent,0,200*sizeof(Double_t));
+  Double_t w[200];
+  memset(w,1,200*sizeof(Double_t));
   TH1 *fhRecLEDAmp[24];  TH1 * fhRecQTC[24];
   TH1 *fhOnlineMean = 0x0;  
   TH1 * fhRecMean = 0x0;
@@ -84,26 +87,31 @@ const Double_t AliT0QAChecker::Check(AliQA::ALITASK_t index,TObjArray * list)
     while ( (hdata = dynamic_cast<TH1 *>(next())) ) {
       if (hdata) {
        nent[count] = hdata->GetEntries();
-               AliDebug(10,Form("count %i %s -> %f",count, hdata->GetName(),nent[count])) ;
-
+       cname = hdata->GetName();
+       hname[count] = cname;
+       AliDebug(10,Form("count %i %s -> %f",count, hname[count].Data(),nent[count])) ;
+                       
        if(index==2){
          if(count>23 && count<48)fhRecLEDAmp[count-24] = hdata;
          if(count>47 && count<72)fhRecQTC[count-48] = hdata;
          if(count == 72)  fhOnlineMean = hdata; 
          if(count == 73)  fhRecMean = hdata; 
        }
+       
        count++ ;
+       
         Double_t rv = 0.;
         if(hdata->GetEntries()>0) rv = 1;
        //   AliInfo(Form("%s -> %f", hdata->GetName(), rv)) ;
         test += rv ;
+       
      }
       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");
@@ -119,26 +127,29 @@ const Double_t AliT0QAChecker::Check(AliQA::ALITASK_t index,TObjArray * list)
            meanLED = fhRecLEDAmp[idet]->GetMean();
            meanQTC = fhRecQTC[idet]->GetMean();
            if (TMath::Abs(meanLED-meanQTC)> 1.) 
-           AliWarning(Form("Amplitude measurements are different in channel %i : Amp LED %f -> Amp QTC %f",idet,meanLED, meanQTC)) ;
+             AliWarning(Form("Amplitude measurements are different in channel %i : Amp LED %f -> Amp QTC %f",idet,meanLED, meanQTC)) ;
          }
        }       
-       else
-         {
-           AliDebug(10,Form(" MaxElement %f ", TMath::MaxElement(count,nent)));        
-           if(TMath::MaxElement(count,nent) > 1000) {
-             Double_t mean = TMath::Mean(count,nent,w);
-             AliDebug(10,Form(" Mean %f ", mean));     
-             for (Int_t i=0; i<count; i++) 
-               {
-                 Double_t diff = TMath::Abs(nent[i]-mean);
-                 if (diff > 0.1*mean )
-                   AliWarning(Form("Problem in Number of entried in hist %i  is %f\n", i, nent[i])) ; 
-         }
+        
+       
+       if (index == 0) {
+         Int_t realNumber = Int_t(nent[0]);
+         for (Int_t i=77; i<count; i++) 
+           {
+             Double_t diff = TMath::Abs(nent[i]-realNumber);
+             if (diff > 0.1*realNumber )
+               AliWarning(Form("Problem in Number of entried in hist %s  is %f\n",hname[i].Data() , nent[i])) ; 
+           }
        }
-         }
       }
+      
     }
+
+
   } //  if (list->GetEntries() != 0
+  
   AliInfo(Form("Test Result = %f", test)) ;
+
   return test ;
 }
+
index 450a07dd41a23a56f11ea6f33bfb4686da85ab11..2d7c199a82ea0d7daabe610f2b86dc28310a8b5f 100644 (file)
@@ -39,7 +39,7 @@
 #include "AliQAChecker.h"
 #include "AliT0RawReader.h"
 
-//#include "iostream.h"
+#include "iostream.h"
 ClassImp(AliT0QADataMakerRec)
            
 //____________________________________________________________________________ 
@@ -111,11 +111,13 @@ void AliT0QADataMakerRec::InitRaws()
   // create Raw histograms in Raw subdir
   //  printf("   AliT0QADataMakerRec::InitRaws() started\n");
   TString timename, ampname, qtcname;
+  TString timeCalname, ampCalname, qtcCalname;
 
   TH1F* fhRefPoint = new TH1F("hRefPoint","Ref Point", 10,1252170, 1252180);
   Add2RawsList( fhRefPoint,0);
    
   TH1F *fhRawCFD[24]; TH1F * fhRawLEDamp[24]; TH1F *fhRawQTC[24];
+  TH1F *fhRawCFDcal[24]; TH1F * fhRawLEDampcal[24]; TH1F *fhRawQTCcal[24];
   
   for (Int_t i=0; i<24; i++)
     {
@@ -141,7 +143,40 @@ void AliT0QADataMakerRec::InitRaws()
   Add2RawsList( fhRawORA,75);
   TH1F* fhRawORC = new TH1F("hRawORC","online OR C", 100,2000,2300);
   Add2RawsList( fhRawORC,76);
-  
+  for (Int_t i=0; i<24; i++)
+    {
+      // for events with trigger CALIBRATION_EVENT
+      timeCalname ="hRawCFDcal";
+      ampCalname = "hRawLEDcal";
+      qtcCalname = "hRawQTCcal";
+      timeCalname += i;
+      ampCalname += i;
+      qtcCalname += i;
+      fhRawCFDcal[i] = new TH1F(timeCalname.Data(), timeCalname.Data(),1000,4000,6000);
+      Add2RawsList( fhRawCFDcal[i],76+i+1);
+      fhRawLEDampcal[i] = new TH1F(ampCalname.Data(), ampCalname.Data(),100,300,600);
+      Add2RawsList( fhRawLEDampcal[i],76+i+24+1);
+      fhRawQTCcal[i] = new TH1F(qtcCalname.Data(), qtcCalname.Data(),1000,0,7000);
+      Add2RawsList( fhRawQTCcal[i],76+i+48+1);
+    }
+  TH1F* fhRawMeanCal = new TH1F("hRawMeanCal","online mean signal, calibration event",
+                               1000,7000,8000);
+  Add2RawsList( fhRawMeanCal,149);
+  TH1F* fhRawVertexCal = new TH1F("hRawVertexCal","online vertex signal, calibration even ",
+                                 1000,7000,8000);
+  Add2RawsList( fhRawVertexCal,150);
+  TH1F* fhRawORAcal = new TH1F("hRawORAcal","online OR A", 200,5000,7000);
+  Add2RawsList( fhRawORAcal,151);
+  TH1F* fhRawORCcal = new TH1F("hRawORCcal","online OR C", 200,5000,7000);
+  Add2RawsList( fhRawORCcal,152);
+  TH1F* fhMultcal = new TH1F("hMultcal","full mulltiplicity", 1000,0,10000);
+  Add2RawsList( fhMultcal,153);
+  TH1F* fhMultScal = new TH1F("hMultScal","full multiplicity with semi-central trigger",
+                             1000,0,10000);
+  Add2RawsList( fhMultScal,154);
+  TH1F* fhMultCcal = new TH1F("hMultCcal","full multiplicity with central trigger", 
+                             1000,0,10000);
+  Add2RawsList( fhMultCcal,155);
 }
 
 //____________________________________________________________________________ 
@@ -205,12 +240,16 @@ void AliT0QADataMakerRec::InitESDs()
 void AliT0QADataMakerRec::MakeRaws( AliRawReader* rawReader)
 {
   //fills QA histos for RAW
+  Int_t shift=0;
   AliT0RawReader *start = new AliT0RawReader(rawReader);
   //  start->Next();
   if (! start->Next())
     AliDebug(1,Form(" no raw data found!!"));
   else
     {  
+
+      UInt_t type =rawReader->GetType();
+      //     cout<<" !!!!! new event type = "<<type<<endl;
       Int_t allData[110][5];
       for (Int_t i0=0; i0<105; i0++)
        {
@@ -222,38 +261,62 @@ void AliT0QADataMakerRec::MakeRaws( AliRawReader* rawReader)
       
       GetRawsData(0) -> Fill( allData[0][0]);
       allData[0][0] = allData[0][0] - 5000; 
-      
+      if (type == 8) shift=76;
+      if (type == 10) shift=0;
+           
       for (Int_t ik = 0; ik<12; ik++){
        for (Int_t iHt=0; iHt<5; iHt++){
          if(allData[ik+1][iHt]>0){
-           GetRawsData(ik+1) -> Fill(allData[ik+1][iHt]-allData[0][0]);
-           if(allData[2*ik+25][iHt] > 0 && allData[2*ik+26][iHt] > 0)
-             GetRawsData(ik+48+1)->Fill(allData[2*ik+25][iHt]-allData[2*ik+26][iHt]);
-           if(allData[ik+13][iHt]!=0 )
-             GetRawsData(ik+24+1)->Fill(allData[ik+13][iHt]-allData[ik+1][iHt]);
-         }
+             GetRawsData(shift+ik+1) -> Fill(allData[ik+1][iHt]-allData[0][0]);
+             //              cout<<" type "<<type<<" shift "<<shift<<" koef "<<ik<<" index "<<shift+ik<<
+             //        " time "<<allData[ik+1][iHt]-allData[0][0]<<endl;
+             if(allData[2*ik+25][iHt] > 0 && allData[2*ik+26][iHt] > 0)
+               GetRawsData(shift+ik+48+1)->Fill(allData[2*ik+25][iHt]-allData[2*ik+26][iHt]);
+             if(allData[ik+13][iHt]!=0 )
+               GetRawsData(shift+ik+24+1)->Fill(allData[ik+13][iHt]-allData[ik+1][iHt]);
+         
        }
       }
-      
+      }
       for (Int_t ik = 12; ik<24; ik++) {
        for (Int_t iHt=0; iHt<5; iHt++) {
          if(allData[ik+45][iHt]>0) {
-           GetRawsData(ik+1)->Fill(allData[ik+45][iHt]-allData[0][0]);
+           GetRawsData(shift+ik+1)->Fill(allData[ik+45][iHt]-allData[0][0]);
+           //  cout<<" type "<<type<<" shift "<<shift<<" index "<<shift+ik<<
+           // " time "<<allData[ik+1][iHt]-allData[0][0]<<endl;
+
            if(allData[2*ik+57][iHt]!=0 && allData[2*ik+58][iHt]!=0)
-             GetRawsData(ik+48+1)->Fill(allData[2*ik+57][iHt]-allData[2*ik+58][iHt]);
+             GetRawsData(shift+ik+48+1)->Fill(allData[2*ik+57][iHt]-allData[2*ik+58][iHt]);
            if(allData[ik+57][iHt] > 0 )
-             GetRawsData(ik+24+1)->Fill(allData[ik+57][iHt]-allData[ik+45][iHt]);
+             GetRawsData(shift+ik+24+1)->Fill(allData[ik+57][iHt]-allData[ik+45][iHt]);
          }
        }
       }
       
 
+      if(type == 10)
+       {
+         GetRawsData(73)->Fill(allData[49][0]-allData[0][0]);
+         GetRawsData(74)->Fill(allData[50][0]-allData[0][0]);
+         GetRawsData(75)->Fill(allData[51][0]-allData[0][0]);
+         GetRawsData(76)->Fill(allData[52][0]-allData[0][0]);
+       }
+      if(type == 8)
+       {
+         GetRawsData(149)->Fill(allData[49][0]-allData[0][0]);
+         GetRawsData(150)->Fill(allData[50][0]-allData[0][0]);
+         GetRawsData(151)->Fill(allData[51][0]-allData[0][0]);
+         GetRawsData(152)->Fill(allData[52][0]-allData[0][0]);
+         /*      cout<<" and "<<allData[49][0]-allData[0][0]<<
+           " vertex "<<allData[50][0]-allData[0][0]<<
+           " ORA "<<allData[51][0]-allData[0][0]<<
+           " ORC "<<allData[52][0]-allData[0][0]<<endl;*/
 
-      GetRawsData(72)->Fill(allData[49][0]-allData[0][0]);
-      GetRawsData(73)->Fill(allData[50][0]-allData[0][0]);
-      GetRawsData(74)->Fill(allData[51][0]-allData[0][0]);
-      GetRawsData(75)->Fill(allData[52][0]-allData[0][0]);
-      
+         GetRawsData(153)->Fill(allData[53][0]-allData[54][0]);
+         if(allData[55][0])  GetRawsData(154)->Fill(allData[53][0]-allData[54][0]);
+         if(allData[55][0])  GetRawsData(155)->Fill(allData[53][0]-allData[54][0]);
+
+       }  
       delete start;
     }
   
index 34966418455c0b2f8df6e754a0086414bea91a8a..618324151fcf236a98c81c3f73bab80b54a26222 100644 (file)
@@ -113,7 +113,7 @@ Bool_t  AliT0RawReader::Next()
    Int_t fNTRM = fParam->GetNumberOfTRMs();
    for ( Int_t k=0; k<110; k++) {
     koefhits[k]=0;
-    for ( Int_t jj=0; jj<50; jj++) {
+    for ( Int_t jj=0; jj<5; jj++) {
       fAllData[k][jj]=0;
      }
    }
@@ -188,9 +188,9 @@ Bool_t  AliT0RawReader::Next()
                }
                if(correct){
                  hit=koefhits[koef];
-                 if(hit>50) {  
-                   AliWarning(Form("Too many hits for %i channel  ! ",koef)); 
-                   break; 
+                 if(hit>5) {  
+                   AliWarning(Form("Too many hits for %i channel - %i ! ",koef,koefhits[koef] )); 
+                   hit=5;
                  }
                  fAllData[koef][hit]=time; 
                  koefhits[koef]++;
index 4d250c9be0116de6a1f220c88f56a0449aecc6a0..16a7367491f2306eb8a46afa18c5add939098148 100644 (file)
@@ -62,7 +62,7 @@ class AliT0RawReader : public TTask {
   AliT0Parameters *fParam;       // instanse of  Parameters class
   Bool_t           fIsOnline;     // for case online DA usage
   
-  Int_t            fAllData[110][50]; // container for raw data
+  Int_t            fAllData[110][5]; // container for raw data
   
  ClassDef(AliT0RawReader,2) //class for reading T0 Raw data
 };