Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4215)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4216)
@@ -18,4 +18,9 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2004/05/27: Markus Gaug
+
+   * mcalib/MHCalibrationChargeBlindPix.[h,cc]
+     - put some protection against zero-division in fitFuncMichele
 
  2004/05/27: Thomas Bretz
Index: /trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc	(revision 4215)
+++ /trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.cc	(revision 4216)
@@ -622,10 +622,8 @@
   const Double_t lambda_1cat_guess = 0.005;
   const Double_t lambda_1dyn_guess = 0.002;
-  //  const Double_t mu_1cat_guess = mu_0_guess + 4500.;
-  //  const Double_t mu_1dyn_guess = mu_0_guess + 2500.;
-  const Double_t mu_1cat_guess = mu_0_guess + 1000.;
-  const Double_t mu_1dyn_guess = mu_0_guess + 2500.;
-  const Double_t si_1cat_guess = 500.;
-  const Double_t si_1dyn_guess = 1000.;
+  const Double_t mu_1cat_guess = 1000.;
+  const Double_t mu_1dyn_guess = 2500.;
+  const Double_t si_1cat_guess = si_0_guess+ 500.;
+  const Double_t si_1dyn_guess = si_0_guess+ 1000.;
   const Double_t offset_guess  = 0.5;
   // Polya
@@ -696,5 +694,5 @@
     case kEMichele:
       fSinglePheFit->SetParameters(lambda_1cat_guess, lambda_1dyn_guess, 
-                                   mu_0_guess, mu_1cat_guess,mu_1dyn_guess,
+                                   20., mu_1cat_guess,mu_1dyn_guess,
                                    si_0_guess, si_1cat_guess,si_1dyn_guess,
                                    norm, offset_guess);
@@ -706,6 +704,4 @@
       fSinglePheFit->SetParLimits(1,0.,0.05); 
       fSinglePheFit->SetParLimits(2,0.,fSinglePheCut);    
-      //      fSinglePheFit->SetParLimits(3,4000.,5500.);    
-      //      fSinglePheFit->SetParLimits(4,2500.,5000.);    
       fSinglePheFit->SetParLimits(3,fSinglePheCut,3000.);    
       fSinglePheFit->SetParLimits(4,fSinglePheCut,3500.);    
@@ -713,6 +709,4 @@
       fSinglePheFit->SetParLimits(6,500.,1000.);    
       fSinglePheFit->SetParLimits(7,300.,1500.);    
-      //      fSinglePheFit->SetParLimits(6,300.,2000.);    
-      //      fSinglePheFit->SetParLimits(7,100.,2500.);    
       fSinglePheFit->SetParLimits(8,norm/1.1,norm*1.1);
       fSinglePheFit->SetParLimits(9,0.,1.);
@@ -880,5 +874,5 @@
   const Stat_t   entries = fHGausHist.Integral("width");
   const Double_t pedarea = fFGausFit->Integral(0.,fSinglePheCut);
-    
+
   fLambdaCheck     = TMath::Log(entries/pedarea);
   // estimate the error by the error of the obtained area from the Gauss-function:
Index: /trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h	(revision 4215)
+++ /trunk/MagicSoft/Mars/mcalib/MHCalibrationChargeBlindPix.h	(revision 4216)
@@ -179,20 +179,29 @@
       Double_t sumcat = 0.;
       Double_t sumdyn = 0.;
-      Double_t arg = 0.;
-      
+      Double_t arg    = 0.;
+      
+      if (lambda1cat < lambda1dyn)
+        return FLT_MAX;
+
       if (mu1cat    < mu0)
         return FLT_MAX;
 
+      if (mu1dyn    < mu0)
+        return FLT_MAX;
+
+      if (mu1cat < mu1dyn)
+        return FLT_MAX;
+
+      if (sigma0 < 0.0001)
+        return FLT_MAX;
+      
       if (sigma1cat < sigma0)
         return FLT_MAX;
 
-      // if (sigma1cat < sigma1dyn)
-      // return NoWay;
-
-      //if (mu1cat < mu1dyn)
-      // return NoWay;
-
-      //      if (lambda1cat < lambda1dyn)
-      // return NoWay;
+      if (sigma1dyn < sigma0)
+        return FLT_MAX;
+
+      if (sigma1cat < sigma1dyn)
+        return FLT_MAX;
 
       Double_t mu2cat = (2.*mu1cat)-mu0;  
