Histos of mean charges added
authorcheynis <cheynis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 Jul 2008 22:07:23 +0000 (22:07 +0000)
committercheynis <cheynis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 21 Jul 2008 22:07:23 +0000 (22:07 +0000)
VZERO/AliVZEROQADataMakerRec.cxx

index 6c3e69b..ac5e4a7 100644 (file)
@@ -31,6 +31,9 @@
 // --- AliRoot header files ---
 #include "AliESDEvent.h"
 #include "AliLog.h"
+#include "AliCDBManager.h"
+#include "AliCDBStorage.h"
+#include "AliCDBEntry.h"
 #include "AliVZEROQADataMakerRec.h"
 #include "AliQAChecker.h"
 #include "AliRawReader.h"
@@ -42,18 +45,31 @@ ClassImp(AliVZEROQADataMakerRec)
            
 //____________________________________________________________________________ 
   AliVZEROQADataMakerRec::AliVZEROQADataMakerRec() : 
-  AliQADataMakerRec(AliQA::GetDetName(AliQA::kVZERO), "VZERO Quality Assurance Data Maker")
+    AliQADataMakerRec(AliQA::GetDetName(AliQA::kVZERO), "VZERO Quality Assurance Data Maker"),
+    fCalibData(GetCalibData()),
+    fEvent(0)
+    
 {
   // constructor
+  
+   for(Int_t i=0; i<64; i++){  
+       fEven[i] = 0;   
+       fOdd[i]  = 0;  }
+  
+   for(Int_t i=0; i<128; i++){  
+       fADC_Mean[i] = 0.0;   } 
 }
 
 //____________________________________________________________________________ 
-AliVZEROQADataMakerRec::AliVZEROQADataMakerRec(const AliVZEROQADataMakerRec& qadm) :
-  AliQADataMakerRec()
+  AliVZEROQADataMakerRec::AliVZEROQADataMakerRec(const AliVZEROQADataMakerRec& qadm) :
+  AliQADataMakerRec(),
+    fCalibData(GetCalibData()),
+    fEvent(0)
+  
 {
   //copy constructor 
-  SetName((const char*)qadm.GetName()) ; 
-  SetTitle((const char*)qadm.GetTitle()); 
+   SetName((const char*)qadm.GetName()) ; 
+   SetTitle((const char*)qadm.GetTitle()); 
 }
 
 //__________________________________________________________________
@@ -64,13 +80,33 @@ AliVZEROQADataMakerRec& AliVZEROQADataMakerRec::operator = (const AliVZEROQAData
   new(this) AliVZEROQADataMakerRec(qadm);
   return *this;
 }
+
+//____________________________________________________________________________
+AliVZEROCalibData* AliVZEROQADataMakerRec::GetCalibData() const
+
+{
+  AliCDBManager *man = AliCDBManager::Instance();
+
+  AliCDBEntry *entry=0;
+
+  entry = man->Get("VZERO/Calib/Data");
+
+  // Retrieval of data in directory VZERO/Calib/Data:
+
+  AliVZEROCalibData *calibdata = 0;
+
+  if (entry) calibdata = (AliVZEROCalibData*) entry->GetObject();
+  if (!calibdata)  AliFatal("No calibration data from calibration database !");
+
+  return calibdata;
+}
  
 //____________________________________________________________________________ 
 void AliVZEROQADataMakerRec::EndOfDetectorCycle(AliQA::TASKINDEX_t task, TObjArray * list)
 {
   //Detector specific actions at end of cycle
   // do the QA checking
-  AliQAChecker::Instance()->Run(AliQA::kVZERO, task, list) ;  
+  AliQAChecker::Instance()->Run(AliQA::kVZERO, task, list) ;
 }
 
 //____________________________________________________________________________ 
@@ -78,19 +114,19 @@ void AliVZEROQADataMakerRec::InitESDs()
 {
   //Create histograms to controll ESD
  
-  TH1I * h1 = new TH1I("hVZERONbPMA", "Number of PMs fired in V0A", 80, 0, 79); 
+  TH1I * h1 = new TH1I("hVZERONbPMA", "Number of PMs fired in V0A", 80, 0, 80); 
   h1->Sumw2() ;
   Add2ESDsList(h1, 0)  ;  
                                                                                                         
-  TH1I * h2 = new TH1I("hVZERONbPMC", "Number of PMs fired in V0C", 80, 0, 79); 
+  TH1I * h2 = new TH1I("hVZERONbPMC", "Number of PMs fired in V0C", 80, 0, 80); 
   h2->Sumw2() ;
   Add2ESDsList(h2, 1) ;
  
-  TH1I * h3 = new TH1I("hVZEROMultA", "Multiplicity in V0A", 50, 0, 49) ; 
+  TH1I * h3 = new TH1I("hVZEROMultA", "Multiplicity in V0A", 50, 0, 50) ; 
   h3->Sumw2() ;
   Add2ESDsList(h3, 2) ;
  
-  TH1I * h4 = new TH1I("hVZEROMultC", "Multiplicity in V0C", 50, 0, 49) ; 
+  TH1I * h4 = new TH1I("hVZEROMultC", "Multiplicity in V0C", 50, 0, 50) ; 
   h4->Sumw2() ;
   Add2ESDsList(h4, 3) ;
 
@@ -137,26 +173,31 @@ void AliVZEROQADataMakerRec::InitESDs()
   char ADCname[12]; 
   char texte[40]; 
   TH1I *fhRawADC0[64]; 
-  TH1I *fhRawADC1[64]; 
+  TH1I *fhRawADC1[64];
   
-  TH2I * h0 = new TH2I("hCellADCMap0","ADC vs Cell for EVEN Integrator", 70, 0, 69, 512, 0, 1023);
+  TH2I *h0 = new TH2I("hCellADCMap0","ADC vs Cell for EVEN Integrator", 70, 0, 70, 512, 0, 1024);
   h0->Sumw2(); 
   Add2RawsList(h0,0) ;
-  TH2I * h1 = new TH2I("hCellADCMap1","ADC vs Cell for ODD Integrator", 70, 0, 69, 512, 0, 1023);
+  TH2I *h1 = new TH2I("hCellADCMap1","ADC vs Cell for ODD Integrator", 70, 0, 70, 512, 0, 1024);
   h1->Sumw2();
   Add2RawsList(h1,1) ;
+
+  TH2F *fhMeanADC0 = new TH2F("hCellMeanADCMap0","Mean ADC vs cell for EVEN integrator",70,-0.5,69.5,512,-0.5,511.5);       
+  Add2RawsList(fhMeanADC0,2); 
+  TH2F *fhMeanADC1 = new TH2F("hCellMeanADCMap1","Mean ADC vs cell for ODD integrator",70,-0.5,69.5,512,-0.5,511.5);       
+  Add2RawsList(fhMeanADC1,3);  
                            
   for (Int_t i=0; i<64; i++)
     {
        sprintf(ADCname,"hRaw0ADC%d",i);
        sprintf(texte,"Raw ADC in cell %d for even integrator",i);
-       fhRawADC0[i]= new TH1I(ADCname,texte,1024,0,1023);       
-       Add2RawsList(fhRawADC0[i],i+2);
-       
+       fhRawADC0[i]= new TH1I(ADCname,texte,1024,0,1024);       
+       Add2RawsList(fhRawADC0[i],i+4);
+                    
        sprintf(ADCname,"hRaw1ADC%d",i);
        sprintf(texte,"Raw ADC in cell %d for odd integrator",i);
-       fhRawADC1[i]= new TH1I(ADCname,texte,1024,0,1023);       
-       Add2RawsList(fhRawADC1[i],i+2+64);       
+       fhRawADC1[i]= new TH1I(ADCname,texte,1024,0,1024);       
+       Add2RawsList(fhRawADC1[i],i+4+64);                     
      }  
  }
 
@@ -194,24 +235,46 @@ void AliVZEROQADataMakerRec::MakeESDs(AliESDEvent * esd)
 //____________________________________________________________________________
  void AliVZEROQADataMakerRec::MakeRaws(AliRawReader* rawReader)
  {
-   //Fill histograms with Raws
-       
+  //Fill histograms with Raws, computes average ADC values dynamically (pedestal subtracted)
+                  
   AliVZERORawStream* rawStream  = new AliVZERORawStream(rawReader); 
   rawStream->Next();
-    
-  for(Int_t i=0; i<64; i++) 
-     {
-       if(!rawStream->GetIntegratorFlag(i,10)) 
-         { 
-          // even integrator - fills index 2 to 65   
-          GetRawsData(0)->Fill(i,rawStream->GetADC(i)) ; 
-           GetRawsData(i+2)->Fill(rawStream->GetADC(i)) ; }
-       else 
-         { 
-          // odd integrator  - fills index 66 to 129   
-           GetRawsData(1)->Fill(i,rawStream->GetADC(i)) ; 
-           GetRawsData(i+2+64)->Fill(rawStream->GetADC(i)) ; }         
-      }          
+  
+  Float_t ChargeEoI, Threshold;  // for pedestal subtraction 
+                              
+//  for(Int_t i=0; i<128; i++) { printf(" i = %d pedestal = %f sigma = %f \n\n", 
+//                                        i,  fCalibData->GetPedestal(i),fCalibData->GetSigma(i) );} 
+             
+  GetRawsData(2)->Reset();      // to keep only the last value of the ADC average
+  GetRawsData(3)->Reset();
+
+  for(Int_t i=0; i<64; i++) {
+      if(!rawStream->GetIntegratorFlag(i,10)) 
+           { 
+           // even integrator - fills index 4 to 67 
+           GetRawsData(0)->Fill(i,rawStream->GetADC(i)) ; 
+            GetRawsData(i+4)->Fill(rawStream->GetADC(i)) ; 
+           ChargeEoI  = (float)rawStream->GetADC(i) - fCalibData->GetPedestal(i); 
+           Threshold  = 3.0 * fCalibData->GetSigma(i);   
+           if(rawStream->GetADC(i)<1023 && ChargeEoI > Threshold) {
+              fADC_Mean[i] = ((fADC_Mean[i]*fEven[i]) + rawStream->GetADC(i)) / (fEven[i]+1); 
+              GetRawsData(2)->Fill((Float_t) i, fADC_Mean[i]);
+              fEven[i]+=1; }
+          }
+      else if(rawStream->GetIntegratorFlag(i,10)) 
+           { 
+           // odd integrator  - fills index 68 to 131  
+            GetRawsData(1)->Fill(i,rawStream->GetADC(i)) ; 
+            GetRawsData(i+4+64)->Fill(rawStream->GetADC(i)) ;
+           ChargeEoI  = (float)rawStream->GetADC(i) - fCalibData->GetPedestal(i+64) ; 
+           Threshold  = 3.0 * fCalibData->GetSigma(i+64);  
+           if(rawStream->GetADC(i)<1023 && ChargeEoI > Threshold) { 
+              fADC_Mean[i+64] = ((fADC_Mean[i+64]*fOdd[i]) + rawStream->GetADC(i)) / (fOdd[i]+1);
+              GetRawsData(3)->Fill((Float_t) i, fADC_Mean[i+64]);
+              fOdd[i]+=1; }
+          }    
+  }    
+    fEvent++;                     
  }
 
 //____________________________________________________________________________