Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.cc	(revision 2941)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.cc	(revision 2943)
@@ -120,9 +120,5 @@
 MCalibrationCalc::MCalibrationCalc(const char *name, const char *title)
     : fPedestals(NULL), fCalibrations(NULL), fSignals(NULL),
-      fRawEvt(NULL), fRunHeader(NULL), fArrivalTime(NULL), fEvtTime(NULL),
-      fEvents(0), fCosmics(0),
-      fNumHiGainSamples(0), fNumLoGainSamples(0), fConversionHiLo(0.),
-      fNumExcludedPixels(0),
-      fColor(kEBlue)
+      fRawEvt(NULL), fRunHeader(NULL), fArrivalTime(NULL), fEvtTime(NULL)
 {
 
@@ -135,11 +131,28 @@
     AddToBranchList("MRawEvtData.fLoGainFadcSamples");
 
+    Clear();
+}
+
+void MCalibrationCalc::Clear(const Option_t *o)
+{
+  
     SETBIT(fFlags, kUseTimes);
     SETBIT(fFlags, kUseBlindPixelFit);
-    SETBIT(fFlags, kUsePinDiodeFit);
     SETBIT(fFlags, kUseCosmicsRejection);
     SETBIT(fFlags, kUseQualityChecks);
 
-}
+    // As long as we don't have the PIN Diode:
+    CLRBIT(fFlags, kUsePinDiodeFit);
+
+    fEvents = 0;
+    fCosmics = 0;
+    fNumHiGainSamples = 0;
+    fNumLoGainSamples = 0;
+    fConversionHiLo = 0;
+    fNumExcludedPixels = 0;
+    
+    fColor = kECT1;
+}
+
 
 MCalibrationBlindPix *MCalibrationCalc::GetBlindPixel() const
@@ -269,6 +282,4 @@
     UInt_t npixels = cam->GetNumPixels();
 
-    fCalibrations->InitSize(npixels);    
-    
     for (UInt_t i=0; i<npixels; i++)
       {
@@ -570,9 +581,10 @@
       if (!blindpixel.FitCharge())
         {
-          *fLog << err << dbginf << "Could not fit the blind pixel! " << endl;
-          blindpixel.DrawClone();
-          return kFALSE;
+          *fLog << warn << "Could not fit the blind pixel! " << endl;
+          *fLog << warn << "Setting bit kBlindPixelMethodValid to FALSE in MCalibrationCam" << endl;
+          fCalibrations->SetBlindPixelMethodValid(kFALSE);
         }
 
+      fCalibrations->SetBlindPixelMethodValid(kTRUE);
       blindpixel.DrawClone();
     }
@@ -622,5 +634,5 @@
     }
 
-  if (TESTBIT(fFlags,kUseBlindPixelFit))
+  if (TESTBIT(fFlags,kUseBlindPixelFit) && fCalibrations->IsBlindPixelMethodValid())
     {
       
@@ -631,9 +643,25 @@
           *fLog << err 
                 << "You can try to calibrate using the MCalibrationCalc::SkipBlindPixelFit()" << endl;
-          return kFALSE;
+          fCalibrations->SetBlindPixelMethodValid(kFALSE);
         }
     }
   else
-    *fLog << inf << GetDescriptor() << ": Skipping Blind Pixel Fit " << endl;
+    *fLog << inf << GetDescriptor() << ": Skipping Blind Pixel Calibration! " << endl;
+
+
+  if (TESTBIT(fFlags,kUsePinDiodeFit) && fCalibrations->IsPINDiodeMethodValid())
+    {
+      
+      if (!fCalibrations->CalcNumPhotInsidePlexiglass())
+        {
+          *fLog << err 
+                << "Could not calculate the number of photons from the blind pixel " << endl;
+          *fLog << err 
+                << "You can try to calibrate using the MCalibrationCalc::SkipPINDiodeFit()" << endl;
+          fCalibrations->SetPINDiodeMethodValid(kFALSE);
+        }
+    }
+  else
+    *fLog << inf << GetDescriptor() << ": Skipping PIN Diode Calibration! " << endl;
 
   fCalibrations->SetReadyToSave();
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.h	(revision 2941)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCalc.h	(revision 2943)
@@ -62,5 +62,8 @@
   TString fExcludedPixelsFile;
   UInt_t  fNumExcludedPixels;
-  
+
+  enum  { kUseTimes, kUseBlindPixelFit, kUsePinDiodeFit,
+          kUseCosmicsRejection, kUseQualityChecks };
+
 public:
   
@@ -80,11 +83,6 @@
   MCalibrationCalc(const char *name=NULL, const char *title=NULL);
 
-private:
-
-  enum  { kUseTimes, kUseBlindPixelFit, kUsePinDiodeFit,
-          kUseCosmicsRejection, kUseQualityChecks };
-
-public:
-
+  void Clear(const Option_t *o="");
+  
   // Skipping parts of the work
   void SkipTime(Bool_t b=kTRUE)
@@ -98,4 +96,5 @@
   void SkipQualityChecks(Bool_t b=kTRUE)
       {b ? CLRBIT(fFlags, kUseQualityChecks) : SETBIT(fFlags, kUseQualityChecks);}
+
 
   // Setters 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 2941)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 2943)
@@ -192,4 +192,36 @@
   return;
 }
+
+void MCalibrationCam::SetBlindPixelMethodValid(const Bool_t b)
+{
+
+  if (b) 
+    SETBIT(fFlags, kBlindPixelMethodValid); 
+  else    
+    CLRBIT(fFlags, kBlindPixelMethodValid); 
+  
+}
+
+void MCalibrationCam::SetPINDiodeMethodValid(const Bool_t b)
+{
+
+  if (b) 
+    SETBIT(fFlags, kPINDiodeMethodValid); 
+  else    
+    CLRBIT(fFlags, kPINDiodeMethodValid); 
+  
+  
+}
+
+Bool_t  MCalibrationCam::IsBlindPixelMethodValid()   const
+{
+  return TESTBIT(fFlags,kBlindPixelMethodValid);
+}
+
+Bool_t  MCalibrationCam::IsPINDiodeMethodValid() const
+{
+  return TESTBIT(fFlags,kPINDiodeMethodValid);  
+}
+
 
 // --------------------------------------------------------------------------
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 2941)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 2943)
@@ -39,4 +39,8 @@
   UInt_t fNumExcludedPixels;
 
+  Byte_t fFlags;
+
+  enum  { kBlindPixelMethodValid, kPINDiodeMethodValid  };
+  
 public:
   
@@ -58,5 +62,7 @@
   void SetColor(const CalibrationColor_t color)       {  fColor = color; }
   void SetNumPixelsExcluded(const UInt_t n)               {  fNumExcludedPixels = n;    }
-    
+  void SetBlindPixelMethodValid(const Bool_t b = kTRUE);
+  void SetPINDiodeMethodValid(const Bool_t b = kTRUE);  
+  
   // Getters
   Int_t GetSize()                        const;
@@ -75,4 +81,7 @@
   Bool_t IsPixelUsed(Int_t idx)      const;
   Bool_t IsPixelFitted(Int_t idx)    const;
+
+  Bool_t IsBlindPixelMethodValid()   const;
+  Bool_t IsPINDiodeMethodValid()     const;  
 
   // Others
