Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 2766)
+++ trunk/MagicSoft/Mars/Changelog	(revision 2767)
@@ -9,4 +9,6 @@
     - replace logainshift by two independent variables: 
       logainfirst, logainlast
+    - because in most data, maximum occurs in slice 4, shift default 
+      from slices 4-9 to slices 3-8.
 
 
Index: trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc	(revision 2766)
+++ trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc	(revision 2767)
@@ -56,8 +56,6 @@
 // Default constructor. 
 //
-MExtractSignal::MExtractSignal(/*const Byte_t first, const Byte_t last, const Byte_t logainshift,*/
-                    const char *name, const char *title)
-  : /*fNumHiGainSamples(last-first+1), fNumLoGainSamples(last-first+1),*/
-    fSaturationLimit(254)
+MExtractSignal::MExtractSignal(const char *name, const char *title)
+  : fSaturationLimit(254)
 {
 
@@ -68,20 +66,14 @@
 
     SetRange();
-    /*
-     fFirst       = first;
-     fLoGainFirst = first+logainshift;
-
-     fSqrtHiGainSamples = TMath::Sqrt((Float_t)fNumHiGainSamples);
-     fSqrtLoGainSamples = TMath::Sqrt((Float_t)fNumLoGainSamples);
-     */
-}
-
-void MExtractSignal::SetRange(Byte_t first, Byte_t last, Byte_t logainshift)
-{
-    fNumHiGainSamples = last-first+1;
-    fNumLoGainSamples = last-first+1;
-
-    fFirst       = first;
-    fLoGainFirst = first+logainshift;
+}
+
+void MExtractSignal::SetRange(Byte_t hifirst, Byte_t hilast, Byte_t lofirst, Byte_t lolast)
+{
+
+    fNumHiGainSamples = hilast-hifirst+1;
+    fNumLoGainSamples = lolast-lofirst+1;
+
+    fHiGainFirst = hifirst;
+    fLoGainFirst = lofirst;
 
     fSqrtHiGainSamples = TMath::Sqrt((Float_t)fNumHiGainSamples);
@@ -144,6 +136,6 @@
     fSignals->InitSize(cam->GetNumPixels());    
 
-    fSignals->SetNumUsedFADCSlices(fNumHiGainSamples, fFirst, fFirst+fNumHiGainSamples-1,
-				   fNumLoGainSamples, fFirst, fFirst+fNumLoGainSamples-1);
+    fSignals->SetNumUsedFADCSlices(fNumHiGainSamples, fHiGainFirst, fHiGainFirst+fNumHiGainSamples-1,
+				   fNumLoGainSamples, fLoGainFirst, fLoGainFirst+fNumLoGainSamples-1);
 
     return kTRUE;
@@ -167,6 +159,6 @@
 
         Byte_t *ptr   = pixel.GetHiGainSamples();
-        Byte_t *first = ptr + fFirst;
-        Byte_t *last  = ptr + fFirst + fNumHiGainSamples;
+        Byte_t *first = ptr + fHiGainFirst;
+        Byte_t *last  = ptr + fHiGainFirst + fNumHiGainSamples;
 
 	UInt_t  sumHi   = 0;
@@ -200,6 +192,6 @@
 
 	ptr   = pixel.GetLoGainSamples();
-        first = ptr + fLoGainFirst + 1;
-        last  = ptr + fLoGainFirst + fNumLoGainSamples +1;
+        first = ptr + fLoGainFirst;
+        last  = ptr + fLoGainFirst + fNumLoGainSamples;
 	Byte_t maxlo  = 0;
 	Byte_t midlo  = 0;
@@ -228,6 +220,5 @@
 			       pedrms*fSqrtHiGainSamples,
 			       ((Float_t)sumLo - pedes*(Float_t)fNumLoGainSamples),
-			       pedrms*fSqrtLoGainSamples
-			       );
+			       pedrms*fSqrtLoGainSamples);
 
 	pix.SetGainSaturation(satHi, satHi, satLo);
@@ -235,7 +226,7 @@
         // FIXME: Arrival time has to be stored in MArrivalTime!
 	if (satHi)
-	  pix.SetArrivalTimes((Float_t)(midlo+fFirst),0.,0.);
+	  pix.SetArrivalTimes((Float_t)(midlo+fLoGainFirst),0.,0.);
 	else
-	  pix.SetArrivalTimes((Float_t)(midhi+fLoGainFirst),0.,0.);
+	  pix.SetArrivalTimes((Float_t)(midhi+fHiGainFirst),0.,0.);
 
       } /* while (pixel.Next()) */
