Index: fact/tools/rootmacros/PulseTemplates/pulse.C
===================================================================
--- fact/tools/rootmacros/PulseTemplates/pulse.C	(revision 14761)
+++ fact/tools/rootmacros/PulseTemplates/pulse.C	(revision 14762)
@@ -148,4 +148,6 @@
     mAmplitude.second   = 0;
     mPhE.second         = 0;
+    mRisetime.first     = 0;
+    mRisetime.second    = 0;
     mOrder              = 0;
     mType               = 0;
@@ -154,4 +156,5 @@
     mFitNdf             = 0;
     mChi2               = 0;
+    mTimeResolution     = 0.5;
 }
 
@@ -275,4 +278,5 @@
     mAmplitude.first    = mModel->GetMaximum() - mBsl.first;
 //    mAmplitude.second   = mModel->GetMaximum() - mBsl.first;
+    mRisetime.first     = mTimeResolution*CalculateHistEdgeRisetime();
     mFitProb            = mFitResultPtr->Prob();
     mFitNCalls          = mFitResultPtr->NCalls();
@@ -281,4 +285,56 @@
 }
 
+double
+Pulse::CalculateHistEdgeRisetime() // in bins
+{
+    //rise-tim for pulse for pulse height from 10% to 90%
+    double riseTime = 0;
+
+    // Get Pulse Maximum value and bin
+    int maxBin = mHisto->GetMaximumBin();
+    double max = mHisto->GetBinContent(maxBin);
+
+    // values of bin with 10% and 90%
+    int tenPctBin       = 0;
+    int ninetyPctBin    = 0;
+
+    // flag points
+    bool finishedLow    = false;
+    bool finishedHigh   = false;
+
+    //2nd runvariable
+    int j = maxBin;
+
+    //loop over from 20 bins bevore max to maximum
+    for (int i = maxBin - 20; i<maxBin; i++){
+        j--;
+        if (j<0) break;
+
+        if (mHisto->GetBinContent(i) >= 0.1*max && !finishedLow)
+        {
+            tenPctBin = i;
+            finishedLow = true;
+        }
+
+
+        if (mHisto->GetBinContent(j) <= 0.9*max && !finishedHigh)
+        {
+            ninetyPctBin = j;
+            finishedHigh = true;
+        }
+
+        if (finishedLow && finishedHigh)
+        {
+            break;
+        }
+    }
+
+    riseTime = mHisto->GetBinLowEdge(ninetyPctBin) - mHisto->GetBinLowEdge(tenPctBin);
+    return riseTime;
+}
+
+
+
+
 // ===========================================================================
 // ACCESS
@@ -287,21 +343,23 @@
 TString Pulse::GetName(){ return mName;}
 double  Pulse::GetBsl(){ return mBsl.first;}
+double  Pulse::GetBslErr(){ return mBsl.second;}
 double  Pulse::GetHeight(){ return mHeight.first;}
+double  Pulse::GetHeightErr(){ return mHeight.second;}
 double  Pulse::GetT0(){ return mT0.first;}
+double  Pulse::GetT0Err(){ return mT0.second;}
 double  Pulse::GetT1(){ return mT1.first;}
+double  Pulse::GetT1Err(){ return mT1.second;}
 double  Pulse::GetTau1(){ return mTau1.first;}
+double  Pulse::GetTau1Err(){ return mTau1.second;}
 double  Pulse::GetTau2(){ return mTau2.first;}
+double  Pulse::GetTau2Err(){ return mTau2.second;}
 double  Pulse::GetIntegral(){ return mIntegral.first;}
+double  Pulse::GetIntegralErr(){ return mIntegral.second;}
 double  Pulse::GetAmplitude(){ return mAmplitude.first;}
+double  Pulse::GetAmplitudeErr(){ return mAmplitude.second;}
 int     Pulse::GetPhE(){ return mPhE.first;}
-double  Pulse::GetBslErr(){ return mBsl.second;}
-double  Pulse::GetHeightErr(){ return mHeight.second;}
-double  Pulse::GetT0Err(){ return mT0.second;}
-double  Pulse::GetT1Err(){ return mT1.second;}
-double  Pulse::GetTau1Err(){ return mTau1.second;}
-double  Pulse::GetTau2Err(){ return mTau2.second;}
-double  Pulse::GetIntegralErr(){ return mIntegral.second;}
-double  Pulse::GetAmplitudeErr(){ return mAmplitude.second;}
 int     Pulse::GetPhEErr(){ return mPhE.second;}
+double  Pulse::GetRiseTime(){ return mRisetime.first; }
+double  Pulse::GetRiseTimeErr(){ return mRisetime.second;}
 int     Pulse::GetOrder(){ return mOrder;}
 int     Pulse::GetType(){return mType;}
@@ -312,4 +370,6 @@
 double  Pulse::GetFitNdf(){return mFitNdf;}
 double  Pulse::GetChi2(){return mChi2;}
+double  Pulse::GetTimeResolution(){return mTimeResolution;}
+void    Pulse::SetTimeResolution(double timeResolution){mTimeResolution = timeResolution;}
 
 
Index: fact/tools/rootmacros/PulseTemplates/pulse.h
===================================================================
--- fact/tools/rootmacros/PulseTemplates/pulse.h	(revision 14761)
+++ fact/tools/rootmacros/PulseTemplates/pulse.h	(revision 14762)
@@ -83,4 +83,5 @@
     void    FitContious(TString fitName, TString fitOptions, int fitMin, int fitMax);
     void    CalculateParameters();
+    double  CalculateHistEdgeRisetime();
     void    InitMembers();
 
@@ -89,12 +90,21 @@
     TString GetName();
     double  GetBsl();
+    double  GetBslErr();
     double  GetHeight();
+    double  GetHeightErr();
     double  GetT0();
+    double  GetT0Err();
     double  GetT1();
+    double  GetT1Err();
     double  GetTau1();
+    double  GetTau1Err();
     double  GetTau2();
+    double  GetTau2Err();
     double  GetIntegral();
+    double  GetIntegralErr();
     double  GetAmplitude();
+    double  GetAmplitudeErr();
     int     GetPhE();
+    int     GetPhEErr();
     int     GetOrder();
     int     GetType();
@@ -105,13 +115,8 @@
     double  GetFitNdf();
     double  GetChi2();
-    double  GetBslErr();
-    double  GetHeightErr();
-    double  GetT0Err();
-    double  GetT1Err();
-    double  GetTau1Err();
-    double  GetTau2Err();
-    double  GetIntegralErr();
-    double  GetAmplitudeErr();
-    int     GetPhEErr();
+    double  GetRiseTime();
+    double  GetRiseTimeErr();
+    double  GetTimeResolution();
+    void    SetTimeResolution(double timeResolution);
 
 // INQUIRY
@@ -130,4 +135,6 @@
     pair <double, double>   mAmplitude;
     pair <int, double>      mPhE;
+    pair <double, double>   mRisetime;
+    double                  mTimeResolution; // [ns/slice]
     int                     mOrder;
     int                     mType;
