Index: branches/MarsWobble/msignal/MExtractFACT.cc
===================================================================
--- branches/MarsWobble/msignal/MExtractFACT.cc	(revision 18160)
+++ branches/MarsWobble/msignal/MExtractFACT.cc	(revision 18278)
@@ -171,4 +171,5 @@
         //
         Float_t max  = -1;
+        Float_t tmax  = -1;
         if (pmax>pbeg && pmax<pend-1)
         {
@@ -194,7 +195,7 @@
                         max = exp(a + b*dx + c*dx*dx);
 
-                        // Time is position of maximum
-                        //time = dx;
-                        //time += Int_t(pmax-ptr);
+                        // tmax is position of maximum
+                        tmax = dx;
+                        tmax += Int_t(pmax-ptr);
                     }
                 }
@@ -203,4 +204,5 @@
 
         Float_t time = -1;
+        Float_t slope = -1;
         if (max>=0)
         {
@@ -208,5 +210,5 @@
 
             // Time is position of half hight leading edge
-            pend = std::max(pbeg, pmax-10);
+            pend = std::max(pbeg, pmax-15);
             for (;pmax>=pend; pmax--)
                 if (*pmax<max/2)
@@ -217,4 +219,5 @@
                 time = (max/2-pmax[0])/(pmax[1]-pmax[0]);
                 time += Int_t(pmax-ptr);
+                slope = tmax - time;
             }
         }
@@ -223,5 +226,5 @@
         {
             time = gRandom->Uniform(rangehi)+fHiGainFirst+1;
-            max  = pbeg[uint16_t(time)];
+            max  = ptr[uint16_t(time)];
         }
 
@@ -232,5 +235,5 @@
         pix.SetGainSaturation(0);
 
-        tix.SetArrivalTime(time);
+        tix.SetArrivalTime(time, slope);
         tix.SetGainSaturation(0);
     }
Index: branches/MarsWobble/msignal/MSignalCam.cc
===================================================================
--- branches/MarsWobble/msignal/MSignalCam.cc	(revision 18160)
+++ branches/MarsWobble/msignal/MSignalCam.cc	(revision 18278)
@@ -584,4 +584,5 @@
 // 10: as 0, but returns kFALSE if signal <=0
 // 11: as 8, but returns kFALSE if signal <=0
+// 12: time slope
 //
 Bool_t MSignalCam::GetPixelContent(Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type) const
@@ -593,5 +594,5 @@
 
     // Used inlcudes status unampped
-    if (!pix.IsPixelUsed() && (type<6 || type==8))
+    if (!pix.IsPixelUsed() && (type<6 || type==8 || type==14))
         return kFALSE;
 
@@ -668,4 +669,14 @@
         return pix.GetNumPhotons()>0;
 
+    case 13: // time slope
+        val = pix.GetTimeSlope();
+        break;
+
+    case 14: // time slope
+        if (pix.IsPixelUnmapped())
+            return kFALSE;
+        val = pix.GetTimeSlope();
+        break;
+
     case 9:
     default:
Index: branches/MarsWobble/msignal/MSignalPix.cc
===================================================================
--- branches/MarsWobble/msignal/MSignalPix.cc	(revision 18160)
+++ branches/MarsWobble/msignal/MSignalPix.cc	(revision 18278)
@@ -64,4 +64,8 @@
 //    size of the calibrated data by roughly 0.5%
 //
+// Version 8:
+// ----------
+//  - added new time variable fTimeSlope describing the width of the rise time
+//
 ////////////////////////////////////////////////////////////////////////////
 #include "MSignalPix.h"
@@ -80,5 +84,6 @@
 MSignalPix::MSignalPix(Float_t phot, Float_t errphot) :
     fIsCore(kFALSE), fRing(1), fIdxIsland(-1),
-    fPhot(phot), fErrPhot(errphot), fArrivalTime(-1)
+    fPhot(phot), fErrPhot(errphot), fArrivalTime(-1),
+    fTimeSlope(-1)
 {
     MMath::ReducePrecision(fPhot);
@@ -94,4 +99,5 @@
     fErrPhot     =  0;
     fArrivalTime = -1;
+    fTimeSlope = -1;
 }
 
Index: branches/MarsWobble/msignal/MSignalPix.h
===================================================================
--- branches/MarsWobble/msignal/MSignalPix.h	(revision 18160)
+++ branches/MarsWobble/msignal/MSignalPix.h	(revision 18278)
@@ -19,4 +19,5 @@
     Float_t  fErrPhot;       // the error of fPhot
     Float_t  fArrivalTime;   // Calibrated Arrival Time
+    Float_t  fTimeSlope;     // Time between half rise time and position of maximum
 
 public:
@@ -24,5 +25,6 @@
     MSignalPix(const MSignalPix &pix)
         : fIsCore(pix.fIsCore), fRing(pix.fRing), fIdxIsland(pix.fIdxIsland),
-        fPhot(pix.fPhot), fErrPhot(pix.fErrPhot), fArrivalTime(pix.fArrivalTime)
+        fPhot(pix.fPhot), fErrPhot(pix.fErrPhot), fArrivalTime(pix.fArrivalTime),
+        fTimeSlope(pix.fTimeSlope)
     {
     }
@@ -39,4 +41,5 @@
         pix.fErrPhot     = fErrPhot;
         pix.fArrivalTime = fArrivalTime;
+        pix.fTimeSlope   = fTimeSlope;
     }
     void    Print(Option_t *opt = NULL) const;
@@ -46,4 +49,5 @@
     Float_t GetErrorPhot() const          { return fErrPhot; }
     Float_t GetArrivalTime() const        { return fArrivalTime; }
+    Float_t GetTimeSlope() const          { return fTimeSlope; }
 
     Bool_t  IsPixelUsed() const           { return fRing>0; }
@@ -65,9 +69,10 @@
     void    Set(Float_t np, Float_t ep)   { MMath::ReducePrecision(np); MMath::ReducePrecision(ep);  fPhot = np; fErrPhot = ep; }
     void    SetArrivalTime(Float_t tm)    { fArrivalTime = tm; }
+    void    SetTimeSlope(Float_t ts)      { fTimeSlope = ts; }
 
     //void    AddNumPhotons(Float_t f)      { fPhot += f; }
     //void    Scale(Float_t f)              { fPhot /= f; }
 
-    ClassDef(MSignalPix, 7)  // class containing information about the Cerenkov Photons in a pixel
+    ClassDef(MSignalPix, 8)  // class containing information about the Cerenkov Photons in a pixel
 };
 
