Index: /trunk/MagicSoft/Mars/macros/calibration.C
===================================================================
--- /trunk/MagicSoft/Mars/macros/calibration.C	(revision 3434)
+++ /trunk/MagicSoft/Mars/macros/calibration.C	(revision 3435)
@@ -30,7 +30,8 @@
 //    const char *inpath = "/remote/home/pc2/operator/NewCalBoxTest/";
 //    const char *inpath = "/remote/home/pc2/operator/Crab20040214/";
-    const char *inpath = "./";
+//    const char *inpath = "./";
     //const TString inpath = "/mnt/Data/rootdata/CrabNebula/2004_02_10/";
     //const TString inpath = "/mnt/Data/rootdata/CrabNebula/2004_01_26/";
+  const TString inpath = "/mnt/Data/rootdata/CrabNebula/2004_01_27/";
     //const TString inpath = "/mnt/Data/rootdata/Miscellaneous/2003_12_19/";
 
@@ -38,6 +39,8 @@
     MRunIter cruns;
 
-    pruns.AddRun(14400,inpath);
-    cruns.AddRuns(14401,14409,inpath);
+    pruns.AddRun(12386,inpath);
+    cruns.AddRun(12525,inpath);
+    //    pruns.AddRun(14400,inpath);
+    //    cruns.AddRuns(14401,14409,inpath);
 //    pruns.AddRuns(15487,15494,inpath);
 //    cruns.AddRuns(15495,15508,inpath);
@@ -120,4 +123,5 @@
 //    plist.AddToList(&histpin);
     plist.AddToList(&histblind);
+    plist.AddToList(&pedloop.GetBadPixels());    
 
     //
@@ -133,5 +137,5 @@
     MCalibrationChargeCalc calcalc;
     MGeomApply             geomapl;
-    
+
     MFillH filltime( "MHCalibrationRelTimeCam"    , "MArrivalTimeCam");
 //   MFillH fillpin  ("MHCalibrationChargePINDiode", "MExtractedSignalPINDiode");
@@ -198,8 +202,8 @@
     // just one example how to get the plots of individual pixels
     //
-    histblind.DrawClone("all");
-    histcharge[5].DrawClone("all");
-    histcharge(5).DrawClone("all");
-    histtime[5].DrawClone("fourierevents");
+    //    histblind.DrawClone("all");
+    //    histcharge[5].DrawClone("all");
+    //    histcharge(5).DrawClone("all");
+    //    histtime[5].DrawClone("fourierevents");
 
     // Create histograms to display
Index: /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsPix.h
===================================================================
--- /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsPix.h	(revision 3434)
+++ /trunk/MagicSoft/Mars/mbadpixels/MBadPixelsPix.h	(revision 3435)
@@ -6,6 +6,6 @@
 #endif
 
-#ifndef ROOT_TArrayC
-#include <TArrayC.h>
+#ifndef ROOT_TArrayI
+#include <TArrayI.h>
 #endif
 
@@ -13,5 +13,5 @@
 {
 private:
-    TArrayC fInfo;
+    TArrayI fInfo;
 
 public:
@@ -108,37 +108,37 @@
 
     Bool_t IsHiGainSaturation         () const
-      { return !(fInfo[1] | ~kHiGainSaturation         == ~kHiGainSaturation );         }
+      { return !((fInfo[1] | ~kHiGainSaturation)         == ~kHiGainSaturation );         }
     Bool_t IsLoGainSaturation         () const
-      { return !(fInfo[1] | ~kLoGainSaturation         == ~kLoGainSaturation );         }
+      { return !((fInfo[1] | ~kLoGainSaturation)         == ~kLoGainSaturation );         }
     Bool_t IsCombinedMethodNotValid   () const
-      { return !(fInfo[1] | ~kCombinedMethodNotValid   == ~kCombinedMethodNotValid );   }
+      { return !((fInfo[1] | ~kCombinedMethodNotValid)   == ~kCombinedMethodNotValid );   }
     Bool_t IsPINDiodeMethodNotValid   () const
-      { return !(fInfo[1] | ~kPINDiodeMethodNotValid   == ~kPINDiodeMethodNotValid );   }
+      { return !((fInfo[1] | ~kPINDiodeMethodNotValid)   == ~kPINDiodeMethodNotValid );   }
     Bool_t IsFFactorMethodNotValid    () const
-      { return !(fInfo[1] | ~kFFactorMethodNotValid    == ~kFFactorMethodNotValid );    }
+      { return !((fInfo[1] | ~kFFactorMethodNotValid)    == ~kFFactorMethodNotValid );    }
     Bool_t IsBlindPixelMethodNotValid () const
-      { return !(fInfo[1] | ~kBlindPixelMethodNotValid == ~kBlindPixelMethodNotValid ); }
+      { return !((fInfo[1] | ~kBlindPixelMethodNotValid) == ~kBlindPixelMethodNotValid ); }
     Bool_t IsMeanTimeInLastBin        () const
-      { return !(fInfo[1] | ~kMeanTimeInLastBin        == ~kMeanTimeInLastBin );        }
+      { return !((fInfo[1] | ~kMeanTimeInLastBin)        == ~kMeanTimeInLastBin );        }
     Bool_t IsMeanTimeInFirstBin       () const
-      { return !(fInfo[1] | ~kMeanTimeInFirstBin       == ~kMeanTimeInFirstBin );       }
+      { return !((fInfo[1] | ~kMeanTimeInFirstBin)       == ~kMeanTimeInFirstBin );       }
     Bool_t IsLoGainOscillating        () const
-      { return !(fInfo[1] | ~kLoGainOscillating        == ~kLoGainOscillating );        }
+      { return !((fInfo[1] | ~kLoGainOscillating)        == ~kLoGainOscillating );        }
     Bool_t IsHiGainOscillating        () const
-      { return !(fInfo[1] | ~kHiGainOscillating        == ~kHiGainOscillating );        }
+      { return !((fInfo[1] | ~kHiGainOscillating)        == ~kHiGainOscillating );        }
     Bool_t IsConvHiLoNotValid         () const
-      { return !(fInfo[1] | ~kConvHiLoNotValid         == ~kConvHiLoNotValid );         }
+      { return !((fInfo[1] | ~kConvHiLoNotValid)         == ~kConvHiLoNotValid );         }
     Bool_t IsChargeSigmaNotValid      () const
-      { return !(fInfo[1] | ~kChargeSigmaNotValid      == ~kChargeSigmaNotValid );      }
+      { return !((fInfo[1] | ~kChargeSigmaNotValid)      == ~kChargeSigmaNotValid );      }
     Bool_t IsChargeRelErrNotValid     () const
-      { return !(fInfo[1] | ~kChargeRelErrNotValid     == ~kChargeRelErrNotValid );     }
+      { return !((fInfo[1] | ~kChargeRelErrNotValid)     == ~kChargeRelErrNotValid );     }
     Bool_t IsChargeErrNotValid        () const
-      { return !(fInfo[1] | ~kChargeErrNotValid        == ~kChargeErrNotValid );        }
+      { return !((fInfo[1] | ~kChargeErrNotValid)        == ~kChargeErrNotValid );        }
     Bool_t IsChargeIsPedestal         () const
-      { return !(fInfo[1] | ~kChargeIsPedestal         == ~kChargeIsPedestal );         }
+      { return !((fInfo[1] | ~kChargeIsPedestal)         == ~kChargeIsPedestal );         }
     Bool_t IsLoGainNotFitted          () const
-      { return !(fInfo[1] | ~kLoGainNotFitted          == ~kLoGainNotFitted );          }
+      { return !((fInfo[1] | ~kLoGainNotFitted)          == ~kLoGainNotFitted );          }
     Bool_t IsHiGainNotFitted          () const
-      { return !(fInfo[1] | ~kHiGainNotFitted          == ~kHiGainNotFitted );          }
+      { return !((fInfo[1] | ~kHiGainNotFitted)          == ~kHiGainNotFitted );          }
 
     Bool_t IsLoGainBad() const { return IsLoGainSaturation()
@@ -155,6 +155,6 @@
     Bool_t IsCalibrationFitOK() const    { return !( (IsHiGainSaturation() && IsHiGainNotFitted())
                                                      || ( IsLoGainSaturation() && IsLoGainNotFitted()) ); }
-    Bool_t IsCalibrationOscillating() const  { return ( IsHiGainSaturation() && IsHiGainOscillating()) 
-                                                 || ( IsLoGainSaturation() && IsLoGainOscillating()) ; }
+    Bool_t IsCalibrationOscillating() const  { return ( !IsHiGainSaturation() && IsHiGainOscillating()) 
+                                                 || ( IsHiGainSaturation() && IsLoGainOscillating()) ; }
     Bool_t IsCalibrationResultOK() const  {  return IsCalibrationSignalOK()
                                                && !(IsCalibrationOscillating())
@@ -173,5 +173,5 @@
     void Merge(const MBadPixelsPix &pix);
 
-    const TArrayC &GetInfo() const { return fInfo; }
+    const TArrayI &GetInfo() const { return fInfo; }
 
     ClassDef(MBadPixelsPix, 1)	// Storage Container for bad pixel information of a single pixel
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3434)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3435)
@@ -439,5 +439,5 @@
       pix.CheckTimeValidity(&bad);
       
-      if (!bad.IsCalibrationResultOK())
+      if (!bad.IsCalibrationSignalOK())
         continue;
 
@@ -497,13 +497,22 @@
 			      avouterprms/avouternum * TMath::Sqrt((Float_t)fNumHiGainSamples/avouternum));
   }
+
+  MBadPixelsPix *bad = fCam->GetAverageInnerBadPix();
   
-  if (!avinnerpix->CheckChargeValidity() || !avinnerpix->CheckTimeValidity())
-      if (!avinnerpix->CalcReducedSigma())
-	  avinnerpix->CalcFFactorMethod();
-
-  if (!avouterpix->CheckChargeValidity() || !avouterpix->CheckTimeValidity())
-      if (!avouterpix->CalcReducedSigma())
-	  avouterpix->CalcFFactorMethod();
-
+  avinnerpix->CheckChargeValidity(bad);
+  avinnerpix->CheckTimeValidity(bad);
+
+  if (bad->IsCalibrationSignalOK())
+    if (!avinnerpix->CalcReducedSigma())
+      avinnerpix->CalcFFactorMethod();
+
+  bad = fCam->GetAverageInnerBadPix();
+
+  avouterpix->CheckChargeValidity(bad);
+  avouterpix->CheckTimeValidity(bad);
+
+  if (bad->IsCalibrationSignalOK())  
+    if (!avouterpix->CalcReducedSigma())
+      avouterpix->CalcFFactorMethod();
 
   if (!fBlindPixel->CheckChargeFitValidity())
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.cc	(revision 3434)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.cc	(revision 3435)
@@ -504,5 +504,5 @@
 // 4) Pixel has a charge sigma bigger than its Pedestal RMS
 // 
-Bool_t MCalibrationChargePix::CheckChargeValidity(MBadPixelsPix *bad)
+void MCalibrationChargePix::CheckChargeValidity(MBadPixelsPix *bad)
 {
  
@@ -511,8 +511,5 @@
       *fLog << warn << "WARNING: Fitted Charge is smaller than "
             << fChargeLimit << " Pedestal RMS in Pixel  " << fPixId << endl;
-      if (bad)
-        bad->SetChargeIsPedestal();
-      else 
-        return kFALSE;
+      bad->SetChargeIsPedestal();
     }
   
@@ -521,8 +518,5 @@
       *fLog << warn << "WARNING: Error of Fitted Charge is smaller than "
             << fChargeErrLimit << " in Pixel  " << fPixId << endl;
-      if (bad)
-        bad->SetChargeErrNotValid();
-      else 
-        return kFALSE;
+      bad->SetChargeErrNotValid();
     }
       
@@ -531,8 +525,5 @@
       *fLog << warn << "WARNING: Fitted Charge is smaller than "
             << fChargeRelErrLimit << "* its error in Pixel  " << fPixId << endl;
-      if (bad)
-        bad->SetChargeRelErrNotValid();
-      else 
-        return kFALSE;
+      bad->SetChargeRelErrNotValid();
     }
 
@@ -541,17 +532,7 @@
 	*fLog << warn << "WARNING: Sigma of Fitted Charge smaller than Pedestal RMS in Pixel  " 
               << fPixId << endl;
-        if (bad)
-          {
-            *fLog << err << "HERERERERE" << endl;            
-            bad->SetChargeSigmaNotValid();
-          }
-        else 
-          return kFALSE;
+        bad->SetChargeSigmaNotValid();
     }
 
-  if (bad->IsChargeSigmaNotValid())
-    *fLog << err << " HERE " << endl;
-
-  return kTRUE;
 }
 
@@ -561,5 +542,5 @@
 // The mean arrival time is at least 1.0 slices from the used edge slices 
 //
-Bool_t MCalibrationChargePix::CheckTimeValidity(MBadPixelsPix *bad)
+void MCalibrationChargePix::CheckTimeValidity(MBadPixelsPix *bad)
 {
   
@@ -570,8 +551,5 @@
     {
       *fLog << warn << "WARNING: Mean ArrivalTime in first extraction bin of the Pixel " << fPixId << endl;
-      if (bad)
-        bad->SetMeanTimeInFirstBin();
-      else 
-        return kFALSE;
+      bad->SetMeanTimeInFirstBin();
     }
   
@@ -579,11 +557,7 @@
     {
       *fLog << warn << "WARNING: Mean ArrivalTime in last extraction bin of the Pixel " << fPixId << endl;
-      if (bad)
-        bad->SetMeanTimeInLastBin();
-      else 
-        return kFALSE;
+      bad->SetMeanTimeInLastBin();
     }
   
-  return kTRUE;
 }
 
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h	(revision 3434)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h	(revision 3435)
@@ -283,6 +283,6 @@
   void  ApplyLoGainConversion();
 
-  Bool_t CheckChargeValidity ( MBadPixelsPix *bad=NULL );
-  Bool_t CheckTimeValidity   ( MBadPixelsPix *bad=NULL );
+  void CheckChargeValidity ( MBadPixelsPix *bad );
+  void CheckTimeValidity   ( MBadPixelsPix *bad );
   Bool_t CalcReducedSigma();
   Bool_t CalcFFactorMethod();
