Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 3425)
+++ trunk/MagicSoft/Mars/Changelog	(revision 3426)
@@ -19,4 +19,7 @@
 
   * mcalib/MCalibrationChargePix.[h,cc]
+    - include MBadPixelsCam
+
+  * mcalib/MCalibrationChargeCam.[h,cc]
     - include MBadPixelsCam
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 3425)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 3426)
@@ -131,4 +131,7 @@
 #include "MGeomPix.h"
 
+#include "MBadPixelsCam.h"
+#include "MBadPixelsPix.h"
+
 #include "MCalibrationChargePix.h"
 #include "MCalibrationChargeBlindPix.h"
@@ -152,4 +155,6 @@
     : fBlindPixel(NULL), 
       fPINDiode(NULL),
+      fGeomCam(NULL),
+      fBadPixels(NULL),
       fOffsets(NULL),
       fSlopes(NULL),
@@ -296,6 +301,6 @@
     {
       
-      if (pix->IsChargeValid() && !pix->IsExcluded() && !pix->IsOscillating()) 
-	{
+      if ((*fBadPixels)[pix->GetPixId()].IsCalibrationResultOK() && !pix->IsExcluded()) 
+	{                            
 
 	    *fLog << all << "Pix " << pix->GetPixId() 
@@ -320,5 +325,5 @@
       {
         
-        if (!pix->IsExcluded() && !pix->IsChargeValid())
+        if (!pix->IsExcluded() && !(*fBadPixels)[pix->GetPixId()].IsCalibrationResultOK())
           {
 
@@ -345,5 +350,5 @@
     {
 
-      if ( pix->IsOscillating()  && !pix->IsExcluded())
+      if ( (*fBadPixels)[pix->GetPixId()].IsCalibrationOscillating()  && !pix->IsExcluded())
         {
 
@@ -509,10 +514,10 @@
       break;
     case 4:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       val = (*this)[idx].GetChargeProb();
       break;
     case 5:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       if ((*this)[idx].GetRSigmaCharge() == -1.)
@@ -521,5 +526,5 @@
       break;
     case 6:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;    
       if ((*this)[idx].GetRSigmaCharge() == -1.)
@@ -528,5 +533,5 @@
       break;
     case 7:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       if ((*this)[idx].GetRSigmaCharge() == -1.)
@@ -535,5 +540,5 @@
       break;
     case 8:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       if ((*this)[idx].GetRSigmaCharge() == -1.)
@@ -551,90 +556,90 @@
       break;
     case 9:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsFFactorMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsFFactorMethodValid())
         return kFALSE;
       val = (*this)[idx].GetPheFFactorMethod();
       break;
     case 10:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsFFactorMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsFFactorMethodValid())
         return kFALSE;
       val = (*this)[idx].GetPheFFactorMethodErr();
       break;
     case 11:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsFFactorMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsFFactorMethodValid())
         return kFALSE;
       val = (*this)[idx].GetMeanConversionFFactorMethod();
       break;
     case 12:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsFFactorMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsFFactorMethodValid())
         return kFALSE;
       val = (*this)[idx].GetConversionFFactorMethodErr();
       break;
     case 13:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsFFactorMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsFFactorMethodValid())
         return kFALSE;
       val = (*this)[idx].GetTotalFFactorFFactorMethod();
       break;
     case 14:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsFFactorMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsFFactorMethodValid())
         return kFALSE;
       val = (*this)[idx].GetTotalFFactorErrFFactorMethod();
       break;
     case 15:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsBlindPixelMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsBlindPixelMethodValid())
         return kFALSE;
       val = fBlindPixel->GetMeanFluxInsidePlexiglass()*area;
       break;
     case 16:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsBlindPixelMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsBlindPixelMethodValid())
         return kFALSE;
       val = fBlindPixel->GetMeanFluxErrInsidePlexiglass()*area;
       break;
     case 17:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsBlindPixelMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsBlindPixelMethodValid())
         return kFALSE;
       val = (*this)[idx].GetMeanConversionBlindPixelMethod();
       break;
     case 18:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsBlindPixelMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsBlindPixelMethodValid())
         return kFALSE;
       val = (*this)[idx].GetConversionBlindPixelMethodErr();
       break;
     case 19:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsBlindPixelMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsBlindPixelMethodValid())
         return kFALSE;
       val = (*this)[idx].GetTotalFFactorBlindPixelMethod();
       break;
     case 20:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsBlindPixelMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsBlindPixelMethodValid())
         return kFALSE;
       val = (*this)[idx].GetTotalFFactorErrBlindPixelMethod();
       break;
     case 21:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsPINDiodeMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsPINDiodeMethodValid())
         return kFALSE;
       val = fPINDiode->GetMeanFluxOutsidePlexiglass()*area;
       break;
     case 22:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsPINDiodeMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsPINDiodeMethodValid())
         return kFALSE;
       val = fPINDiode->GetMeanFluxErrOutsidePlexiglass()*area;
       break;
     case 23:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsPINDiodeMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsPINDiodeMethodValid())
         return kFALSE;
       val = (*this)[idx].GetMeanConversionPINDiodeMethod();
       break;
     case 24:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsPINDiodeMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsPINDiodeMethodValid())
         return kFALSE;
       val = (*this)[idx].GetConversionPINDiodeMethodErr();
       break;
     case 25:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsPINDiodeMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsPINDiodeMethodValid())
         return kFALSE;
       val = (*this)[idx].GetTotalFFactorPINDiodeMethod();
       break;
     case 26:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid() || !(*this)[idx].IsPINDiodeMethodValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK() || !(*this)[idx].IsPINDiodeMethodValid())
         return kFALSE;
       val = (*this)[idx].GetTotalFFactorErrPINDiodeMethod();
@@ -657,5 +662,5 @@
       if ((*this)[idx].IsExcluded())
         return kFALSE;
-      if (!(*this)[idx].IsChargeValid())
+      if (!(*fBadPixels)[idx].IsCalibrationSignalOK())
         val = 1;
       else
@@ -665,5 +670,5 @@
       if ((*this)[idx].IsExcluded())
         return kFALSE;
-      if ((*this)[idx].IsHiGainOscillating())
+      if ((*fBadPixels)[idx].IsCalibrationOscillating())
         val = 1;
       else
@@ -673,5 +678,5 @@
       if ((*this)[idx].IsExcluded())
         return kFALSE;
-      if ((*this)[idx].IsLoGainOscillating())
+      if ((*fBadPixels)[idx].IsCalibrationOscillating())
         val = 1;
       else
@@ -689,5 +694,5 @@
       break;
     case 34:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       if ((*this)[idx].IsHiGainSaturation())
@@ -741,10 +746,10 @@
       break;
     case 42:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       val = (*this)[idx].GetAbsTimeMean();
       break;
     case 43:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsChargeValid())
+      if ((*this)[idx].IsExcluded() || !(*fBadPixels)[idx].IsCalibrationSignalOK())
         return kFALSE;
       val = (*this)[idx].GetAbsTimeRms();
@@ -781,5 +786,5 @@
     {
 
-      if(pix->IsChargeValid())
+      if((*fBadPixels)[pix->GetPixId()].IsCalibrationResultOK())
         {
           
@@ -824,5 +829,5 @@
     {
 
-      if (pix->IsChargeValid())
+      if((*fBadPixels)[pix->GetPixId()].IsCalibrationResultOK())
         {
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h	(revision 3425)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h	(revision 3426)
@@ -16,4 +16,5 @@
 class MCalibrationChargePINDiode;
 class MCalibrationChargePix;
+class MBadPixelsCam;
 class MCalibrationChargeCam : public MParContainer, public MCamEvent
 {
@@ -21,17 +22,18 @@
   
   Int_t fNumPixels;
-  TClonesArray *fPixels;                                        //-> Array of MCalibrationPix with fit results
-  MCalibrationChargePix *fAverageInnerPix;                      //-> Average Pixel of all events
-  MCalibrationChargePix *fAverageOuterPix;                      //-> Average Pixel of all events
+  TClonesArray *fPixels;                         //-> Array of MCalibrationPix with fit results
+  MCalibrationChargePix *fAverageInnerPix;       //-> Average Pixel of all events
+  MCalibrationChargePix *fAverageOuterPix;       //-> Average Pixel of all events
   
-  const MCalibrationChargeBlindPix *fBlindPixel;                //! Pointer to the Blind Pixel with fit results
-  const MCalibrationChargePINDiode *fPINDiode;                  //! Pointer to the PIN Diode with fit results
+  const MCalibrationChargeBlindPix *fBlindPixel; //! Pointer to the Blind Pixel with fit results
+  const MCalibrationChargePINDiode *fPINDiode;   //! Pointer to the PIN Diode with fit results
 
-  const MGeomCam             *fGeomCam;                         //! Need geom cam to know which pixel in inner or outer
+  const MGeomCam                   *fGeomCam;    //! Need geom cam to know which pixel in inner or outer
+  const MBadPixelsCam              *fBadPixels;  //! Bad Pixels cam, only for reading
 
-  TH1D* fOffsets;                                               //! 
-  TH1D* fSlopes;                                                //! 
+  TH1D* fOffsets;                                //! 
+  TH1D* fSlopes;                                 //! 
   
-  TH2D* fOffvsSlope;                                            //! 
+  TH2D* fOffvsSlope;                             //! 
 
   UInt_t  fNumExcludedPixels;
@@ -52,4 +54,5 @@
   void SetNumPixelsExcluded(  const UInt_t n )            {  fNumExcludedPixels = n; }
   void SetGeomCam(  const MGeomCam *geom)                 {  fGeomCam = geom;        }
+  void SetBadPixelsCam(  const MBadPixelsCam *bad)                 {  fBadPixels = bad;        }
 
   void SetPINDiode  ( const MCalibrationChargePINDiode *d ) {  fPINDiode   = d;      }
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h	(revision 3425)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h	(revision 3426)
@@ -122,6 +122,4 @@
           kChargeValid, kTimeFitValid,
           kHiGainFitted, kLoGainFitted, 
-	  kHiGainOscillating, kLoGainOscillating,
-	  kMeanTimeInFirstBin, kMeanTimeInLastBin, 
           kBlindPixelMethodValid, kFFactorMethodValid, 
 	  kPINDiodeMethodValid, kCombinedMethodValid };
@@ -152,7 +150,4 @@
   void SetConvFFactorRelErrLimit( const Float_t f=fgConvFFactorRelErrLimit ) { fConvFFactorRelErrLimit = f; }
 
-  void SetMeanTimeInFirstBin( const Bool_t b = kTRUE );
-  void SetMeanTimeInLastBin ( const Bool_t b = kTRUE );
-
   // Charges
   void SetHiGainMeanCharge      ( const Float_t f ) { fHiGainMeanCharge      = f; }
@@ -192,9 +187,6 @@
   void SetLoGainSaturation    (  const Bool_t b = kTRUE );
   void SetExcluded            (  const Bool_t b = kTRUE );
-  void SetChargeValid         (  const Bool_t b = kTRUE );
   void SetHiGainFitted        (  const Bool_t b = kTRUE );
   void SetLoGainFitted        (  const Bool_t b = kTRUE );
-  void SetHiGainOscillating   (  const Bool_t b = kTRUE );
-  void SetLoGainOscillating   (  const Bool_t b = kTRUE );
   void SetBlindPixelMethodValid( const Bool_t b = kTRUE );
   void SetFFactorMethodValid  (  const Bool_t b = kTRUE );
@@ -278,11 +270,7 @@
   Bool_t IsHiGainSaturation()                  const;
   Bool_t IsLoGainSaturation()                  const;
-  Bool_t IsChargeValid()                       const;
   Bool_t IsHiGainFitted()                      const;
   Bool_t IsLoGainFitted()                      const;
   Bool_t IsFitted()                            const;
-  Bool_t IsHiGainOscillating()                 const;
-  Bool_t IsLoGainOscillating()                 const;
-  Bool_t IsOscillating()                       const;
   Bool_t IsBlindPixelMethodValid()             const;
   Bool_t IsPINDiodeMethodValid()               const;
@@ -290,7 +278,4 @@
   Bool_t IsCombinedMethodValid()               const;
 
-  Bool_t IsMeanTimeInFirstBin()                const;
-  Bool_t IsMeanTimeInLastBin()                 const;
-
   void   DefinePixId(Int_t i);
 
@@ -298,6 +283,6 @@
   void  ApplyLoGainConversion();
 
-  void CheckChargeValidity ( MBadPixelsPix *bad=NULL );
-  void CheckTimeValidity   ( MBadPixelsPix *bad=NULL );
+  Bool_t CheckChargeValidity ( MBadPixelsPix *bad=NULL );
+  Bool_t CheckTimeValidity   ( MBadPixelsPix *bad=NULL );
   Bool_t CalcReducedSigma();
   Bool_t CalcFFactorMethod();
