Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 6332)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 6366)
@@ -174,5 +174,7 @@
 //
 MExtractTimeAndChargeSpline::MExtractTimeAndChargeSpline(const char *name, const char *title) 
-    : fAbMax(0.), fAbMaxPos(0.), fHalfMax(0.), fRandomIter(0)
+    : fAbMax(0.), fAbMaxPos(0.), fHalfMax(0.), 
+      fRiseTimeHiGain(fgRiseTimeHiGain), fFallTimeHiGain(fgFallTimeHiGain),
+      fRandomIter(0)
 {
 
@@ -181,13 +183,8 @@
 
   SetResolution();
-
-  SetRiseTimeHiGain();
-  SetFallTimeHiGain();
-  
+  SetLoGainStretch();
+  SetOffsetLoGain(fgOffsetLoGain);
+
   SetChargeType();
-  SetLoGainStretch();
-
-  SetOffsetLoGain(fgOffsetLoGain);
-
   SetRange(fgHiGainFirst, fgHiGainLast, fgLoGainFirst, fgLoGainLast);
 }
@@ -229,4 +226,30 @@
   SETBIT(fFlags,typ);
 
+  if (IsExtractionType(kAmplitude))
+    {
+      fNumHiGainSamples = 1.;
+      fNumLoGainSamples = fLoGainLast ? 1. : 0.; 
+      fSqrtHiGainSamples = 1.;
+      fSqrtLoGainSamples = 1.;
+      fWindowSizeHiGain  = 1;
+      fWindowSizeLoGain  = 1;
+      fRiseTimeHiGain    = 0.5;
+      
+      return;
+    }
+
+  if (IsExtractionType(kIntegral))
+    {
+
+      fNumHiGainSamples  = fRiseTimeHiGain + fFallTimeHiGain;
+      fNumLoGainSamples  = fLoGainLast ? fRiseTimeLoGain + fFallTimeLoGain : 0.;
+      //      fNumLoGainSamples  *= 0.75;      
+
+      fSqrtHiGainSamples = TMath::Sqrt(fNumHiGainSamples);
+      fSqrtLoGainSamples = TMath::Sqrt(fNumLoGainSamples);
+      fWindowSizeHiGain  = (Int_t)(fRiseTimeHiGain + fFallTimeHiGain);
+      fWindowSizeLoGain  = (Int_t)(fRiseTimeLoGain + fFallTimeLoGain);
+      //      fNumLoGainSamples  *= 0.75;      
+    }
 }
 
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.h	(revision 6332)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.h	(revision 6366)
@@ -76,6 +76,21 @@
   void SetRange      ( Byte_t hifirst=0, Byte_t hilast=0, Byte_t lofirst=0, Byte_t lolast=0 );  
   void SetResolution ( const Float_t f=fgResolution  )  { fResolution  = f;  }
-  void SetRiseTimeHiGain( const Float_t f=fgRiseTimeHiGain    )  { fRiseTimeHiGain = f;  }
-  void SetFallTimeHiGain( const Float_t f=fgFallTimeHiGain    )  { fFallTimeHiGain = f;  }
+  void SetRiseTimeHiGain( const Float_t f=fgRiseTimeHiGain    )
+    {
+      fRiseTimeHiGain    = f;
+      fRiseTimeLoGain    = f*fLoGainStretch;
+      fSqrtHiGainSamples = TMath::Sqrt(fNumHiGainSamples);
+      fWindowSizeHiGain  = (Int_t)(fRiseTimeHiGain + fFallTimeHiGain);
+    }
+  void SetFallTimeHiGain( const Float_t f=fgFallTimeHiGain    )
+    {
+      fFallTimeHiGain    = f;
+      fFallTimeLoGain    = f*fLoGainStretch;
+      fNumHiGainSamples  = fRiseTimeHiGain + fFallTimeHiGain;
+      fNumLoGainSamples  = fLoGainLast ? fRiseTimeLoGain + fFallTimeLoGain : 0.;
+      fSqrtLoGainSamples = TMath::Sqrt(fNumLoGainSamples);
+      fWindowSizeLoGain  = (Int_t)(fRiseTimeLoGain + fFallTimeLoGain);
+    }
+
   void SetLoGainStretch ( const Float_t f=fgLoGainStretch    )  { fLoGainStretch = f;   }
   
