Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 7875)
+++ trunk/MagicSoft/Mars/Changelog	(revision 7876)
@@ -18,4 +18,63 @@
 
                                                  -*-*- END OF LINE -*-*-
+ 2006/08/16 Thomas Bretz
+
+   * manalysis/MMcCalibrationUpdate.cc, 
+     mhcalib/MHCalibrationRelTimeCam.cc:
+     - replaced IsLoGainUsed by IsHiGainSaturated
+
+   * mcalib/MCalibrateData.cc:
+     - changed the algorithm which takes either the hi- or the lo-gain
+       such that it gives more reliable results in case of saturation
+       and/or problems with the extraction and if no reliable
+       result is possible the pixel is set unsuitable
+
+   * mcalib/MCalibrateRelTimes.cc:
+     - removed the usage of MSignalPix::SetLoGainUsed
+     - set the pixel to unsuitable if the arrival time could not
+       be extracted
+
+   * mfilter/MFCosmics.cc, mhcalib/MHCalibrationChargeCam.cc:
+     - replaced GetNumHiGainSaturated()>0 by IsHiGainSaturated()
+
+   * mhist/MHCamera.cc: 
+     - removed obsolete MMath::GaussProb from GetMedianDev
+
+   * msignal/MArrivalTimeCam.cc:
+     - replaced IsValid by IsArrivalTimeValid
+     - replaces Is[Hi,Lo]GainValid by 
+       Is[Hi,Lo]GainValid && !Is[Hi,Lo]GainSaturated in
+       GetPixelContent
+     - added a check for saturation in case of getting the delay
+     - do not restrict the range of the returned delays anymore
+
+   * msignal/MArrivalTimePix.[h,cc]:
+     - improved GetArrivalTime to take the hi-gain saturation
+       better into account
+     - added a new function IsArrivalTimeValid
+     - removed obsolete function IsValid and IsLoGainUsed
+
+   * msignal/MExtractTimeAndChargeSpline.cc:
+     - added a check to not set fMaxBinContent in case the extraction
+       would happen in the first or last slice similar to the
+       digital filter. This became necessary because otherwise the
+       spline extractor sometimes extracts nonsens values
+
+   * msignal/MExtractedSignalCam.cc:
+     - replaced IsValid by more accurate functions
+     - take saturation in GetPixelContent into account
+
+   * msignal/MExtractedSignalPix.[h,cc]:
+     - removed obsolete function IsValid and IsLoGainUsed
+     - added functions Is[Hi,Lo]GainSaturated
+
+   * msignal/MSignalCam.cc:
+     - removed cases 10 and 11 in GetPixelContent
+   
+   * msignal/MSignalPix.[h,cc]:
+     - removed obsolete LoGainUsed references
+
+
+
  2006/08/15 Daniela Dorner
 
Index: trunk/MagicSoft/Mars/NEWS
===================================================================
--- trunk/MagicSoft/Mars/NEWS	(revision 7875)
+++ trunk/MagicSoft/Mars/NEWS	(revision 7876)
@@ -38,4 +38,13 @@
    - callisto fixed a bug which gave weird results if hi- and lo-gain
      could not be extracted properly
+
+   - callisto: improves handling of extracted signal if lo- and/or
+     hi-gain could not be extracted properly. If no appropriate
+     calibration of either the signal or the arrival time is possible
+     the pixel is now markes as unsuitable instead of estimated.
+
+   - callisto: Fixed a problem in the spline extraction which gave
+     weird results if the signal was extracted from the first (and
+     highest) slice
 
    - callisto: Fixed a bug regarding the use of the QE which doesn't
Index: trunk/MagicSoft/Mars/manalysis/MMcCalibrationUpdate.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcCalibrationUpdate.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/manalysis/MMcCalibrationUpdate.cc	(revision 7876)
@@ -378,7 +378,7 @@
 // Fill the MCerPhotPed object
 //
-// This has to be done on an event by event basis because the (calibrated) pedestal 
-// fluctuations depend on whether, for each pixel, we are using the high gain or the 
-// low gain branch.
+// This has to be done on an event by event basis because the (calibrated)
+// pedestal fluctuations depend on whether, for each pixel, we are using
+// the high gain or the low gain branch.
 //
 Int_t MMcCalibrationUpdate::Process()
@@ -390,9 +390,11 @@
 	MExtractedSignalPix &sigpix = (*fSignalCam)[i];
 
+        const Bool_t uselo = sigpix.IsHiGainSaturated();
+
 	//
 	// ped mean and rms per pixel, in ADC counts, according to signal 
 	// calculation (hi or low gain and number of integrated slices):
-	//
-        const Float_t pedestmean = sigpix.IsLoGainUsed()? 
+        //
+        const Float_t pedestmean = uselo ?
 	  fSignalCam->GetNumUsedLoGainFADCSlices()*fHeaderFadc->GetPedestal(i) : 
 	  fSignalCam->GetNumUsedHiGainFADCSlices()*fHeaderFadc->GetPedestal(i);
@@ -405,9 +407,9 @@
 	// counts for the RMS per slice:
 	//
-        const Double_t used = (Double_t)(sigpix.IsLoGainUsed() ?
-                                         fSignalCam->GetNumUsedLoGainFADCSlices() :
-                                         fSignalCam->GetNumUsedHiGainFADCSlices());
-
-        const Float_t rms0 = sigpix.IsLoGainUsed() ?
+        const Double_t used = uselo ?
+            fSignalCam->GetNumUsedLoGainFADCSlices() :
+            fSignalCam->GetNumUsedHiGainFADCSlices();
+
+        const Float_t rms0 = uselo ?
             fHeaderFadc->GetPedestalRmsLow(i) :
             fHeaderFadc->GetPedestalRmsHigh(i);
@@ -419,22 +421,14 @@
 	// in number of photons:
 	//
-	MPedPhotPix &pedpix = (*fPedPhotCam)[i];
-
-        MCalibrationChargePix &calpix = (MCalibrationChargePix&)(*fCalCam)[i];
-        MCalibrationQEPix &qepix = (MCalibrationQEPix&)(*fQECam)[i];
-
-        Float_t qe       = qepix.GetAverageQE();
-
-
-	Float_t conv = (fSignalType == MCalibrateData::kPhot? 
-	  calpix.GetMeanConvFADC2Phe() / qe  :
-	  calpix.GetMeanConvFADC2Phe());
-
-	Float_t hi2lo    = calpix.GetConversionHiLo();
-
-	if (sigpix.IsLoGainUsed())
-            pedpix.Set(conv*hi2lo*pedestmean, conv*hi2lo*pedestrms);
-	else
-            pedpix.Set(conv*pedestmean, conv*pedestrms);
+        const MCalibrationChargePix &calpix = (MCalibrationChargePix&)(*fCalCam)[i];
+        const MCalibrationQEPix     &qepix  = (MCalibrationQEPix&)(*fQECam)[i];
+
+        const Float_t conv = fSignalType == MCalibrateData::kPhot ?
+            calpix.GetMeanConvFADC2Phe() / qepix.GetAverageQE() :
+            calpix.GetMeanConvFADC2Phe();
+
+        const Float_t hi2lo = uselo ? calpix.GetConversionHiLo() : 1;
+
+        (*fPedPhotCam)[i].Set(conv*hi2lo*pedestmean, conv*hi2lo*pedestrms);
 
     }
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 7876)
@@ -742,6 +742,7 @@
     for (UInt_t pixidx=0; pixidx<npix; pixidx++)
     {
+        MBadPixelsPix &bpix = (*fBadPixels)[pixidx];
       
-      if (data)
+        if (data)
         {
             const MExtractedSignalPix &sig = (*fSignals)[pixidx];
@@ -749,33 +750,27 @@
             Float_t signal    = 0.;
             Float_t signalErr = 0.;
-
-            if (sig.IsLoGainUsed())
+            Bool_t  ok        = kFALSE;
+
+            // If hi-gain is not saturated and has successfully been
+            // extracted use the hi-gain arrival time
+            if (!sig.IsHiGainSaturated() && sig.IsHiGainValid())
             {
-              if (fHiLoConv[pixidx] < 0.5)
-                {
-                  signal    = sig.GetExtractedSignalHiGain()*1.5;
-                  signalErr = sig.GetExtractedSignalHiGain()*0.5;
-                }
-              else
-                {
-                  const Float_t siglo = sig.GetExtractedSignalLoGain();
-
-                  if (siglo > 0.1) // low-gain signal has been extracted successfully
-                    {
-                      signal    = siglo*fHiLoConv   [pixidx];
-                      signalErr = siglo*fHiLoConvErr[pixidx];
-                    }
-                  else  // low-gain signal has not been extracted successfully, get a rough estimate from the high-gain
-                    {
-                      signal    = sig.GetExtractedSignalHiGain()*1.5;
-                      signalErr = sig.GetExtractedSignalHiGain()*0.5;
-                    }
-                }
+                signal = sig.GetExtractedSignalHiGain();
+                ok = kTRUE;
             }
             else
             {
-                if (sig.GetExtractedSignalHiGain() <= 9999.)
-                    signal = sig.GetExtractedSignalHiGain();
+                // Use lo-gain if it can be used
+                if (sig.IsLoGainValid() && fHiLoConv[pixidx]>0.5)
+                {
+                    signal    = sig.GetExtractedSignalLoGain()*fHiLoConv[pixidx];
+                    signalErr = sig.GetExtractedSignalLoGain()*fHiLoConvErr[pixidx];
+                    ok = kTRUE;
+                }
             }
+
+            // In this cases the signal extraction has failed.
+            if (!ok)
+                bpix.SetUnsuitable(MBadPixelsPix::kUnsuitableEvt);
 
             const Float_t nphot    = signal                         * fCalibConsts  [pixidx];
@@ -784,5 +779,5 @@
             fCerPhotEvt->AddPixel(pixidx, nphot, nphotErr);
 
-            if (!(*fBadPixels)[pixidx].IsUnsuitable())
+            if (!bpix.IsUnsuitable())
             {
                 if (sig.GetNumHiGainSaturated() > 0)
@@ -812,5 +807,5 @@
               const Float_t mean = (*pedestal)[pixidx].GetPedestal()   *pedmeancalib;
               const Float_t rms  = (*pedestal)[pixidx].GetPedestalRms()*pedrmscalib;
-              
+
               (*pedphot)[pixidx].Set(mean, rms);
               pedphot->SetReadyToSave();
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateRelTimes.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateRelTimes.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateRelTimes.cc	(revision 7876)
@@ -132,10 +132,9 @@
 
         (*fArrivalTime)[idx].SetArrivalTime(signal-offset);
-        (*fArrivalTime)[idx].SetLoGainUsed(sig.IsLoGainUsed());
 
-        // FIXME: This is just a workaround to set pixels to bad for which
-        // the extraction of hi- and lo-gain failed, should be moved to
-        // the extraction
-        if (!sig.IsLoGainValid() && !sig.IsHiGainValid())
+        // FIXME: Is this necessary or explicitly done by the signal-
+        // extractor (may depend on the fact whether independent
+        // extractor are or can be used for signal and arrival time)
+        if (fBadPixels && !sig.IsArrivalTimeValid())
             (*fBadPixels)[idx].SetUnsuitable(MBadPixelsPix::kUnsuitableEvt);
     }
Index: trunk/MagicSoft/Mars/mfilter/MFCosmics.cc
===================================================================
--- trunk/MagicSoft/Mars/mfilter/MFCosmics.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/mfilter/MFCosmics.cc	(revision 7876)
@@ -125,7 +125,6 @@
     }
 
-
     memset(fCut, 0, sizeof(fCut));
-    
+
     return kTRUE;
 }
@@ -193,5 +192,5 @@
         // this case the extracted hi-gain might be empty.
         //
-        if (sig.GetNumHiGainSaturated()>0)
+        if (sig.IsHiGainSaturated())
             continue;
 
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationChargeCam.cc	(revision 7876)
@@ -719,5 +719,5 @@
       
       const Float_t sumhi = pix.GetExtractedSignalHiGain();
-      const Bool_t  sathi = pix.GetNumHiGainSaturated()>0;
+      const Bool_t  sathi = pix.IsHiGainSaturated();
 
       if (IsOscillations())
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationRelTimeCam.cc	(revision 7876)
@@ -332,5 +332,5 @@
 
   const MArrivalTimePix &refpix = (*arrtime)[fReferencePixel];
-  const Float_t reftime = refpix.IsLoGainUsed() 
+  const Float_t reftime = refpix.IsHiGainSaturated()
      ? refpix.GetArrivalTimeLoGain() : refpix.GetArrivalTimeHiGain();
 
@@ -347,5 +347,5 @@
       const Int_t sector = (*fGeom)[i].GetSector();
 
-      if (pix.IsLoGainUsed() && IsLoGain())
+      if (pix.IsHiGainSaturated() && IsLoGain())
         { 
           const Float_t time = pix.GetArrivalTimeLoGain();
Index: trunk/MagicSoft/Mars/mhist/MHCamera.cc
===================================================================
--- trunk/MagicSoft/Mars/mhist/MHCamera.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/mhist/MHCamera.cc	(revision 7876)
@@ -84,5 +84,4 @@
 
 #include "MArrayD.h"
-#include "MMath.h"    // MMath::GaussProb
 
 #define kItemsLegend 48 // see SetPalette(1,0)
@@ -352,5 +351,5 @@
 
     // return MedianDev of the profile data
-    return MMath::MedianDev(arr.GetSize(), arr.GetArray())/MMath::GaussProb(1.0);
+    return MMath::MedianDev(arr.GetSize(), arr.GetArray());
 }
 
Index: trunk/MagicSoft/Mars/msignal/MArrivalTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MArrivalTimeCam.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MArrivalTimeCam.cc	(revision 7876)
@@ -128,5 +128,5 @@
         idx++;
 
-        if (!pix->IsValid())
+        if (!pix->IsArrivalTimeValid())
             continue;
 
@@ -147,5 +147,5 @@
     case 0:
         val = pix.GetArrivalTimeHiGain();
-        return pix.IsHiGainValid();
+        return pix.IsHiGainValid() && !pix.IsHiGainSaturated();
 
     case 1:
@@ -155,5 +155,5 @@
     case 2:
         val = pix.GetArrivalTimeLoGain();
-        return pix.IsLoGainValid();
+        return pix.IsLoGainValid() && !pix.IsLoGainSaturated();
 
     case 3:
@@ -164,17 +164,22 @@
     case 6:
         val = pix.GetArrivalTime();
-        return pix.IsValid();
+        return pix.IsArrivalTimeValid();
 
         // This is for the case the signal has been
         // extracted from lo- and hi-gain
     case 7:
+        // Lo- and hi-gain must be successfully extracted
         if (!pix.IsLoGainValid() || !pix.IsHiGainValid())
+            return kFALSE;
+
+        // Lo- and hi-gain must not be saturated
+        if (pix.IsLoGainSaturated() || pix.IsHiGainSaturated())
             return kFALSE;
 
         val = pix.GetArrivalTimeLoGain()-pix.GetArrivalTimeHiGain();
 
-        if (pix.GetArrivalTimeHiGain()<3 || pix.GetArrivalTimeHiGain()>12 ||
-            pix.GetArrivalTimeLoGain()<3 || pix.GetArrivalTimeLoGain()>12)
-            return kFALSE;
+//        if (pix.GetArrivalTimeHiGain()<3 || pix.GetArrivalTimeHiGain()>12 ||
+//            pix.GetArrivalTimeLoGain()<3 || pix.GetArrivalTimeLoGain()>12)
+//            return kFALSE;
 
         val = pix.GetArrivalTimeLoGain()-pix.GetArrivalTimeHiGain();
Index: trunk/MagicSoft/Mars/msignal/MArrivalTimePix.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MArrivalTimePix.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MArrivalTimePix.cc	(revision 7876)
@@ -90,7 +90,34 @@
 }
 
-Bool_t MArrivalTimePix::IsValid() const
+Float_t MArrivalTimePix::GetArrivalTime() const
 {
-    return (!IsLoGainUsed() && fArrivalTimeHiGainError >= 0) || (IsLoGainUsed() && fArrivalTimeLoGainError >= 0);
+    // If hi-gain is not saturated and has successfully been
+    // extracted use the hi-gain arrival time
+    if (!IsHiGainSaturated() && IsHiGainValid())
+        return GetArrivalTimeHiGain();
+
+    // If hi-gain could not be used ans the lo-gain could
+    // not be extracted return
+    if (!IsLoGainValid())
+        return 0;
+
+    // in all other cases use the lo-gain arrival time
+    return GetArrivalTimeLoGain();
+}
+
+Bool_t MArrivalTimePix::IsArrivalTimeValid() const
+{
+    // If hi-gain is not saturated and has successfully been
+    // extracted use the hi-gain arrival time
+    if (!IsHiGainSaturated() && IsHiGainValid())
+        return kTRUE;
+
+    // If hi-gain could not be used ans the lo-gain could
+    // not be extracted return kFALSE (no valid arrival time)
+    if (!IsLoGainValid())
+        return kFALSE;
+
+    // in all other cases use the lo-gain arrival time
+    return kTRUE;
 }
 
Index: trunk/MagicSoft/Mars/msignal/MArrivalTimePix.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MArrivalTimePix.h	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MArrivalTimePix.h	(revision 7876)
@@ -47,13 +47,15 @@
     Float_t GetArrivalTimeLoGainError() const { return fArrivalTimeLoGainError; }
 
-    Float_t GetArrivalTime()            const { return IsLoGainUsed() ? fArrivalTimeLoGain : fArrivalTimeHiGain; }
+    Float_t GetArrivalTime()            const;
+    Bool_t  IsArrivalTimeValid()        const;
 
     Byte_t GetNumHiGainSaturated()      const { return fNumHiGainSaturated; }
     Byte_t GetNumLoGainSaturated()      const { return fNumLoGainSaturated; }
 
-    Bool_t IsLoGainUsed()               const { return fNumHiGainSaturated > 0; }
-    Bool_t IsLoGainValid()              const { return fArrivalTimeLoGainError>=0 && fNumLoGainSaturated==0; }
-    Bool_t IsHiGainValid()              const { return fArrivalTimeHiGainError>=0 && fNumHiGainSaturated==0; }
-    Bool_t IsValid()                    const;   
+    Bool_t IsHiGainSaturated()          const { return fNumHiGainSaturated>0; }
+    Bool_t IsLoGainSaturated()          const { return fNumLoGainSaturated>0; }
+
+    Bool_t IsLoGainValid()              const { return fArrivalTimeLoGainError>=0; }
+    Bool_t IsHiGainValid()              const { return fArrivalTimeHiGainError>=0; }
 
     ClassDef(MArrivalTimePix, 1)	// Storage Container for ArrivalTime information of one pixel
Index: trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MExtractTimeAndChargeSpline.cc	(revision 7876)
@@ -399,5 +399,7 @@
         {
           maxpos = ids-fHiGainFirst-1;
-          fMaxBinContent = *p;
+          // range-fWindowSizeHiGain+1 == fHiLoLast isn't it?
+          if (maxpos > 1 && maxpos < (range - fWindowSizeHiGain + 1))
+              fMaxBinContent = *p;
         }
 
@@ -420,6 +422,8 @@
           if (*logain > fMaxBinContent)
             { 
-              maxpos = ids-fHiGainFirst-1;
-              fMaxBinContent = *logain;
+                maxpos = ids-fHiGainFirst-1;
+                // range-fWindowSizeHiGain+1 == fHiLoLast isn't it?
+                //if (maxpos > 1 && maxpos < (range - fWindowSizeHiGain + 1))
+                //    fMaxBinContent = *logain;
             }
           
@@ -1088,4 +1092,5 @@
         // between every two FADC slices, instead of numerically
     }
+
     sum *= step; // Transform sum in integral
     return sum;
@@ -1105,5 +1110,5 @@
 
     // The order is important. In some cases (limlo-/limup-check) it can
-    // happen than max<0. In this case we start at 0
+    // happen that max<0. In this case we start at 0
     if (start > max)
         start = max;
Index: trunk/MagicSoft/Mars/msignal/MExtractedSignalCam.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractedSignalCam.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MExtractedSignalCam.cc	(revision 7876)
@@ -144,5 +144,5 @@
         idx++;
 
-        if (!pix->IsValid())
+        if (!pix->IsLoGainValid() && ! pix->IsHiGainValid())
             continue;
 
@@ -163,5 +163,5 @@
     case 0:
         val = pix.GetExtractedSignalHiGain();
-        return pix.IsHiGainValid();
+        return pix.IsHiGainValid() && !pix.IsHiGainSaturated();
 
     case 1:
@@ -171,5 +171,5 @@
     case 2:
         val = pix.GetExtractedSignalLoGain();
-        return pix.IsLoGainValid();
+        return pix.IsLoGainValid() && !pix.IsLoGainSaturated();
 
     case 3:
@@ -180,7 +180,13 @@
         // extracted from lo- and hi-gain
     case 4:
+        // Lo- and hi-gain must be successfully extracted
         if (!pix.IsLoGainValid() || !pix.IsHiGainValid())
             return kFALSE;
 
+        // Lo- and hi-gain must not be saturated
+        if (pix.IsLoGainSaturated() || pix.IsHiGainSaturated())
+            return kFALSE;
+
+        // Both signals must have a positive value
         if (pix.GetExtractedSignalLoGain()<=0 || pix.GetExtractedSignalHiGain()<=0)
             return kFALSE;
Index: trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.cc	(revision 7876)
@@ -47,4 +47,5 @@
 
 static const Float_t gkSignalInitializer = -99999.9;
+
 // ------------------------------------------------------------------------
 //
@@ -95,9 +96,4 @@
 }
 
-Bool_t MExtractedSignalPix::IsValid() const
-{
-    return (!IsLoGainUsed() && fExtractedSignalHiGainError >= 0) || (IsLoGainUsed() && fExtractedSignalLoGainError >= 0);
-}
-
 void MExtractedSignalPix::SetGainSaturation(Byte_t higain, Byte_t logain)
 {
Index: trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.h	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MExtractedSignalPix.h	(revision 7876)
@@ -39,8 +39,9 @@
   Byte_t GetNumLoGainSaturated()          const { return fNumLoGainSaturated;          }
 
-  Bool_t IsLoGainUsed()                   const { return fNumHiGainSaturated>0;        }
-  Bool_t IsLoGainValid()                  const { return fExtractedSignalLoGainError>=0 && fNumLoGainSaturated==0; }
-  Bool_t IsHiGainValid()                  const { return fExtractedSignalHiGainError>=0 && fNumHiGainSaturated==0; }
-  Bool_t IsValid()                        const;   
+  Bool_t IsHiGainSaturated()              const { return fNumHiGainSaturated>0;        }
+  Bool_t IsLoGainSaturated()              const { return fNumLoGainSaturated>0;        }
+
+  Bool_t IsLoGainValid()                  const { return fExtractedSignalLoGainError>=0; }
+  Bool_t IsHiGainValid()                  const { return fExtractedSignalHiGainError>=0; }
 
   ClassDef(MExtractedSignalPix, 3) // Storage Container for Extracted Signal information of one pixel
Index: trunk/MagicSoft/Mars/msignal/MSignalCam.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MSignalCam.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MSignalCam.cc	(revision 7876)
@@ -656,4 +656,5 @@
         break;
 
+        /*
     case 10: // lo gain time
         if (pix->IsPixelUnmapped() || !pix->IsLoGainUsed() ||
@@ -672,4 +673,5 @@
         val = pix->GetArrivalTime();
         return kTRUE;
+        */
 
     default:
Index: trunk/MagicSoft/Mars/msignal/MSignalPix.cc
===================================================================
--- trunk/MagicSoft/Mars/msignal/MSignalPix.cc	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MSignalPix.cc	(revision 7876)
@@ -93,5 +93,4 @@
     fPhot       =  0;
     fErrPhot    =  0;
-    fLoGainUsed = kFALSE;
 }
 
Index: trunk/MagicSoft/Mars/msignal/MSignalPix.h
===================================================================
--- trunk/MagicSoft/Mars/msignal/MSignalPix.h	(revision 7875)
+++ trunk/MagicSoft/Mars/msignal/MSignalPix.h	(revision 7876)
@@ -20,6 +20,4 @@
     Float_t  fArrivalTime;   // Calibrated Arrival Time
 
-    Bool_t   fLoGainUsed;      //! Is lo gain used
-
 public:
     MSignalPix(Float_t phot=0, Float_t errphot=0);
@@ -34,5 +32,4 @@
         pix.fPhot       = fPhot;
         pix.fErrPhot    = fErrPhot;
-        pix.fLoGainUsed = fLoGainUsed;
     }
 
@@ -60,7 +57,4 @@
     void    SetArrivalTime(Float_t tm)    { MMath::ReducePrecision(tm); fArrivalTime = tm; }
 
-    void    SetLoGainUsed(Bool_t b=kTRUE) { fLoGainUsed=b;      }
-    Bool_t  IsLoGainUsed() const          { return fLoGainUsed; }
-
     void    AddNumPhotons(Float_t f)      { fPhot += f; }
     void    Scale(Float_t f)              { fPhot /= f; }
