]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSRawFitterv1.cxx
Implementing Marcelos classes
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRawFitterv1.cxx
index d9b9679152a327d01c1858823fb9694901e73301..2a3e40940880c6fbf6537f1c8457cb9b8e8508ee 100644 (file)
 // 
 // Typical use case:
 //     AliPHOSRawFitter *fitter=new AliPHOSRawFitter();
-//     fitter->SetSamples(sig,sigStart,sigLength);
-//     fitter->SetNBunches(nBunches);
 //     fitter->SetChannelGeo(module,cellX,cellZ,caloFlag);
 //     fitter->SetCalibData(fgCalibData) ;
-//     fitter->Eval();
+//     fitter->Eval(sig,sigStart,sigLength);
 //     Double_t amplitude = fitter.GetEnergy();
 //     Double_t time      = fitter.GetTime();
 //     Bool_t   isLowGain = fitter.GetCaloFlag()==0;
 // Modified: Yuri Kharlov (Jul.2009)
 
 // --- ROOT system ---
-#include "TArrayD.h"
+#include "TArrayI.h"
 #include "TList.h"
 #include "TMath.h"
 #include "TMinuit.h"
-#include "TCanvas.h"
-#include "TH1.h"
-#include "TH2.h"
-#include "TF1.h"
-#include "TROOT.h"
 
 // --- AliRoot header files ---
 #include "AliLog.h"
@@ -153,8 +146,8 @@ Bool_t AliPHOSRawFitterv1::Eval(const UShort_t *signal, Int_t sigStart, Int_t si
       pedMean += signal[i];
       pedRMS  += signal[i]*signal[i] ;
     }
-    fSamples->AddAt(signal[i],i);
-    fTimes  ->AddAt(       i ,i);
+    fSamples->AddAt(signal[i],sigLength-i-1);
+    fTimes  ->AddAt(i ,i);
   }
 
   fEnergy = -111;
@@ -189,6 +182,10 @@ Bool_t AliPHOSRawFitterv1::Eval(const UShort_t *signal, Int_t sigStart, Int_t si
   }
 
   if (fEnergy < kBaseLine) fEnergy = 0;
+  //Evaluate time
+  Int_t iStart = 0;
+  while(iStart<sigLength && fSamples->At(iStart)-pedestal <kBaseLine) iStart++ ;
+  fTime = sigStart-sigLength+iStart; 
   
   //calculate time and energy
   Int_t    maxBin=0 ;
@@ -263,7 +260,7 @@ Bool_t AliPHOSRawFitterv1::Eval(const UShort_t *signal, Int_t sigStart, Int_t si
       fSampleParamsLow->AddAt(double(maxAmp),5) ;
     else
       fSampleParamsLow->AddAt(double(1023),5) ;
-    fSampleParamsLow->AddAt(double(sigLength),6) ;
+    fSampleParamsLow->AddAt(double(iStart),6) ;
     fToFit->AddFirst((TObject*)fSampleParamsLow) ; 
     b=fSampleParamsLow->At(2) ;
     bmin=0.5 ;
@@ -275,7 +272,7 @@ Bool_t AliPHOSRawFitterv1::Eval(const UShort_t *signal, Int_t sigStart, Int_t si
       fSampleParamsHigh->AddAt(double(maxAmp),5) ;
     else
       fSampleParamsHigh->AddAt(double(1023),5);
-    fSampleParamsHigh->AddAt(double(sigLength),6);
+    fSampleParamsHigh->AddAt(double(iStart),6);
     fToFit->AddFirst((TObject*)fSampleParamsHigh) ; 
     b=fSampleParamsHigh->At(2) ;
     bmin=0.05 ;
@@ -363,8 +360,8 @@ Bool_t AliPHOSRawFitterv1::Eval(const UShort_t *signal, Int_t sigStart, Int_t si
     fQuality /= 0.75 + 0.0025*fEnergy ;
   
   fEnergy = efit ;
-  fTime   = t0 - 4.024*bfit ; //-10.402*bfit+4.669*bfit*bfit ; //Correction for 70 samples
-  fTime  += sigStart;
+  fTime  += t0 - 4.024*bfit ; //-10.402*bfit+4.669*bfit*bfit ; //Correction for 70 samples
+//  fTime  += sigStart;
   
   delete fSamples ;
   delete fTimes ;