Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 4333)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 4334)
@@ -482,4 +482,5 @@
   fNumHiGainSamples  =  fCam->GetNumHiGainFADCSlices();
   fNumLoGainSamples  =  fCam->GetNumLoGainFADCSlices();
+
   fSqrtHiGainSamples =  TMath::Sqrt(fNumHiGainSamples);
   fSqrtLoGainSamples =  TMath::Sqrt(fNumLoGainSamples);
@@ -504,4 +505,6 @@
         }
       
+      if (IsDebug())
+        pix.SetDebug();
     }
 
@@ -743,4 +746,5 @@
   const Float_t num    = TMath::Sqrt((Float_t)fPedestals->GetTotalEntries());
 
+
   //
   // set them in the calibration camera
@@ -815,5 +819,5 @@
       return kFALSE;
     }
-  
+
   if (!cal.CalcFFactorMethod())
     {
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 4333)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 4334)
@@ -81,5 +81,5 @@
 
   // enums
-  enum  { kHiLoGainCalibration };
+  enum  { kHiLoGainCalibration, kDebug };
 
   // functions
@@ -108,4 +108,6 @@
 
   void Clear(const Option_t *o="");
+
+  Bool_t IsDebug() const   {  return TESTBIT(fFlags,kDebug); }
   
   void SetChargeLimit       ( const Float_t f=fgChargeLimit            ) { fChargeLimit       = f;   }
@@ -122,4 +124,6 @@
   void SkipHiLoGainCalibration ( const Bool_t b=kTRUE )
       { b ? CLRBIT(fFlags, kHiLoGainCalibration) : SETBIT(fFlags, kHiLoGainCalibration); }
+  void SetDebug              ( const Bool_t b=kTRUE )
+      { b ? CLRBIT(fFlags, kDebug              ) : SETBIT(fFlags, kDebug              ); }
 
   ClassDef(MCalibrationChargeCalc, 1)   // Task calculating Calibration Containers and Quantum Efficiencies
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.cc	(revision 4333)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.cc	(revision 4334)
@@ -695,4 +695,15 @@
   const Float_t pedRmsSquareVar = IsHiGainSaturation() ? fLoGainPedRmsSquareVar : 0.25*fPedVar*pedRmsSquare;
 
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " HiGainSaturation: " << IsHiGainSaturation() 
+            << " Sigma: " << sigma 
+            << " Var.Sigma: " << sigmavar
+            << " PedRmsSquare: " << pedRmsSquare
+            << " pedRmsSquareVar: " << pedRmsSquareVar
+            << endl;
+    }
+  
   const Float_t sigmaSquare    =      sigma     * sigma;
   const Float_t sigmaSquareVar = 4. * sigmavar  * sigmaSquare;
@@ -703,4 +714,11 @@
   fRSigmaSquare = sigmaSquare - pedRmsSquare;
 
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Red.Sigma Square: " << fRSigmaSquare
+            << endl;
+    }
+  
   if (fRSigmaSquare <= 0.)
     {
@@ -711,5 +729,13 @@
     }
 
+  
   fRSigmaSquareVar = 4. * (sigmaSquareVar + pedRmsSquareVar);
+
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Var.Red.Sigma Square: " << fRSigmaSquareVar
+            << endl;
+    }
 
   return kTRUE;
@@ -746,4 +772,5 @@
 {
 
+
   if (fRSigmaSquare < 0.)
     return kFALSE;
@@ -765,4 +792,14 @@
   fPheFFactorMethod = ffactorsquare * meanSquare / fRSigmaSquare;
 
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " F-Factor Square: " << ffactorsquare
+            << " Mean Square: " << meanSquare
+            << " Red.Sigma Square: " << fRSigmaSquare
+            << " Photo-electrons: " << fPheFFactorMethod
+            << endl;
+    }
+
   if (fPheFFactorMethod < fPheFFactorMethodLimit)
     return kFALSE;
@@ -774,9 +811,33 @@
   fPheFFactorMethodVar =  pheRelVar * fPheFFactorMethod * fPheFFactorMethod;
 
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Rel.Var.F-Factor Square: " << ffactorsquareRelVar
+            << " Rel.Var. Mean Square: " << meanSquareRelVar
+            << " Rel.Var. Red.Sigma Square: " << rsigmaSquareRelVar
+            << " Rel.Var. Photo-electrons: " << pheRelVar
+            << endl;
+    }
+
   if (fPheFFactorMethodVar < 0. )
     return kFALSE;
-
-  fMeanConvFADC2Phe    =  fPheFFactorMethod / GetConvertedMean();
-  
+  
+  const Float_t convmean = GetConvertedMean();
+  
+
+  if (convmean > 0.)
+    fMeanConvFADC2Phe    =  fPheFFactorMethod / GetConvertedMean();
+  else
+    fMeanConvFADC2Phe    =  -1.;
+
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Converted Mean: " << convmean 
+            << " Conversion FADC2Phe: " << fMeanConvFADC2Phe
+            << endl;
+    }
+
   if (fMeanConvFADC2Phe < 0. )
     return kFALSE;
@@ -790,4 +851,14 @@
   const Float_t limit      = IsHiGainSaturation() ? fConvFFactorRelVarLimit * 4. : fConvFFactorRelVarLimit;
 
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Rel.Var.Red.Sigma: " << rsigmaSquareRelVar
+            << " Rel.Var.Mean: " << GetMeanRelVar()
+            << " Rel.Var.F-Factor: " << ffactorsquareRelVar
+            << " Rel.Var.Conversion FADC2Phe: " << convrelvar
+            << endl;
+    }
+
   if (convrelvar > limit || convrelvar < 0.)
     {
@@ -816,4 +887,16 @@
 {
 
+
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Number photons: " << nphotons
+            << " Rel.Var.Number photons: " << nphotonsrelvar
+            << " Red.Sigma Square: " << fRSigmaSquare
+            << " Mean: " << GetMean()
+            << endl;
+    }
+
+
   if (nphotons <= 0.)
     {
@@ -830,4 +913,11 @@
   fMeanFFactorFADC2Phot =  TMath::Sqrt(fRSigmaSquare * nphotons) / GetMean() ;
   
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " F-Factor FADC2Phot: " << fMeanFFactorFADC2Phot
+            << endl;
+    }
+
   if (fMeanFFactorFADC2Phot < 0.)
     {
@@ -841,4 +931,14 @@
   
   fMeanFFactorFADC2PhotVar    = ffactorrelvar * fMeanFFactorFADC2Phot * fMeanFFactorFADC2Phot;
+
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Rel.Var.Red.Sigma: " << 0.25 * fRSigmaSquareVar / ( fRSigmaSquare * fRSigmaSquare) 
+            << " Rel.Var.Mean: " << GetMeanRelVar()
+            << " Rel.Var.photons: " << 0.25 * nphotonsrelvar
+            << " Rel.Var.F-Factor FADC2Phot: " << ffactorrelvar
+            << endl;
+    }
 
   return kTRUE;
@@ -896,10 +996,31 @@
   const Float_t elecRmsSquareVar = 4.*elecPedRmsVar * elecRmsSquare;
   
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " Ped.Rms Square:  " << pedRmsSquare 
+            << " Elec.Rms Square: " << elecRmsSquare 
+            << " Ped.Rms.Square Var.: " << pedRmsSquareVar 
+            << " Elec.Rms Square Var.: " << elecRmsSquareVar 
+            << endl;
+    }
+  
+
   Float_t higainNsbSquare        =  pedRmsSquare    - elecRmsSquare;
-  Float_t higainNsbSquareRelVar  = (pedRmsSquareVar + elecRmsSquareVar)
-                                 / (higainNsbSquare * higainNsbSquare) ;
-  
-  if (higainNsbSquare < 0.)
+  Float_t higainNsbSquareRelVar  = (pedRmsSquareVar + elecRmsSquareVar);
+
+
+  if (higainNsbSquare < 0.001)
     higainNsbSquare = 0.;
+  else
+    higainNsbSquareRelVar  /= (higainNsbSquare * higainNsbSquare) ;
+  
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " HiGain NSB Square:  " << higainNsbSquare
+            << " Rel.Var.HiGain NSB Square:  " << higainNsbSquareRelVar
+            << endl;
+    }
   
   //
@@ -917,4 +1038,13 @@
   fLoGainPedRmsSquareVar = logainNsbSquareVar + elecRmsSquareVar;
 
+  if (IsDebug())
+    {
+      *fLog << dbginf << "ID: " << GetPixId() 
+            << " LoGain Ped Rms Square:  " << fLoGainPedRmsSquare
+            << " Var.Ped Rms Square:  " << fLoGainPedRmsSquareVar
+            << endl;
+    }
+  
+  
 }
  
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.cc
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 4333)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.cc	(revision 4334)
@@ -155,5 +155,5 @@
     : fRuns(0), fExtractor(NULL), fTimeExtractor(NULL), 
       fColor(MCalibrationCam::kNONE), fDisplayType(kNormalDisplay),
-      fRelTimes(kFALSE), fDataCheck(kFALSE)
+      fRelTimes(kFALSE), fDataCheck(kFALSE), fDebug(kFALSE)
 {
 
@@ -1004,4 +1004,6 @@
   calcalc.SetOutputPath(fOutputPath);
   calcalc.SetOutputFile(Form("%s-ChargeCalibStat.txt",(const char*)fRuns->GetRunsAsFileName()));
+  if (fDebug)
+    calcalc.SetDebug();
 
   MCalibrationRelTimeCalc  timecalc;
Index: trunk/MagicSoft/Mars/mjobs/MJCalibration.h
===================================================================
--- trunk/MagicSoft/Mars/mjobs/MJCalibration.h	(revision 4333)
+++ trunk/MagicSoft/Mars/mjobs/MJCalibration.h	(revision 4334)
@@ -57,5 +57,6 @@
   Bool_t fRelTimes;                                        // Flag if relative times have to be calibrated
   Bool_t fDataCheck;                                       // Flag if the data check is run on raw data
-  
+  Bool_t fDebug;
+
   void   DisplayResult(MParList &plist);
   Bool_t WriteResult();
@@ -97,4 +98,7 @@
   void SetDataCheck         (const Bool_t b=kTRUE) { fDataCheck        = b; SetDataCheckDisplay(); }
 
+  // Debug
+  void SetDebug             (const Bool_t b=kTRUE) { fDebug           = b; }
+  
   // Devices
   void SetUseBlindPixel( const Bool_t b=kTRUE );
