]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - VZERO/AliVZERODigitizer.cxx
Updates needed for full jet reconstruction (charged + emcal) [Magali Estienne]
[u/mrichter/AliRoot.git] / VZERO / AliVZERODigitizer.cxx
index 25c0a14f1e09b03963adfcc563de25b049462bc4..7ccd763ee0d7a5831edd3237bc50bf676a9ce49e 100644 (file)
@@ -115,8 +115,8 @@ Bool_t AliVZERODigitizer::Init()
   // Initialises the Digit array
   fDigits = new TClonesArray ("AliVZEROdigit", 1000);
   
-  TGeoHMatrix *im = AliGeomManager::GetMatrix("VZERO/V0C");
-//  im->Print();
+  //  TGeoHMatrix *im = AliGeomManager::GetMatrix("VZERO/V0C");
+  //  im->Print();
   
   return kTRUE;
 }
@@ -127,18 +127,19 @@ void AliVZERODigitizer::Exec(Option_t* /*option*/)
   // Creates digits from hits
      
   Int_t       map[80];    // 48 values on V0C + 32 on V0A
+//  Int_t       pmNumber[80];
   Int_t       adc[64];    // 32 PMs on V0C + 32 PMs on V0A
   Float_t     time[80], time_ref[80], time2[64];
   Float_t     adc_gain[80]; 
   Float_t     adc_pedestal[64],adc_sigma[64];    
   fNdigits     =    0;  
-  Float_t     PMGain_smeared[64];  
+  Float_t     pmGain_smeared[64];  
   Float_t     cPM[80];
   
   // Smearing of the PM tubes intrinsic characteristics
   
   for(Int_t ii=0; ii<64; ii++) {
-      PMGain_smeared[ii] = gRandom->Gaus(fPMGain, fPMGain/5); }
+      pmGain_smeared[ii] = gRandom->Gaus(fPMGain, fPMGain/5); }
               
   // Retrieval of ADC gain values and pedestal information from local CDB 
   // I use only the first 64th values of the calibration array in CDB 
@@ -150,18 +151,18 @@ void AliVZERODigitizer::Exec(Option_t* /*option*/)
    
   for(Int_t i=0; i<16; i++) { 
             adc_gain[i] = fCalibData->GetGain(i); 
-            cPM[i]      = fPhotoCathodeEfficiency * PMGain_smeared[i];}
+            cPM[i]      = fPhotoCathodeEfficiency * pmGain_smeared[i];}
   
   for(Int_t j=16; j<48; j=j+2) { 
             Int_t i=(j+17)/2;
             adc_gain[j]   = fCalibData->GetGain(i);        
            adc_gain[j+1] = fCalibData->GetGain(i); 
-           cPM[j]        = fPhotoCathodeEfficiency * PMGain_smeared[i];   
-           cPM[j+1]      = fPhotoCathodeEfficiency * PMGain_smeared[i]; }
+           cPM[j]        = fPhotoCathodeEfficiency * pmGain_smeared[i];   
+           cPM[j+1]      = fPhotoCathodeEfficiency * pmGain_smeared[i]; }
            
   for(Int_t i=48; i<80; i++){ 
             adc_gain[i] = fCalibData->GetGain(i-16); 
-           cPM[i]      = fPhotoCathodeEfficiency * PMGain_smeared[i-16];};
+           cPM[i]      = fPhotoCathodeEfficiency * pmGain_smeared[i-16];};
   
   for(Int_t  i=0; i<64; i++){ adc_pedestal[i] = fCalibData->GetPedestal(i); 
                               adc_sigma[i]    = fCalibData->GetSigma(i); }; 
@@ -240,29 +241,31 @@ void AliVZERODigitizer::Exec(Option_t* /*option*/)
 // Now builds the scintillator cell response (80 cells i.e. 80 responses)
          
    for (Int_t i=0; i<80; i++) {    
-       Float_t q1 = Float_t ( map[i] )* cPM[i] * kQe;
-       Float_t noise = gRandom->Gaus(10.5,3.22);
-       Float_t pmResponse  =  q1/kC*TMath::Power(ktheta/kthau,1/(1-ktheta/kthau)) 
+        Float_t q1 = Float_t ( map[i] )* cPM[i] * kQe;
+        Float_t noise = gRandom->Gaus(10.5,3.22);
+        Float_t pmResponse  =  q1/kC*TMath::Power(ktheta/kthau,1/(1-ktheta/kthau)) 
         + noise*1e-3;  
-       map[i] = Int_t( pmResponse * adc_gain[i]);
-       if(map[i] > (110/2)) {map[i] = Int_t(gRandom->Gaus(map[i], 110/6));}
-     }
+        map[i] = Int_t( pmResponse * adc_gain[i]);
+//     printf("cell=%d,  pmNumber=%d,  mip=%f \n",i,GetPMNumber(i), (1.0/fCalibData->GetMIPperADC(GetPMNumber(i))));
+        if(map[i] > (int(( 1.0/fCalibData->GetMIPperADC(GetPMNumber(i))/2 ) + 0.5)) )
+                 {map[i] = Int_t(gRandom->Gaus(map[i], (int(( 1.0/fCalibData->GetMIPperADC(GetPMNumber(i))/6 ) + 0.5)) ));}
+   }
       
 // Now transforms 80 cell responses into 64 photomultiplier responses
 // Also adds the ADC pedestals taken out of the calibration data base
        
    for (Int_t j=0; j<16; j++){
-       adc[j]  = map [j] + gRandom->Gaus(adc_pedestal[j], adc_sigma[j]);
+        adc[j]  = static_cast<Int_t>(map [j] + gRandom->Gaus(adc_pedestal[j], adc_sigma[j]));
        time2[j]= time[j];}
        
    for (Int_t j=48; j<80; j++){
-       adc[j-16]  = map [j] 
-                  + gRandom->Gaus(adc_pedestal[j-16],adc_sigma[j-16]);
+        adc[j-16]  = static_cast<Int_t>(map [j] 
+                                       + gRandom->Gaus(adc_pedestal[j-16],adc_sigma[j-16]));
        time2[j-16]= time[j]; }
        
    for (Int_t j=0; j<16; j++){
-       adc[16+j] = map [16+2*j]+ map [16+2*j+1] 
-                 + gRandom->Gaus(adc_pedestal[16+j], adc_sigma[16+j]);
+        adc[16+j] = static_cast<Int_t>(map [16+2*j]+ map [16+2*j+1] 
+                                      + gRandom->Gaus(adc_pedestal[16+j], adc_sigma[16+j]));
        Float_t min_time = TMath::Min(time [16+2*j],time [16+2*j+1]);
        time2[16+j] = min_time;
        if(min_time==0.0){time2[16+j]=TMath::Max(time[16+2*j],time[16+2*j+1]);}
@@ -318,7 +321,7 @@ AliVZEROCalibData* AliVZERODigitizer::GetCalibData() const
 //     AliWarning("Load of calibration data from default storage failed!");
 //     AliWarning("Calibration data will be loaded from local storage ($ALICE_ROOT)");
 //     Int_t runNumber = man->GetRun();
-//     entry = man->GetStorage("local://$ALICE_ROOT")
+//     entry = man->GetStorage("local://$ALICE_ROOT/OCDB")
 //       ->Get("VZERO/Calib/Data",runNumber);
 //     
 //   }
@@ -335,3 +338,21 @@ AliVZEROCalibData* AliVZERODigitizer::GetCalibData() const
 
 }
 
+//____________________________________________________________________________
+Int_t AliVZERODigitizer::GetPMNumber(Int_t cell) const
+
+{
+   
+  Int_t pmNumber[80] = { 0,  1,  2,  3,  4,  5,  6,  7,
+                          8,  9, 10, 11, 12, 13, 14, 15, 
+                        16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 
+                        24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31,
+                        32, 33, 34, 35, 36, 37, 38, 39,
+                        40, 41, 42, 43, 44, 45, 46, 47, 
+                        48, 49, 50, 51, 52, 53, 54, 55,
+                        56, 57, 58, 59, 60, 61, 62, 63 };
+                             
+  return pmNumber[cell];       
+}
+
+