Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4573)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4574)
@@ -37,4 +37,9 @@
    * macros/bootcampstandardanalysis.C 
      - added MBadPixelsTreat
+
+
+   * mcalib/MCalibrate.cc
+     - implemented different way to calculate error of signal 
+       in method kFlatCharge (as discussed with Keiichi).
 
 
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrate.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrate.cc	(revision 4573)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrate.cc	(revision 4574)
@@ -303,65 +303,67 @@
           calibFFactor   = pix.GetMeanFFactorFADC2Phot();
 
-   	  if (fCalibrationMode== kFlatCharge)
-	  {
+          MCalibrationQEPix &qe  = (MCalibrationQEPix&) (*fQEs)[pixidx];
+          
+          switch(fCalibrationMode)
+            {
+            case kFlatCharge:
 	      calibConv        = avMean / pix.GetMean() / fGeomCam->GetPixRatio(pixidx) ;
 	      calibConvVar     = (avMeanRelVar + pix.GetMeanRelVar()) * calibConv * calibConv;
-	      calibFFactor     = pix.GetRSigmaPerCharge();
-	  }
-	  else
-	  {
-
-	      MCalibrationQEPix &qe  = (MCalibrationQEPix&) (*fQEs)[pixidx];
-
-	      switch(fCalibrationMode)
-	      {
-		  case kBlindPixel:
-		      if (qe.IsBlindPixelMethodValid())
-		      {
-			  calibQE      = qe.GetQECascadesBlindPixel   ( zenith );
-			  calibQEVar   = qe.GetQECascadesBlindPixelVar( zenith );
-		      }
-		      else
-			  continue;
-		      break;
-		  case kPinDiode:
-		      if (qe.IsPINDiodeMethodValid())
-		      {
-			  calibQE      = qe.GetQECascadesPINDiode   ( zenith );
-			  calibQEVar   = qe.GetQECascadesPINDiodeVar( zenith );
-		      }
-		      else
-			  continue;
-		      break;
-		  case kFfactor:
-		      if (pix.IsFFactorMethodValid())
-                        {
-                          calibQE      = qe.GetQECascadesFFactor   ( zenith );
-			  calibQEVar   = qe.GetQECascadesFFactorVar( zenith );
-                        }
-		      else
-			  continue;
-		      break;
-		  case kCombined:
-		      if (qe.IsCombinedMethodValid())
-		      {
-			  calibQE      = qe.GetQECascadesCombined   ( zenith );
-			  calibQEVar   = qe.GetQECascadesCombinedVar( zenith );
-		      }
-		      else
-			  continue;
-		      break;
-		  case kDummy:
-		      hiloconv     = 1.;
-		      hiloconverr  = 0.;
-		      calibQE      = 1.;
-		      calibQEVar   = 0.;
-		      break;
-		      
-	      } /* switch calibration mode */
-	  } /* else fCalibrationMode == kFlatCharge */
-	} /* if(fCalibrationMode!=kNone) */
+              if (pix.IsFFactorMethodValid())
+                {
+                  const Float_t convmin1 = qe.GetQECascadesFFactor(zenith)/pix.GetMeanConvFADC2Phe();
+                  if (convmin1 > 0)
+                    calibFFactor *= TMath::Sqrt(convmin1);
+                  else
+                    calibFFactor = -1.;
+                }
+              break;
+            case kBlindPixel:
+              if (qe.IsBlindPixelMethodValid())
+                {
+                  calibQE      = qe.GetQECascadesBlindPixel   ( zenith );
+                  calibQEVar   = qe.GetQECascadesBlindPixelVar( zenith );
+                }
+              else
+                continue;
+              break;
+            case kPinDiode:
+              if (qe.IsPINDiodeMethodValid())
+                {
+                  calibQE      = qe.GetQECascadesPINDiode   ( zenith );
+                  calibQEVar   = qe.GetQECascadesPINDiodeVar( zenith );
+                }
+              else
+                continue;
+              break;
+            case kFfactor:
+              if (pix.IsFFactorMethodValid())
+                {
+                  calibQE      = qe.GetQECascadesFFactor   ( zenith );
+                  calibQEVar   = qe.GetQECascadesFFactorVar( zenith );
+                }
+              else
+                continue;
+              break;
+            case kCombined:
+              if (qe.IsCombinedMethodValid())
+                {
+                  calibQE      = qe.GetQECascadesCombined   ( zenith );
+                  calibQEVar   = qe.GetQECascadesCombinedVar( zenith );
+                }
+              else
+                continue;
+              break;
+            case kDummy:
+              hiloconv     = 1.;
+              hiloconverr  = 0.;
+              calibQE      = 1.;
+              calibQEVar   = 0.;
+              break;
+              
+            } /* switch calibration mode */
+        } /* if(fCalibrationMode!=kNone) */
       else
-      {
+        {
 	  hiloconv       = 1.;
 	  hiloconverr    = 0.;
@@ -398,8 +400,4 @@
       nphotErr = calibFFactor*TMath::Sqrt(TMath::Abs(nphot));
 
-      if (fCalibrationMode == kFlatCharge)
-	  nphotErr = calibFFactor * signal;
-
-
       //
       // The following part is the outcommented first version of the error calculation
