Index: /trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc	(revision 2657)
+++ /trunk/MagicSoft/Mars/manalysis/MCalibrationCalc.cc	(revision 2658)
@@ -252,6 +252,4 @@
 {
 
-    fEvents++;
-
     Int_t cosmicpix = 0;
 
@@ -273,20 +271,17 @@
     while (pixel.Next())
       {
-
-        const Int_t pixid = pixel.GetPixelId();
-
-        Int_t sum = pixel.GetSumHiGainSamples();
-
-        MPedestalPix    &ped = (*fPedestals)[pixid];
- 
-        Float_t pedes  = ped.GetPedestal();
+	
+	const UInt_t pixid = pixel.GetPixelId();
+	
+	MExtractedSignalPix &sig =  (*fSignals)[pixid];
+        MPedestalPix        &ped =  (*fPedestals)[pixid];
         Float_t pedrms = ped.GetPedestalRms();
+	Float_t sumhi  = sig.GetExtractedSignalHiGain();
         
-	if ((float)sum < ((pedes*fNumHiGainSamples)+(2.*fNumHiGainSamples*pedrms)) )
-           cosmicpix++;
+	if (sumhi < 15.*pedrms )   // cut at 3.5 sigma
+	  cosmicpix++;
      }
 
-
-    if (cosmicpix > 50.)
+    if (cosmicpix > 100.)
       {
 	fCosmics++;
@@ -295,4 +290,5 @@
 
     pixel.Reset();
+    fEvents++;
 
     //
@@ -304,17 +300,12 @@
 
 	const UInt_t pixid = pixel.GetPixelId();
-
+	
 	MExtractedSignalPix &sig =  (*fSignals)[pixid];
-
+        
 	Float_t sumhi  = sig.GetExtractedSignalHiGain();
 	Float_t sumlo  = sig.GetExtractedSignalLoGain();
 	Bool_t  logain = sig.IsLoGainUsed();
 
-	Byte_t mid;
-
-	if (logain)
-	    mid  = pixel.GetIdxMaxLoGainSample();
-	else
-	    mid  = pixel.GetIdxMaxHiGainSample();
+	Float_t mtime  = sig.GetMeanArrivalTime();
 
 	MCalibrationPix &pix = (*fCalibrations)[pixid];
@@ -329,11 +320,12 @@
 		"Overflow or Underflow occurred filling Blind Pixel sum = " << sumhi << endl;
 
-	    if (!blindpixel.FillTime((int)mid)) 
+	    if (!blindpixel.FillTime((int)mtime)) 
 	      *fLog << warn << 
-		"Overflow or Underflow occurred filling Blind Pixel time = " << (int)mid << endl;
+		"Overflow or Underflow occurred filling Blind Pixel time = " << mtime << endl;
 	    
 	    if (!blindpixel.FillRChargevsTime(sumhi,fEvents))
 	      *fLog << warn << 
 		"Overflow or Underflow occurred filling Blind Pixel eventnr = " << fEvents << endl;
+	    break;
             
           case gkCalibrationPINDiodeId:
@@ -341,10 +333,11 @@
               *fLog << warn << 
                 "Overflow or Underflow occurred filling HCharge: means = " << sumhi << endl;
-            if (!pindiode.FillTime((int)mid)) 
+            if (!pindiode.FillTime((int)mtime)) 
               *fLog << warn << 
-                "Overflow or Underflow occurred filling HTime: time = " << (int)mid << endl;
+                "Overflow or Underflow occurred filling HTime: time = " << mtime << endl;
             if (!pindiode.FillRChargevsTime(sumhi,fEvents))
               *fLog << warn << 
                 "Overflow or Underflow occurred filling HChargevsN: eventnr = " << fEvents << endl;
+	    break;
 
           default:
@@ -359,11 +352,8 @@
 			<< " signal = " << sumlo << endl;
 
-		if (!pix.FillTimeLoGain((int)mid)) 
+		if (!pix.FillTimeLoGain((int)mtime)) 
 		  *fLog << warn << "Could not fill Lo Gain Time of pixel: " 
-			<< pixid << " time = " << (int)mid << endl;
+			<< pixid << " time = " << mtime << endl;
 		
-		//
-		// Fill the reduced charge into the control histo for better visibility
-		//
 		if (!pix.FillRChargevsTimeLoGain(sumlo,fEvents))
 		  *fLog << warn << "Could not fill Lo Gain Charge vs. EvtNr of pixel: " 
@@ -377,7 +367,7 @@
 			<< " signal = " << sumhi << endl;
 		
-		if (!pix.FillTimeHiGain((int)mid)) 
+		if (!pix.FillTimeHiGain((int)mtime)) 
 		  *fLog << warn << "Could not fill Hi Gain Time of pixel: " 
-			<< pixid << " time = " << (int)mid << endl;
+			<< pixid << " time = " << mtime << endl;
 		
 		if (!pix.FillRChargevsTimeHiGain(sumhi,fEvents))
@@ -385,4 +375,5 @@
 			<< pixid << " signal = " << sumhi  << " event Nr: " << fEvents << endl;
 	      }
+	    break;
 	    
           } /* switch(pixid) */
@@ -449,8 +440,9 @@
       pix.SetPedestal(ped,prms);
 
+      pix.FitCharge();
+
       if (TESTBIT(fFlags,kUseTimeFits))
         pix.FitTime();
       
-      pix.FitCharge();
     }
 
Index: /trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc	(revision 2657)
+++ /trunk/MagicSoft/Mars/manalysis/MCalibrationPix.cc	(revision 2658)
@@ -110,4 +110,5 @@
   if (fHist->UseLoGain())
     {
+
       SetHiGainSaturation();
 
Index: /trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc	(revision 2657)
+++ /trunk/MagicSoft/Mars/manalysis/MExtractSignal.cc	(revision 2658)
@@ -163,8 +163,6 @@
 
         Byte_t *ptr   = pixel.GetHiGainSamples();
-        Byte_t *max   = ptr + pixel.GetIdxMaxHiGainSample();
-	Byte_t *end   = ptr + fRawEvt->GetNumHiGainSamples();
-        Byte_t *first;
-        Byte_t *last;
+        Byte_t *first = ptr + 3;
+        Byte_t *last  = ptr + 9;
 
 	UInt_t  sumHi   = 0;
@@ -178,50 +176,38 @@
         const Float_t pedrms  = ped.GetPedestalRms();
 
-
-	if (max-3 < ptr)
-	  {
-	    first = ptr+3;
-	    last  = ptr+3+fAfter+fBefore;
-	  }
-	else if (max+fAfter-1 > end)
-	  {
-	    first = end-fAfter-fBefore-1;
-	    last  = end-1;
-	  }
-	else
-	  {
-	    first = max-fBefore;
-	    last  = max+fAfter;
-	  }
+	Byte_t maxhi  = 0;
+	Byte_t midhi  = 0;
 
 	for (ptr=first;ptr<last;ptr++)
 	  {
+	    
+	    if (*ptr > maxhi)
+	      {
+		maxhi = *ptr;
+		midhi = ptr-first;
+	      }
+
 	    sumHi += *ptr;
+	    
 	    if (*ptr >= fSaturationLimit)
 	      satHi++;
+
 	  }
 
 	ptr   = pixel.GetLoGainSamples();
-        max   = ptr+pixel.GetIdxMaxLoGainSample();
-	end   = ptr+fRawEvt->GetNumLoGainSamples();
-
-	if (max-4 < ptr)
-	  {
-	    first = ptr+4;
-	    last  = ptr+4+fAfter+fBefore;
-	  }
-	else if (max+fAfter > end)
-	  {
-	    first = end-fAfter-fBefore;
-	    last  = end;
-	  }
-	else
-	  {
-	    first = max-fBefore;
-	    last  = max+fAfter;
-	  }
-
+        first = ptr + 3;
+        last  = ptr + 9;
+	Byte_t maxlo  = 0;
+	Byte_t midlo  = 0;
+	
 	for (ptr=first;ptr<last;ptr++)
 	  {
+
+	    if (*ptr > maxlo)
+	      {
+		maxlo = *ptr;
+		midlo = ptr-first;
+	      }
+
 	    sumLo += *ptr;
 	    if (*ptr >= fSaturationLimit)
@@ -233,10 +219,4 @@
 	      }
 	  }
-
-        //
-        // FIXME: This is preliminary, we will change to pedestals per slice!!!
-        // Assume pedestals per time slice ==> multiply with number of slices
-        //
-
 	pix.SetExtractedSignal((float)sumHi - pedes*(float)fNumHiGainSamples,
 			       pedrms*fSqrtHiGainSamples,
@@ -247,4 +227,9 @@
 	pix.SetGainSaturation((satHi),satHi,satLo);
 
+	if (satHi)
+	  pix.SetArrivalTimes((float)(midlo+3),0.);
+	else
+	  pix.SetArrivalTimes((float)(midhi+3),0.);
+
       } /* while (pixel.Next()) */
 
Index: /trunk/MagicSoft/Mars/manalysis/MExtractedSignalPix.h
===================================================================
--- /trunk/MagicSoft/Mars/manalysis/MExtractedSignalPix.h	(revision 2657)
+++ /trunk/MagicSoft/Mars/manalysis/MExtractedSignalPix.h	(revision 2658)
@@ -33,6 +33,6 @@
     Float_t GetExtractedSignalLoGainError() const   { return fExtractedSignalLoGainError; }
 
-    Float_t GetMeanArrivalTime()      const   { return fMeanArrivalTime; }
-    Float_t GetWidthArrivalTime()     const   { return fWidthArrivalTime; }
+    Float_t GetMeanArrivalTime()            const   { return fMeanArrivalTime; }
+    Float_t GetWidthArrivalTime()           const   { return fWidthArrivalTime; }
 
     void SetExtractedSignal(Float_t sig, Float_t sigerr)   
Index: /trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.cc
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.cc	(revision 2657)
+++ /trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.cc	(revision 2658)
@@ -116,5 +116,5 @@
     fHTimeHiGain->SetXTitle("Mean Arrival Times [Hi Gain FADC slice nr]");
     fHTimeHiGain->SetYTitle("Nr. of events");
-    fHTimeHiGain->Sumw2();
+    // fHTimeHiGain->Sumw2();
 
     fHTimeHiGain->SetDirectory(NULL);
@@ -124,5 +124,5 @@
     fHTimeLoGain->SetXTitle("Mean Arrival Times [Lo Gain FADC slice nr]");
     fHTimeLoGain->SetYTitle("Nr. of events");
-    fHTimeLoGain->Sumw2();
+    //    fHTimeLoGain->Sumw2();
 
     fHTimeLoGain->SetDirectory(NULL);
@@ -183,5 +183,8 @@
 
   fPixId = id;
-  
+
+  //
+  // Names Hi gain Histograms
+  //
   TString nameQHiGain = TString(fHChargeHiGain->GetName());
   nameQHiGain += id;
@@ -196,4 +199,7 @@
   fHChargevsNHiGain->SetName(nameQvsNHiGain.Data());
 
+  //
+  // Title Hi gain Histograms
+  //
   TString titleQHiGain = TString(fHChargeHiGain->GetTitle());
   titleQHiGain += id;
@@ -208,5 +214,7 @@
   fHChargevsNHiGain->SetTitle(titleQvsNHiGain.Data());
 
-
+  //
+  // Names Low Gain Histograms
+  //
   TString nameQLoGain = TString(fHChargeLoGain->GetName());
   nameQLoGain += id;
@@ -221,4 +229,7 @@
   fHChargevsNLoGain->SetName(nameQvsNLoGain.Data());
 
+  //
+  // Titles Low Gain Histograms
+  //
   TString titleQLoGain = TString(fHChargeLoGain->GetTitle());
   titleQLoGain += id;
@@ -374,4 +385,6 @@
     fHiGainvsLoGain->GetXaxis()->Set(300,0.,1500.);
     fHiGainvsLoGain->GetYaxis()->Set(400,0.,2000.);
+    fHiGainvsLoGain->GetXaxis()->SetTitle("Sum of Charges High Gain");
+    fHiGainvsLoGain->GetYaxis()->SetTitle("Sum of Charges Low Gain");
     fHiGainvsLoGain->SetMarkerStyle(7);
 
@@ -480,5 +493,5 @@
 	if (fTimeGausFit)
 	  {
-	    if (fTimeChisquare > 1.)
+	    if (fTimeProb > gkProbLimit) 
 	      fTimeGausFit->SetLineColor(kRed);
 	    else
@@ -494,5 +507,5 @@
 	if (fTimeGausFit)
 	  {
-	    if (fTimeChisquare > 1.)
+	    if (fTimeProb > gkProbLimit) 
 	      fTimeGausFit->SetLineColor(kRed);
 	    else
@@ -535,5 +548,5 @@
     return kFALSE;
 
-  rmin = (rmin != 0.) ? rmin : 4.;
+  rmin = (rmin != 0.) ? rmin : 3.;
   rmax = (rmax != 0.) ? rmax : 9.;
 
@@ -575,5 +588,5 @@
   fTimeSigma     = fTimeGausFit->GetParameter(2);
 
-  if (fTimeChisquare > 1.) 
+  if (fTimeProb < gkProbLimit) 
     {
       *fLog << warn << "Fit of the Arrival times failed ! " << endl;
@@ -591,5 +604,5 @@
     return kFALSE;
 
-  rmin = (rmin != 0.) ? rmin : 4.;
+  rmin = (rmin != 0.) ? rmin : 3.;
   rmax = (rmax != 0.) ? rmax : 9.;
 
@@ -631,5 +644,5 @@
   fTimeSigma     = fTimeGausFit->GetParameter(2);
 
-  if (fTimeChisquare > 1.) 
+  if (fTimeProb < gkProbLimit) 
     {
       *fLog << warn << "Fit of the Arrival times failed ! " << endl;
@@ -709,5 +722,4 @@
     }
   
-  
   fFitOK = kTRUE;
     
Index: /trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.h
===================================================================
--- /trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.h	(revision 2657)
+++ /trunk/MagicSoft/Mars/mhist/MHCalibrationPixel.h	(revision 2658)
@@ -36,5 +36,5 @@
 
   Int_t fPixId;                  // Pixel Nr
-  TGraph *fHiGainvsLoGain;       // Plot the HiGain vs. the LoGain
+  TGraph *fHiGainvsLoGain;       //! Plot the HiGain vs. the LoGain
   Int_t fTotalEntries;           // Number of entries
 
