]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSRawDecoderv1.cxx
Possibility to set offset in SZ runs
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRawDecoderv1.cxx
index ac1758e01ba3f433b43b2d1d26a4e4ee93be3f07..38bb48855abc9d61af11af488d61ac24fe6c506b 100644 (file)
@@ -166,6 +166,7 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
   Int_t    tLength  = 0;
   fEnergy = -111;
   Float_t pedMean = 0;
+  Float_t pedRMS = 0;
   Int_t   nPed = 0;
   Float_t baseLine = 1.0;
   const Float_t nPreSamples = 10;
@@ -202,14 +203,21 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
       fNewAmp = in->GetSignal() ;
       fNewTime=in->GetTime() ;  
   
-      //new handle already collected 
+      //now handle already collected 
       Double_t pedestal =0. ;
+      fPedestalRMS=0. ;
       if(fPedSubtract){ 
-       if (nPed > 0)
+       if (nPed > 0){
          pedestal = (Double_t)(pedMean/nPed); 
+          fPedestalRMS=pedRMS/nPed-pedestal*pedestal ;
+          if(fPedestalRMS>0.) fPedestalRMS=TMath::Sqrt(fPedestalRMS) ;
+        }
        else
          return kFALSE;
       }
+      else{
+        pedestal = fAmpOffset ;
+      }
 
       //calculate time and energy
       Int_t maxBin=0 ;
@@ -219,7 +227,7 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
       Double_t wts=0 ;                                                                                                                       
       Int_t tStart = 0 ;                                                                                                                   
       for(Int_t i=iBin; i<fSamples->GetSize(); i++){
-        if(fSamples->At(i)>0){                                                                                                             
+        if(fSamples->At(i)>pedestal){                                                                                                             
           Double_t de=fSamples->At(i)-pedestal ;                                                                                           
           if(de>1.){
             aMean+=de*i ;                                                                                                                      
@@ -288,7 +296,7 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
        gMinuit->SetFCN(AliPHOSRawDecoderv1::UnfoldingChiSquare) ;  
        // To set the address of the minimization function 
        
-       fToFit->Clear() ;
+       fToFit->Clear("nodelete") ;
        Double_t b,bmin,bmax ;
        if(fLowGainFlag){
          fSampleParamsLow->AddAt(pedestal,4) ;
@@ -461,6 +469,7 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
        iBin--;                                                                                                                                
        if(fPedSubtract && fNewTime < nPreSamples) {                                                                                    
          pedMean += in->GetSignal();                                                                                                          
+         pedRMS += in->GetSignal()*in->GetSignal() ;
          nPed++;                                                                                                                              
        }                                                                                                                                      
        fSamples->AddAt(fNewAmp,iBin);                                                                                                 
@@ -474,9 +483,10 @@ Bool_t AliPHOSRawDecoderv1::NextDigit()
     iBin--;
     if(fPedSubtract && (in->GetTime() < nPreSamples)) {
       pedMean += in->GetSignal();
+      pedRMS += in->GetSignal()*in->GetSignal() ;
       nPed++;
     }
-    fSamples->AddAt(in->GetSignal(),iBin);
+    fSamples->AddAt(in->GetSignal()-10,iBin);
     fTimes->AddAt(in->GetTime(),iBin);
  
 //Debug==============