Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4911)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4912)
@@ -74,7 +74,10 @@
 
    * mcalib/MCalibrationChargeCalc.[h,cc]
+     - able to recognize an *Intensity*Cam if in MParList
+     - set pulser pattern accordingly in Process from MRawEvtHeader     
+     - add switches to perform types of checks or not
+
    * mcalib/MCalibrationRelTimeCalc.[h,cc]
      - able to recognize an *Intensity*Cam if in MParList
-     - set pulser pattern accordingly in Process from MRawEvtHeader     
 
    * mjobs/MJCalibration.[h,cc] 
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 4911)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 4912)
@@ -257,4 +257,6 @@
 // - flag debug         to kFALSE
 //
+// Sets all checks
+//
 // Calls:
 // - Clear()
@@ -282,4 +284,9 @@
   SetOutputFile        ();
   SetDebug       ( kFALSE );
+
+  SetCheckDeadPixels       ();
+  SetCheckExtractionWindow ();
+  SetCheckHistOverflow     ();
+  SetCheckDeviatingBehavior();
 
   Clear();
@@ -1015,28 +1022,40 @@
       MCalibrationPix  &pix    = fIntensCam ? (*fIntensCam)[i] : (*fCam)[i];
 
-      if (bad.IsUncalibrated( MBadPixelsPix::kChargeIsPedestal))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun   );
+      if (IsCheckDeadPixels())
+        {
+          if (bad.IsUncalibrated( MBadPixelsPix::kChargeIsPedestal))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun   );
  
-      if (bad.IsUncalibrated( MBadPixelsPix::kChargeErrNotValid ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
-
-      if (bad.IsUncalibrated( MBadPixelsPix::kChargeRelErrNotValid ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
- 
-      if (bad.IsUncalibrated( MBadPixelsPix::kMeanTimeInFirstBin ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
-
-      if (bad.IsUncalibrated( MBadPixelsPix::kMeanTimeInLast2Bins ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
-
-      if (bad.IsUncalibrated( MBadPixelsPix::kDeviatingNumPhes ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
-
-      if (bad.IsUncalibrated( MBadPixelsPix::kHiGainOverFlow   ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
-
-      if (bad.IsUncalibrated( MBadPixelsPix::kLoGainOverFlow   ))
-        bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
-
+          if (bad.IsUncalibrated( MBadPixelsPix::kChargeErrNotValid ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+
+          if (bad.IsUncalibrated( MBadPixelsPix::kChargeRelErrNotValid ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+        }
+      
+      if (IsCheckExtractionWindow())
+        {
+          if (bad.IsUncalibrated( MBadPixelsPix::kMeanTimeInFirstBin ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+          
+          if (bad.IsUncalibrated( MBadPixelsPix::kMeanTimeInLast2Bins ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+        }
+      
+      if (IsCheckDeviatingBehavior())
+        {
+          if (bad.IsUncalibrated( MBadPixelsPix::kDeviatingNumPhes ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+        }
+      
+      if (IsCheckHistOverflow())
+        {
+          if (bad.IsUncalibrated( MBadPixelsPix::kHiGainOverFlow   ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+          
+          if (bad.IsUncalibrated( MBadPixelsPix::kLoGainOverFlow   ))
+            bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun    );
+        }
+      
       if (bad.IsUnsuitable(   MBadPixelsPix::kUnsuitableRun    ))
         pix.SetExcluded();
@@ -1249,6 +1268,9 @@
                 << Form("[%7.2f,%7.2f] pixel%4i",lowlim[aidx],upplim[aidx],i) << endl;
           bad.SetUncalibrated( MBadPixelsPix::kDeviatingNumPhes );
-          bad.SetUnsuitable  ( MBadPixelsPix::kUnsuitableRun    );
-          pix.SetFFactorMethodValid(kFALSE);
+          if (IsCheckDeviatingBehavior())
+            {
+              bad.SetUnsuitable  ( MBadPixelsPix::kUnsuitableRun    );
+              pix.SetFFactorMethodValid(kFALSE);
+            }
           continue;
         }
@@ -1385,5 +1407,6 @@
                     << endl;
               bad.SetUncalibrated( MBadPixelsPix::kDeviatingNumPhes );
-              bad.SetUnsuitable  ( MBadPixelsPix::kUnsuitableRun    );
+              if (IsCheckDeviatingBehavior())
+                bad.SetUnsuitable  ( MBadPixelsPix::kUnsuitableRun    );
             }
         }
@@ -1709,5 +1732,6 @@
         {
           (*fBadPixels)[i].SetUncalibrated( MBadPixelsPix::kDeviatingFFactor );
-          (*fBadPixels)[i].SetUnsuitable  ( MBadPixelsPix::kUnreliableRun    );
+          if (IsCheckDeviatingBehavior())
+            (*fBadPixels)[i].SetUnsuitable  ( MBadPixelsPix::kUnreliableRun    );
           continue;
         }
@@ -1815,5 +1839,6 @@
 
           bad.SetUncalibrated( MBadPixelsPix::kDeviatingFFactor );
-          bad.SetUnsuitable  ( MBadPixelsPix::kUnsuitableRun    );
+          if (IsCheckDeviatingBehavior())
+            bad.SetUnsuitable  ( MBadPixelsPix::kUnsuitableRun    );
         }
     }
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 4911)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 4912)
@@ -94,4 +94,14 @@
 
   // enums
+  enum  Check_t
+    {
+      kCheckDeadPixels,
+      kCheckExtractionWindow,
+      kCheckHistOverflow,
+      kCheckDeviatingBehavior
+    };                                         // Possible Checks
+
+  Byte_t fCheckFlags;                          // Bit-field to hold the possible check flags
+  
   enum  { kDebug, kPheFitOK, kFFactorFitOK, kBlindPixelFitOK, kBlindPixelPedFitOK, kPINDiodeFitOK };
 
@@ -113,4 +123,5 @@
   void   PrintUncalibrated( MBadPixelsPix::UncalibratedType_t typ, const char *text) const;
 
+  // Global fit results
   void   SetPheFitOK          ( const Int_t aidx, const Bool_t b=kTRUE ) {
     b ? SETBIT(fResultFlags[aidx], kPheFitOK) 
@@ -129,4 +140,9 @@
       : CLRBIT(fPINDiodeFlags[idx], kPINDiodeFitOK); }
 
+  Bool_t IsCheckDeadPixels       () const { return TESTBIT(fCheckFlags,kCheckDeadPixels);        }
+  Bool_t IsCheckExtractionWindow () const { return TESTBIT(fCheckFlags,kCheckExtractionWindow);  }
+  Bool_t IsCheckHistOverflow     () const { return TESTBIT(fCheckFlags,kCheckHistOverflow);      }
+  Bool_t IsCheckDeviatingBehavior() const { return TESTBIT(fCheckFlags,kCheckDeviatingBehavior); }
+  
   Int_t  PreProcess (MParList *pList);
   Bool_t ReInit     (MParList *pList); 
@@ -156,4 +172,17 @@
   void SetPulserColor       ( const MCalibrationCam::PulserColor_t col ) { fPulserColor       = col;   }
 
+  // Checks
+  void SetCheckDeadPixels( const Bool_t b=kTRUE ) {
+    b ? SETBIT(fCheckFlags,kCheckDeadPixels)
+      : CLRBIT(fCheckFlags,kCheckDeadPixels); }
+  void SetCheckExtractionWindow( const Bool_t b=kTRUE ) {
+    b ? SETBIT(fCheckFlags,kCheckExtractionWindow)
+      : CLRBIT(fCheckFlags,kCheckExtractionWindow); }
+  void SetCheckHistOverflow( const Bool_t b=kTRUE ) {
+    b ? SETBIT(fCheckFlags,kCheckHistOverflow)
+      : CLRBIT(fCheckFlags,kCheckHistOverflow); }
+  void SetCheckDeviatingBehavior( const Bool_t b=kTRUE ) {
+    b ? SETBIT(fCheckFlags,kCheckDeviatingBehavior)
+      : CLRBIT(fCheckFlags,kCheckDeviatingBehavior); }
 
   ClassDef(MCalibrationChargeCalc, 1)   // Task calculating Calibration Containers and Quantum Efficiencies
