]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSRawFitterv0.cxx
Cosmetic changes and correction of comments with use case.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSRawFitterv0.cxx
index e1d112544eebbe655306f5f196566d02c9c2849b..8af327035b0be490df2eedc527c61ac185cda29f 100644 (file)
 // of bunches in the signal.
 // 
 //     AliPHOSRawFitterv0 *fitterv0=new AliPHOSRawFitterv0();
-//     fitterv0->SetSamples(sig,sigStart,sigLength);
-//     fitterv0->SetNBunches(nBunches);
 //     fitterv0->SetChannelGeo(module,cellX,cellZ,caloFlag);
 //     fitterv0->SetCalibData(fgCalibData) ;
-//     fitterv0->Eval();
+//     fitterv0->Eval(sig,sigStart,sigLength);
 //     Double_t amplitude = fitterv0.GetEnergy();
 //     Double_t time      = fitterv0.GetTime();
 //     Bool_t   isLowGain = fitterv0.GetCaloFlag()==0;
@@ -48,13 +46,10 @@ ClassImp(AliPHOSRawFitterv0)
 //-----------------------------------------------------------------------------
 AliPHOSRawFitterv0::AliPHOSRawFitterv0():
   TObject(),
-  fSignal(0),
   fModule(0),
   fCellX(0),
   fCellZ(0),
   fCaloFlag(0),
-  fStart(0),
-  fLength(0),
   fNBunches(0),
   fPedSubtract(kFALSE),
   fEnergy(-111),
@@ -73,19 +68,15 @@ AliPHOSRawFitterv0::AliPHOSRawFitterv0():
 AliPHOSRawFitterv0::~AliPHOSRawFitterv0()
 {
   //Destructor
-  delete [] fSignal;
 }
 
 //-----------------------------------------------------------------------------
 AliPHOSRawFitterv0::AliPHOSRawFitterv0(const AliPHOSRawFitterv0 &phosFitter ):
   TObject(),
-  fSignal      (phosFitter.fSignal),
   fModule      (phosFitter.fModule),
   fCellX       (phosFitter.fCellX),
   fCellZ       (phosFitter.fCellZ),
   fCaloFlag    (phosFitter.fCaloFlag),
-  fStart       (phosFitter.fStart),
-  fLength      (phosFitter.fLength),
   fNBunches    (phosFitter.fNBunches),
   fPedSubtract (phosFitter.fPedSubtract),
   fEnergy      (phosFitter.fEnergy),
@@ -106,13 +97,10 @@ AliPHOSRawFitterv0& AliPHOSRawFitterv0::operator = (const AliPHOSRawFitterv0 &ph
   //Assignment operator.
 
   if(this != &phosFitter) {
-    fSignal       = phosFitter.fSignal;
     fModule       = phosFitter.fModule;
     fCellX        = phosFitter.fCellX;
     fCellZ        = phosFitter.fCellZ;
     fCaloFlag     = phosFitter.fCaloFlag;
-    fStart        = phosFitter.fStart;
-    fLength       = phosFitter.fLength;
     fNBunches     = phosFitter.fNBunches;
     fPedSubtract  = phosFitter.fPedSubtract;
     fEnergy       = phosFitter.fEnergy;
@@ -130,19 +118,6 @@ AliPHOSRawFitterv0& AliPHOSRawFitterv0::operator = (const AliPHOSRawFitterv0 &ph
 
 //-----------------------------------------------------------------------------
 
-void AliPHOSRawFitterv0::SetSamples(const UShort_t *sig, Int_t sigStart, Int_t sigLength)
-{
-  // Set the sample array, its start and length in time bin units
-
-  fStart   = sigStart;
-  fLength  = sigLength;
-  fSignal  = new UShort_t[fLength];
-  for (Int_t i=0; i<fLength; i++) {
-    fSignal[i] = sig[i];
-  }
-}
-//-----------------------------------------------------------------------------
-
 void AliPHOSRawFitterv0::SetChannelGeo(const Int_t module, const Int_t cellX,
                                     const Int_t cellZ,  const Int_t caloFlag)
 {
@@ -156,7 +131,7 @@ void AliPHOSRawFitterv0::SetChannelGeo(const Int_t module, const Int_t cellX,
 }
 //-----------------------------------------------------------------------------
 
-Bool_t AliPHOSRawFitterv0::Eval()
+Bool_t AliPHOSRawFitterv0::Eval(const UShort_t *signal, Int_t sigStart, Int_t sigLength)
 {
   // Calculate signal parameters (energy, time, quality) from array of samples
   // Energy is a maximum sample minus pedestal 9
@@ -178,15 +153,23 @@ Bool_t AliPHOSRawFitterv0::Eval()
   UShort_t maxSample = 0;
   Int_t    nMax      = 0;
 
-  for (Int_t i=0; i<fLength; i++) {
+  for (Int_t i=0; i<sigLength; i++) {
     if (i<kPreSamples) {
       nPed++;
-      pedMean += fSignal[i];
-      pedRMS  += fSignal[i]*fSignal[i] ;
+      pedMean += signal[i];
+      pedRMS  += signal[i]*signal[i] ;
+    }
+    if(signal[i] >  maxSample) maxSample = signal[i];
+    if(signal[i] == maxSample) nMax++;
+
+    if(fPedSubtract) {
+      if( (signal[i]-(Float_t)(pedMean/nPed)) >kBaseLine ) fTime = (Double_t)i;
     }
-    if(fSignal[i] > maxSample) maxSample = fSignal[i];
-    if(fSignal[i] == maxSample) nMax++;
+    else //ZS
+      if( (signal[i]-(Float_t)fAmpOffset    ) >kBaseLine ) fTime = (Double_t)i;
   }
+  fTime += sigStart;
+  
   fEnergy = (Double_t)maxSample;
   if (maxSample > 900 && nMax > 2) fOverflow = kTRUE;