Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5148)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5149)
@@ -19,4 +19,11 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2004/09/30: Hendrik Bartko, Markus Gaug
+  
+   * msignal/MExtractFixedWindowSpline.cc
+     - corrected a small bug for the case that the high-gain extraction 
+       window ranges into the low-gain
+
 
  2004/09/29: Hendrik Bartko, Diego Tescaro, Markus Gaug
Index: trunk/MagicSoft/Mars/msignal/MExtractFixedWindowSpline.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractFixedWindowSpline.cc	(revision 5148)
+++ trunk/MagicSoft/Mars/msignal/MExtractFixedWindowSpline.cc	(revision 5149)
@@ -271,4 +271,10 @@
   else
     {
+
+      //
+      // There are two overlap slices which we have to treat sepatately
+      // 
+      // First, the last high-gain slice as center 
+      //
       summ += *ptr;
       i++;
@@ -278,10 +284,17 @@
       fHiGainFirstDeriv [i] = *(logain) - 2.* *(ptr) + *(ptr-1);
       fHiGainFirstDeriv [i] = (6.0*fHiGainFirstDeriv[i]-fHiGainFirstDeriv[i-1])/pp;
-
-      end    = logain + fHiLoLast - 1;
-
-      while (logain<end)
+      
+      if (fHiLoLast == 1)
         {
-
+          sum += (Float_t)*logain/2;
+          fHiGainSecondDeriv[++i] = 0.;
+          if (*logain >= fSaturationLimit)
+            sat++;
+        }
+      else
+        {
+          // 
+          // Second, the first low-gain slice as center 
+          //
           summ += *logain;
           i++;
@@ -289,15 +302,32 @@
           pp = fHiGainSecondDeriv[i-1] + 4.;
           fHiGainSecondDeriv[i] = -1.0/pp;
-          fHiGainFirstDeriv [i] = *(logain+1) - 2.* *(logain) + *(ptr-1);
+          fHiGainFirstDeriv [i] = *(logain+1) - 2.* *(logain) + *(ptr);
           fHiGainFirstDeriv [i] = (6.0*fHiGainFirstDeriv[i]-fHiGainFirstDeriv[i-1])/pp;
-
+          
           if (*logain++ >= fSaturationLimit)
             sat++;
           
+          end  = logain + fHiLoLast - 2;
+          
+          while (logain<end)
+            {
+              
+              summ += *logain;
+              i++;
+              
+              pp = fHiGainSecondDeriv[i-1] + 4.;
+              fHiGainSecondDeriv[i] = -1.0/pp;
+              fHiGainFirstDeriv [i] = *(logain+1) - 2.* *(logain) + *(logain-1);
+              fHiGainFirstDeriv [i] = (6.0*fHiGainFirstDeriv[i]-fHiGainFirstDeriv[i-1])/pp;
+              
+              if (*logain++ >= fSaturationLimit)
+                sat++;
+              
+            }
+          sum += (Float_t)*logain/2;
+          fHiGainSecondDeriv[++i] = 0.;
         }
-      sum += (Float_t)*logain/2;
-      fHiGainSecondDeriv[++i] = 0.;
-    }
-
+    }
+  
   for (Int_t k=range-2;k>0;k--)
     {
