Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeBlindPix.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeBlindPix.cc	(revision 4671)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeBlindPix.cc	(revision 4672)
@@ -452,5 +452,5 @@
 
   *fLog << inf << GetDescriptor() 
-        << ": Photon flux [ph/mm^2] inside Plexiglass: " 
+        << ": Blind Pixel Nr. " << fPixId << ": Photon flux [ph/mm^2] inside Plexiglass: " 
         << Form("%5.3f%s%5.3f",fFluxInsidePlexiglass," +- ",GetFluxInsidePlexiglassErr()) << endl;
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 4671)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 4672)
@@ -49,4 +49,5 @@
 //                  - FinalizeBadPixels()
 //                  - FinalizeBlindPixel()
+//                  - FinalizeBlindCam()
 //                  - FinalizePINDiode()
 //                  - FinalizeFFactorQECam()
@@ -563,4 +564,5 @@
 //
 // Call FinalizeBlindPixel() 
+// Call FinalizeBlindCam() 
 // Call FinalizePINDiode()
 //
@@ -684,8 +686,14 @@
   // Finalize Blind Pixel
   //
-  if (FinalizeBlindPixel())
-    fQECam->SetBlindPixelMethodValid(kTRUE);
-  else
-    fQECam->SetBlindPixelMethodValid(kFALSE); 
+  if (fBlindPixel)
+    if (FinalizeBlindPixel())
+      fQECam->SetBlindPixelMethodValid(kTRUE);
+    else
+      fQECam->SetBlindPixelMethodValid(kFALSE); 
+  else 
+    if (FinalizeBlindCam())
+      fQECam->SetBlindPixelMethodValid(kTRUE);
+    else
+      fQECam->SetBlindPixelMethodValid(kFALSE); 
 
   // 
@@ -1171,5 +1179,5 @@
       
       *fLog << inf << GetDescriptor() 
-            << "Average total number phes in area idx " << aidx << ": " 
+            << ": Average total number phes in area idx " << aidx << ": " 
             << Form("%7.2f%s%6.2f",areaphes[aidx]," +- ",TMath::Sqrt(areaweights[aidx])) << endl;
                     
@@ -1214,5 +1222,5 @@
 
       *fLog << inf << GetDescriptor() 
-            << "Average number phes per area in sector " << sector << ": " 
+            << ": Average number phes per area in sector " << sector << ": " 
             << Form("%5.2f+-%4.2f  [phe/mm^2]",sectorphes[sector],TMath::Sqrt(sectorweights[sector])) 
             << endl;
@@ -1274,4 +1282,86 @@
     }
   
+  return kTRUE;
+}
+
+// ------------------------------------------------------------------------
+//
+// Returns kFALSE if pointer to MCalibrationChargeBlindCam is NULL
+//
+// The check returns kFALSE if:
+//
+// 1) fLambda and fLambdaCheck are separated relatively to each other by more than fLambdaCheckLimit
+// 2) BlindPixel has an fLambdaErr greater than fLambdaErrLimit
+// 
+// Calls:
+// - MCalibrationChargeBlindPix::CalcFluxInsidePlexiglass()
+//
+Bool_t MCalibrationChargeCalc::FinalizeBlindCam()
+{
+
+  if (!fBlindCam)
+    return kFALSE;  
+
+  Float_t flux    = 0.;
+  Float_t fluxvar = 0.;  
+  Int_t   nvalid  = 0;
+
+  for (UInt_t i=0; i<fBlindCam->GetNumBlindPixels(); i++)
+    {
+      
+      MCalibrationChargeBlindPix &blindpix = (*fBlindCam)[i];
+
+      if (!blindpix.IsValid())
+        continue;
+      
+      const Float_t lambda      = blindpix.GetLambda();
+      const Float_t lambdaerr   = blindpix.GetLambdaErr();
+      const Float_t lambdacheck = blindpix.GetLambdaCheck();
+
+      if (2.*(lambdacheck-lambda)/(lambdacheck+lambda) > fLambdaCheckLimit)
+        {
+          *fLog << warn << GetDescriptor() 
+                << Form("%s%4.2f%s%4.2f%s%4.2f%s%2i",": Lambda: ",lambda," and Lambda-Check: ",
+                    lambdacheck," differ by more than ",fLambdaCheckLimit," in the Blind Pixel Nr.",i)
+                << endl;
+          blindpix.SetValid(kFALSE);
+          continue;
+        }
+      
+      if (lambdaerr > fLambdaErrLimit) 
+        {
+          *fLog << warn << GetDescriptor() 
+                << Form("%s%4.2f%s%4.2f%s%2i",": Error of Fitted Lambda: ",lambdaerr," is greater than ",
+                        fLambdaErrLimit," in Blind Pixel Nr.",i) << endl;
+          blindpix.SetValid(kFALSE);
+          continue;
+        }
+      
+      if (!blindpix.CalcFluxInsidePlexiglass())
+        {
+          *fLog << warn << "Could not calculate the flux of photons from Blind Pixel Nr." << i << endl;
+          blindpix.SetValid(kFALSE);
+          continue;
+        }
+      
+      nvalid++;
+      const Float_t weight = 1./ blindpix.GetFluxInsidePlexiglassErr() / blindpix.GetFluxInsidePlexiglassErr();
+      flux    += weight * blindpix.GetFluxInsidePlexiglass();
+      fluxvar += weight;
+    }
+
+  if (!nvalid)
+    return kFALSE;
+  
+  flux    /= fluxvar;
+  fluxvar /= 1./fluxvar;
+
+  const Float_t photons = flux * (*fGeom)[0].GetA() / fQECam->GetPlexiglassQE();
+  fCam->SetNumPhotonsBlindPixelMethod(photons);
+  
+  const Float_t photrelvar = fluxvar / flux / flux + fQECam->GetPlexiglassQERelVar();
+  if (photrelvar > 0.)
+    fCam->SetNumPhotonsBlindPixelMethodErr(TMath::Sqrt( photrelvar * photons * photons));  
+
   return kTRUE;
 }
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 4671)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 4672)
@@ -98,4 +98,5 @@
   Bool_t FinalizePINDiode        ();
   Bool_t FinalizeBlindPixel      ();
+  Bool_t FinalizeBlindCam        ();  
   Bool_t FinalizeFFactorMethod   ();
   void   FinalizeBadPixels       ();
