Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.cc	(revision 6684)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.cc	(revision 6685)
@@ -149,5 +149,5 @@
 const Axis_t  MHCalibrationPulseTimeCam::fgHiGainLast  =  19.5;
 const Float_t MHCalibrationPulseTimeCam::fgProbLimit   = 0.0001;
-const Float_t MHCalibrationPulseTimeCam::fgLowerSignalLimit = 100.;
+const Int_t   MHCalibrationPulseTimeCam::fgLowerSignalLimit = 100;
 const TString MHCalibrationPulseTimeCam::gsHistName    = "PulseTime";
 const TString MHCalibrationPulseTimeCam::gsHistTitle   = "Extracted Times";
@@ -348,19 +348,30 @@
 	continue;
 
-      const Float_t sighi = pix.GetExtractedSignalHiGain();
-
-      if (sighi < fLowerSignalLimit)
+      Byte_t *start = pixel.GetHiGainSamples();
+      Byte_t *end   = start + pixel.GetNumHiGainSamples();
+      Byte_t *p     = start;
+      Byte_t max    = 0;
+      Int_t  maxpos = 0;
+
+      while (p < end)
+	{
+	  if (*p++ > max)
+	    maxpos = p-start-1;
+	}
+
+      start   = pixel.GetLoGainSamples();
+      end     = start + pixel.GetNumLoGainSamples();
+      p       = start;
+
+      while (p < end)
+	{
+	  if (*p++ > max)
+	    maxpos = p-start+pixel.GetNumHiGainSamples() - 1;
+	}
+
+      if ((Int_t)max < fLowerSignalLimit)
 	continue;
 
-      const Byte_t slicehi = pixel.GetMaxHiGainSample();
-      const Byte_t slicelo = pixel.GetMaxLoGainSample();
-
-      Float_t time = 0.;
-
-      if (slicehi > slicelo)
-	time = (Float_t)pixel.GetIdxMaxHiGainSample();
-      else
-	time = (Float_t)pixel.GetIdxMaxLoGainSample();
-
+      const Float_t time = (Float_t)maxpos;
       histhi.FillHist(time);
         
@@ -423,16 +434,73 @@
   *fLog << endl;
 
-  MCalibrationCam *pulsecam  = fIntensCam ? fIntensCam->GetCam() : fCam;
-  MBadPixelsCam   *badcam    = fIntensBad ? fIntensBad->GetCam() : fBadPixels;
-
+  MCalibrationCam *calcam  = fIntensCam ? fIntensCam->GetCam() : fCam;
   //
   // Perform the fitting for the High Gain (done in MHCalibrationCam)
   // 
-  FitHiGainArrays(*pulsecam, *badcam, 
-                  MBadPixelsPix::kHiGainNotFitted,
-                  MBadPixelsPix::kHiGainOscillating);
+  for (Int_t i=0; i<fHiGainArray->GetSize(); i++)
+    {
+      
+      MHCalibrationPix &hist = (*this)[i];
+      
+      if (hist.IsExcluded())
+        continue;
+      
+      MCalibrationPix &pix    = (*calcam)[i];
+      CalcHists(hist,pix);
+    }
+
+  if (!IsAverageing())
+    return kTRUE;
+  
+  for (Int_t j=0; j<fAverageHiGainAreas->GetSize(); j++)
+    {
+      
+      MHCalibrationPix &hist = GetAverageHiGainArea(j);      
+      MCalibrationPix  &pix  = calcam->GetAverageArea(j);
+      CalcHists(hist,pix);
+  }
+  
+  for (Int_t j=0; j<fAverageHiGainSectors->GetSize(); j++)
+    {
+      MHCalibrationPix &hist = GetAverageHiGainSector(j);      
+      MCalibrationPix  &pix  = calcam->GetAverageSector(j);
+      CalcHists(hist,pix);
+    }
   
   return kTRUE;
 }
+
+void MHCalibrationPulseTimeCam::CalcHists(MHCalibrationPix &hist, MCalibrationPix &pix)
+{
+
+
+  if (hist.IsEmpty() || hist.IsOnlyOverflow() || hist.IsOnlyUnderflow())
+    {
+      *fLog << warn << GetDescriptor()
+	    << ": Only overflow or underflow in hi-gain pixel: " << pix.GetPixId() << endl;
+      return;
+    }  
+
+  hist.BypassFit();
+
+  pix.SetHiGainMean       ( hist.GetMean()      );
+  pix.SetHiGainMeanVar    ( hist.GetMeanErr() * hist.GetMeanErr()   );
+  pix.SetHiGainRms        ( hist.GetHistRms()   );
+  pix.SetHiGainSigma      ( hist.GetSigma()     );
+  pix.SetHiGainSigmaVar   ( hist.GetSigmaErr()* hist.GetSigmaErr()  );
+
+  if (IsDebug())
+    {
+      *fLog << dbginf << GetDescriptor() << ": ID " << GetName() 
+            << " Mean: "         << hist.GetMean    ()
+            << " MeanErr: "      << hist.GetMeanErr ()
+            << " MeanSigma: "    << hist.GetSigma   ()
+            << " MeanSigmaErr: " << hist.GetSigmaErr()
+            << " Prob: "         << hist.GetProb    ()
+            << endl;
+    }
+  return;
+}
+
 
 // --------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.h	(revision 6684)
+++ trunk/MagicSoft/Mars/mhcalib/MHCalibrationPulseTimeCam.h	(revision 6685)
@@ -21,5 +21,5 @@
 private:
 
-  static const Float_t fgLowerSignalLimit;     //! Default for fLowerSignalLimit 
+  static const Int_t   fgLowerSignalLimit;     //! Default for fLowerSignalLimit 
 
   static const Int_t   fgHiGainNbins;          //! Nr. bins of HiGain Histograms  (now set to:  550  )
@@ -35,5 +35,5 @@
   static const TString gsHistYTitle;           //! Default Histogram y-axis titles
   
-  Float_t fLowerSignalLimit;                   //  Lower signal limit for pulse time extraction
+  Int_t   fLowerSignalLimit;                   //  Lower signal limit for pulse time extraction
 
   TString fReferenceFile;                      // File name containing the reference values
@@ -55,4 +55,5 @@
   void   DrawDataCheckPixel(MHCalibrationPix &pix, const Float_t refline);
   void   DisplayRefLines   ( const TH1F *hist,           const Float_t refline) const;
+  void   CalcHists         (MHCalibrationPix &hist, MCalibrationPix &pix);
 
   Int_t ReadEnv        ( const TEnv &env, TString prefix, Bool_t print);
@@ -70,5 +71,5 @@
 
   void SetReferenceFile   ( const TString ref=fgReferenceFile    ) { fReferenceFile    = ref; }
-  void SetLowerSignalLimit( const Float_t lim=fgLowerSignalLimit ) { fLowerSignalLimit = lim; }
+  void SetLowerSignalLimit( const Int_t   lim=fgLowerSignalLimit ) { fLowerSignalLimit = lim; }
 
   Bool_t GetPixelContent ( Double_t &val, Int_t idx, const MGeomCam &cam, Int_t type=0) const { return kTRUE; }
