Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 3211)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 3212)
@@ -13,4 +13,9 @@
   * macros/spline.C
     - changed according to the MCubicSpline new constructors 
+
+  * manalysis/MArrivalTimeCalc.[h,cc]
+    - changed to use the MCubicSpline class intead of the TSpline class
+    - warning: now the arrival time is again the maximum of the spline,
+      soon it will be changed to half maximum
 
 
Index: /trunk/MagicSoft/Mars/manalysis/MArrivalTimeCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MArrivalTimeCalc.cc	(revision 3211)
+++ /trunk/MagicSoft/Mars/manalysis/MArrivalTimeCalc.cc	(revision 3212)
@@ -41,5 +41,5 @@
 #include "MArrivalTimeCalc.h"
 
-#include <TSpline.h>
+#include "MCubicSpline.h"
 
 #include "MLog.h"
@@ -61,8 +61,6 @@
 // Default constructor.
 //
-// Initialize step size by default to 0.03 time slices == 100 ps.
 // 
-MArrivalTimeCalc::MArrivalTimeCalc(const char *name, const char *title)
-    : fStepSize(0.03) 
+MArrivalTimeCalc::MArrivalTimeCalc(const char *name, const char *title) 
 {
 
@@ -132,5 +130,5 @@
       
       const UInt_t idx = pixel.GetPixelId();
-      Float_t max = 0.;
+      Float_t time = 0.;
 
 
@@ -142,5 +140,5 @@
           
           const Short_t nslices = fRawEvt->GetNumLoGainSamples();
-          max = Calc(pixel.GetLoGainSamples(),nslices);
+          time = Calc(pixel.GetLoGainSamples(),nslices);
         }
       
@@ -153,5 +151,5 @@
           
           const Short_t nslices = fRawEvt->GetNumHiGainSamples();
-          max = Calc(pixel.GetHiGainSamples(),nslices);
+          time = Calc(pixel.GetHiGainSamples(),nslices);
         }
       
@@ -159,5 +157,5 @@
       // If pixel is saturated and hasn't lo gains we do nothing, it's value remains -1
       //
-      fArrTime->SetTime(idx,max);
+      fArrTime->SetTime(idx,time);
       
     }
@@ -172,5 +170,5 @@
 // Calculates the arrival time for each pixel 
 // Possible Methods 
-// Case 1: Spline5 (From TSpline5 Root Class)
+// Case 1: MCubicSpline (3rd order spline)
 //
 Float_t MArrivalTimeCalc::Calc(const Byte_t *fadcSamples, const Short_t nslices)
@@ -178,62 +176,12 @@
 
   //
-  // Initialize a double pointer with filled FADC slices
+  // Initialize the spline
   //
-  Double_t ptr[nslices];
+    MCubicSpline *spline = new MCubicSpline(fadcSamples);  
 
   //
-  // Initialize the spline
+  // Now find the maximum  
   //
-  for (Int_t i=0; i<nslices; i++)
-    ptr[i]=(Double_t)fadcSamples[i];
-  
-  TSpline5 spline("spline",0.,(Double_t)(nslices - 1),ptr,nslices);
-
-  //
-  // Now find the half maximum (!) 
-  // evaluating the spline function at every fStepSize time slice
-  //
-  Double_t abscissa=0;
-  Double_t maxAb   =0;
-  Double_t maxOrd  =0;
-
-  while (abscissa <= nslices - 1) 
-    {
-      const Double_t swap = spline.Eval(abscissa);
-
-      if (swap > maxOrd)
-	{
-          maxOrd = swap;
-          maxAb  = abscissa;
-	}
-      // make step size a bit bigger first
-      abscissa += fStepSize;
-      //      abscissa += fStepSize;
-    }
-
-  //
-  // another (much smaller) loop to move back from the maximum 
-  //
-  Double_t halfMaxAb = 0;
-
-  abscissa = maxAb;
-  
-  while (abscissa > 0)
-    {
-      
-      const Double_t swap = spline.Eval(abscissa);
-      
-      if (swap < maxOrd/2.)
-        {
-          halfMaxAb = abscissa;
-          break;
-        }
-      
-      abscissa -= fStepSize;
-    }
-  
-
-  //  return (Float_t)maxAb;
-  return (Float_t)halfMaxAb;
+   return (Float_t)spline->EvalAbMax();
 }
 
Index: /trunk/MagicSoft/Mars/manalysis/MArrivalTimeCalc.h
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MArrivalTimeCalc.h	(revision 3211)
+++ /trunk/MagicSoft/Mars/manalysis/MArrivalTimeCalc.h	(revision 3212)
@@ -24,13 +24,9 @@
 
     Float_t Calc(const Byte_t *fadcSamples, const Short_t nslices);
-
-    Float_t fStepSize;           // The step size to evaluate the time
-    
+ 
 public:
     MArrivalTimeCalc(const char *name=NULL, const char *title=NULL);
     ~MArrivalTimeCalc(){}
-
-    void SetStepSize(Float_t s)      { fStepSize = s;   }
-    
+ 
     ClassDef(MArrivalTimeCalc, 0)   // Task to calculate Arrival Times from raw data
 };
