Index: trunk/MagicSoft/Mars/msignal/MArrivalTimeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MArrivalTimeCalc.cc	(revision 3367)
+++ trunk/MagicSoft/Mars/msignal/MArrivalTimeCalc.cc	(revision 3368)
@@ -55,4 +55,7 @@
 #include "MRawEvtPixelIter.h"
 
+#include "MPedestalCam.h"
+#include "MPedestalPix.h"
+
 ClassImp(MArrivalTimeCalc);
 
@@ -76,9 +79,9 @@
 // The PreProcess searches for the following input containers:
 //  - MRawEvtData
-//  - MArrivalTime
+//  - MPedestalCam
 //
 // The following output containers are also searched and created if
 // they were not found:
-//  - MArrivalTime
+//  - MArrivalTimeCam
 //
 
@@ -93,4 +96,12 @@
         return kFALSE;
     }
+    
+    fPedestals = (MPedestalCam*)pList->FindObject(AddSerialNumber("MPedestalCam"));
+    if (!fPedestals)
+    {
+        *fLog << err << AddSerialNumber("MPedestalCam") << " not found... aborting" << endl;
+        return kFALSE;
+    }
+
 
     fArrTime = (MArrivalTimeCam*)pList->FindCreateObj(AddSerialNumber("MArrivalTimeCam"));
@@ -142,5 +153,5 @@
           
           const Short_t nslices = fRawEvt->GetNumLoGainSamples();
-          time = Calc(pixel.GetLoGainSamples(),nslices);
+          time = Calc(pixel.GetLoGainSamples(),nslices,idx);
         }
       
@@ -153,5 +164,5 @@
           
           const Short_t nslices = fRawEvt->GetNumHiGainSamples();
-          time = Calc(pixel.GetHiGainSamples(),nslices);
+          time = Calc(pixel.GetHiGainSamples(),nslices,idx);
         }
       
@@ -174,5 +185,5 @@
 // Case 1: MCubicSpline (3rd order spline)
 //
-Float_t MArrivalTimeCalc::Calc(const Byte_t *fadcSamples, const Short_t nslices)
+Float_t MArrivalTimeCalc::Calc(const Byte_t *fadcSamples, const Short_t nslices, const UInt_t idx)
 {
 
@@ -185,5 +196,10 @@
   // Now find the maximum  
   //
-   return (Float_t)spline->EvalAbMax();
-}
-
+    Double_t abMaximum = spline->EvalAbMax();
+    Double_t maximum = spline->EvalMax();
+    const MPedestalPix &ped = (*fPedestals)[idx];
+    const Float_t halfMax = (maximum - ped.GetPedestal())/2;
+    return (halfMax > 0.0) ? (Float_t ) spline->FindVal(halfMax,abMaximum,'l'): 0.0;
+    
+}
+
Index: trunk/MagicSoft/Mars/msignal/MArrivalTimeCalc.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MArrivalTimeCalc.h	(revision 3367)
+++ trunk/MagicSoft/Mars/msignal/MArrivalTimeCalc.h	(revision 3368)
@@ -9,4 +9,5 @@
 class MRawRunHeader;
 class MArrivalTimeCam;
+class MPedestalCam;
 class MArrivalTimeCalc : public MTask
 {
@@ -14,4 +15,5 @@
     MRawEvtData    *fRawEvt;     // raw event data (time slices)
     MRawRunHeader  *fRunHeader;  // RunHeader information
+    MPedestalCam   *fPedestals;  // pedestal information
 
     MArrivalTimeCam *fArrTime;   // Container with the photons arrival times
@@ -22,5 +24,5 @@
     Int_t PostProcess() {return kTRUE;}
 
-    Float_t Calc(const Byte_t *fadcSamples, const Short_t nslices);
+    Float_t Calc(const Byte_t *fadcSamples, const Short_t nslices, const UInt_t idx);
  
 public:
