Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 5794)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 5795)
@@ -98,12 +98,16 @@
 //     time search.
 //  2) If Charge Type: kIntegral was chosen, sum the fHiGainSignal between:
-//     (Int_t)(fAbMaxPos - fRiseTime) and 
-//     (Int_t)(fAbMaxPos + fFallTime)
+//     (Int_t)(fAbMaxPos - fRiseTimeHiGain) and 
+//     (Int_t)(fAbMaxPos + fFallTimeHiGain)
 //     (default: fRiseTime: 1.5, fFallTime: 4.5)
-//   
+//                                           sum the fLoGainSignal between:
+//     (Int_t)(fAbMaxPos - fRiseTimeHiGain*fLoGainStretch) and 
+//     (Int_t)(fAbMaxPos + fFallTimeHiGain*fLoGainStretch)
+//     (default: fLoGainStretch: 1.5)
+//       
 //  The values: fNumHiGainSamples and fNumLoGainSamples are set to:
 //  1) If Charge Type: kAmplitude was chosen: 1.
-//  2) If Charge Type: kIntegral was chosen: fRiseTime + fFallTime
-//                 or: fRiseTime + fFallTime + 1. in the case of the low-gain
+//  2) If Charge Type: kIntegral was chosen: fRiseTimeHiGain + fFallTimeHiGain
+//                 or: fNumHiGainSamples*fLoGainStretch in the case of the low-gain
 //
 //  Call: SetRange(fHiGainFirst, fHiGainLast, fLoGainFirst, fLoGainLast) 
@@ -127,6 +131,6 @@
 //          --> no further function evaluation needed
 //        - SetChargeType(MExtractTimeAndChargeSpline::kIntegral) for the 
-//          computation of the integral beneith the spline between fRiseTime 
-//          from the position of the maximum to fFallTime after the position of 
+//          computation of the integral beneith the spline between fRiseTimeHiGain
+//          from the position of the maximum to fFallTimeHiGain after the position of 
 //          the maximum. The Low Gain is computed with half a slice more at the rising
 //          edge and half a slice more at the falling edge.
@@ -146,11 +150,13 @@
 using namespace std;
 
-const Byte_t  MExtractTimeAndChargeSpline::fgHiGainFirst  = 2;
-const Byte_t  MExtractTimeAndChargeSpline::fgHiGainLast   = 14;
-const Byte_t  MExtractTimeAndChargeSpline::fgLoGainFirst  = 2;
-const Byte_t  MExtractTimeAndChargeSpline::fgLoGainLast   = 14;
-const Float_t MExtractTimeAndChargeSpline::fgResolution   = 0.05;
-const Float_t MExtractTimeAndChargeSpline::fgRiseTime     = 1.5;
-const Float_t MExtractTimeAndChargeSpline::fgFallTime     = 4.5;
+const Byte_t  MExtractTimeAndChargeSpline::fgHiGainFirst    = 2;
+const Byte_t  MExtractTimeAndChargeSpline::fgHiGainLast     = 14;
+const Byte_t  MExtractTimeAndChargeSpline::fgLoGainFirst    = 2;
+const Byte_t  MExtractTimeAndChargeSpline::fgLoGainLast     = 14;
+const Float_t MExtractTimeAndChargeSpline::fgResolution     = 0.05;
+const Float_t MExtractTimeAndChargeSpline::fgRiseTimeHiGain = 1.5;
+const Float_t MExtractTimeAndChargeSpline::fgFallTimeHiGain = 4.5;
+const Float_t MExtractTimeAndChargeSpline::fgLoGainStretch  = 1.5;
+const Float_t MExtractTimeAndChargeSpline::fgOffsetLoGain   = 1.7;   // 5 ns
 // --------------------------------------------------------------------------
 //
@@ -161,9 +167,9 @@
 // 
 // Initializes:
-// - fResolution    to fgResolution
-// - fRiseTime      to fgRiseTime
-// - fFallTime      to fgFallTime
-// - Time Extraction Type to kMaximum
+// - fResolution     to fgResolution
+// - fRiseTimeHiGain to fgRiseTimeHiGain
+// - fFallTimeHiGain to fgFallTimeHiGain
 // - Charge Extraction Type to kAmplitude
+// - fLoGainStretch  to fgLoGainStretch
 //
 MExtractTimeAndChargeSpline::MExtractTimeAndChargeSpline(const char *name, const char *title) 
@@ -175,11 +181,14 @@
 
   SetResolution();
-  SetRiseTime();
-  SetFallTime();
+
+  SetRiseTimeHiGain();
+  SetFallTimeHiGain();
   
   SetRange(fgHiGainFirst, fgHiGainLast, fgLoGainFirst, fgLoGainLast);
 
   SetChargeType();
-
+  SetLoGainStretch();
+
+  SetOffsetLoGain(fgOffsetLoGain);
 }
 
@@ -263,12 +272,16 @@
   if (IsExtractionType(kIntegral))
     {
-      fNumHiGainSamples  = fRiseTime + fFallTime;
-      fNumLoGainSamples  = fLoGainLast ? fNumHiGainSamples + 1. : 0.;
-      fNumLoGainSamples  *= 0.75;      
+
+      fRiseTimeLoGain    = fRiseTimeHiGain * fLoGainStretch;
+      fFallTimeLoGain    = fFallTimeHiGain * fLoGainStretch;      
+
+      fNumHiGainSamples  = fRiseTimeHiGain + fFallTimeHiGain;
+      fNumLoGainSamples  = fLoGainLast ? fRiseTimeLoGain + fFallTimeLoGain : 0.;
+      //      fNumLoGainSamples  *= 0.75;      
 
       fSqrtHiGainSamples = TMath::Sqrt(fNumHiGainSamples);
       fSqrtLoGainSamples = TMath::Sqrt(fNumLoGainSamples);
-      fWindowSizeHiGain  = (Int_t)(fRiseTime + fFallTime);
-      fWindowSizeLoGain  = (Int_t)(fRiseTime + fFallTime+1);
+      fWindowSizeHiGain  = (Int_t)(fRiseTimeHiGain + fFallTimeHiGain);
+      fWindowSizeLoGain  = (Int_t)(fRiseTimeLoGain + fFallTimeLoGain);
     }
 
@@ -392,5 +405,5 @@
         {
           Float_t start = 2. + nsx;
-          Float_t last  = start + fRiseTime + fFallTime;
+          Float_t last  = start + fRiseTimeHiGain + fFallTimeHiGain;
       
           if (int(last) > range)
@@ -423,7 +436,7 @@
       
       if (maxpos > range - 2)
-        CalcIntegralHiGain(sum, (Float_t)range - fRiseTime - fFallTime, (Float_t)range - 0.001);
+        CalcIntegralHiGain(sum, (Float_t)range - fRiseTimeHiGain - fFallTimeHiGain, (Float_t)range - 0.001);
       else
-        CalcIntegralHiGain(sum, 0.001, fRiseTime + fFallTime);
+        CalcIntegralHiGain(sum, 0.001, fRiseTimeHiGain + fFallTimeHiGain);
 
       time =  (Float_t)(fHiGainFirst + maxpos - 1);
@@ -650,6 +663,6 @@
   // 
   
-  Float_t start = fAbMaxPos - fRiseTime;
-  Float_t last  = fAbMaxPos + fFallTime;
+  Float_t start = fAbMaxPos - fRiseTimeHiGain;
+  Float_t last  = fAbMaxPos + fFallTimeHiGain;
   
   const Int_t diff = int(last) - range;
@@ -750,5 +763,5 @@
         {
           Float_t start = 2. + nsx;
-          Float_t last  = start + fRiseTime + fFallTime +1.;
+          Float_t last  = start + fRiseTimeLoGain + fFallTimeLoGain;
       
           if (int(last) > range)
@@ -769,5 +782,5 @@
   // Don't start if the maxpos is too close to the limits.
   //
-  if (sat || maxpos < TMath::Ceil(fRiseTime+0.45) || maxpos > range-2)
+  if (sat || maxpos < TMath::Ceil(fRiseTimeLoGain) || maxpos > range-2)
     {
       dtime = 0.5;
@@ -780,7 +793,7 @@
       
       if (maxpos > range-2)
-        CalcIntegralLoGain(sum, (Float_t)range - fRiseTime - fFallTime-1., (Float_t)range - 0.001);
+        CalcIntegralLoGain(sum, (Float_t)range - fRiseTimeLoGain - fFallTimeLoGain -1., (Float_t)range - 0.001);
       else
-        CalcIntegralLoGain(sum, 0.001, fRiseTime + fFallTime + 1.);
+        CalcIntegralLoGain(sum, 0.001, fRiseTimeLoGain + fFallTimeLoGain + 1.);
 
       time = (Float_t)(fLoGainFirst + maxpos - 1);
@@ -1010,6 +1023,6 @@
   // Now integrate the whole thing!
   // 
-  Float_t start = fAbMaxPos - fRiseTime - 0.5;
-  Float_t last  = fAbMaxPos + fFallTime + 0.5;
+  Float_t start = fAbMaxPos - fRiseTimeLoGain;
+  Float_t last  = fAbMaxPos + fFallTimeLoGain;
   
   const Int_t diff = int(last) - range;
@@ -1156,12 +1169,17 @@
       rc  = kTRUE;
     }
-  if (IsEnvDefined(env, prefix, "RiseTime", print))
-    {
-      SetRiseTime(GetEnvValue(env, prefix, "RiseTime", fRiseTime));
+  if (IsEnvDefined(env, prefix, "RiseTimeHiGain", print))
+    {
+      SetRiseTimeHiGain(GetEnvValue(env, prefix, "RiseTimeHiGain", fRiseTimeHiGain));
       rc = kTRUE;
     }
-  if (IsEnvDefined(env, prefix, "FallTime", print))
-    {
-      SetFallTime(GetEnvValue(env, prefix, "FallTime", fFallTime));
+  if (IsEnvDefined(env, prefix, "FallTimeHiGain", print))
+    {
+      SetFallTimeHiGain(GetEnvValue(env, prefix, "FallTimeHiGain", fFallTimeHiGain));
+      rc = kTRUE;
+    }
+  if (IsEnvDefined(env, prefix, "LoGainStretch", print))
+    {
+      SetLoGainStretch(GetEnvValue(env, prefix, "LoGainStretch", fLoGainStretch));
       rc = kTRUE;
     }
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.h	(revision 5794)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.h	(revision 5795)
@@ -24,5 +24,5 @@
   static const Float_t fgFallTimeHiGain; //! Default for fFallTime     (now set to: 4.5)
   static const Float_t fgLoGainStretch;  //! Default for fLoGainStretch (now set to: 1.5)
-  static const Float_t fgOffsetLoGain;   //! Default for fOffsetLoGain (now set to 1.2)
+  static const Float_t fgOffsetLoGain;   //! Default for fOffsetLoGain (now set to 1.7)
   
   MArrayF fHiGainSignal;                //! Need fast access to the signals in a float way
