Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 5023)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 5024)
@@ -204,4 +204,6 @@
 
 #include "MCalibrationIntensityChargeCam.h"
+#include "MCalibrationIntensityQECam.h"
+#include "MCalibrationIntensityBlindCam.h"
 
 #include "MCalibrationChargeCam.h"
@@ -216,4 +218,5 @@
 #include "MExtractedSignalPINDiode.h"
 
+#include "MBadPixelsIntensityCam.h"
 #include "MBadPixelsCam.h"
 
@@ -263,5 +266,6 @@
 //
 MCalibrationChargeCalc::MCalibrationChargeCalc(const char *name, const char *title)
-    : fQECam(NULL), fGeom(NULL), fSignal(NULL), fHeader(NULL)
+    : 
+      fGeom(NULL), fSignal(NULL), fHeader(NULL)
 {
         
@@ -314,10 +318,14 @@
     fNumInnerFFactorMethodUsed = 0;
 
-    fBadPixels  = NULL;
-    fCam        = NULL;
-    fIntensCam  = NULL;
-    fBlindCam   = NULL;
-    fPINDiode   = NULL;
-    fPedestals  = NULL;
+    fIntensBad   = NULL;
+    fBadPixels   = NULL;
+    fIntensCam   = NULL;
+    fCam         = NULL;
+    fIntensQE    = NULL;
+    fQECam       = NULL;
+    fIntensBlind = NULL;
+    fBlindCam    = NULL;
+    fPINDiode    = NULL;
+    fPedestals   = NULL;
 
     fPulserPattern = 0;
@@ -367,21 +375,4 @@
     }
   
-  // 
-  // Containers that are created in case that they are not there.
-  //
-  fQECam = (MCalibrationQECam*)pList->FindCreateObj("MCalibrationQECam");
-  if (!fQECam)
-    {
-      *fLog << err << "Cannot find nor create MCalibrationQECam... aborting" << endl;
-      return kFALSE;
-    }
-
-  fBadPixels = (MBadPixelsCam*)pList->FindCreateObj("MBadPixelsCam");
-  if (!fBadPixels)
-    {
-      *fLog << err << "Could not find or create MBadPixelsCam ... aborting." << endl;
-      return kFALSE;
-    }
-
   fHeader = (MRawEvtHeader*)pList->FindObject("MRawEvtHeader");
   if (!fHeader)
@@ -452,16 +443,49 @@
     }
   
+  fIntensQE = (MCalibrationIntensityQECam*)pList->FindObject(AddSerialNumber("MCalibrationIntensityQECam"));
+  if (fIntensQE)
+    *fLog << inf << "Found MCalibrationIntensityQECam ... " << endl;
+  else
+    {
+      fQECam = (MCalibrationQECam*)pList->FindObject(AddSerialNumber("MCalibrationQECam"));
+      if (!fQECam)
+        {
+          *fLog << err << "Cannot find MCalibrationQECam ... abort." << endl;
+          *fLog << err << "Maybe you forget to call an MFillH for the MHCalibrationQECam before..." << endl;
+          return kFALSE;
+        }
+    }
+  
+  fIntensBlind = (MCalibrationIntensityBlindCam*)pList->FindObject(AddSerialNumber("MCalibrationIntensityBlindCam"));
+  if (fIntensBlind)
+    *fLog << inf << "Found MCalibrationIntensityBlindCam ... " << endl;
+  else
+    {
+      fBlindCam = (MCalibrationBlindCam*)pList->FindObject(AddSerialNumber("MCalibrationBlindCam"));
+      if (!fBlindCam)
+        {
+          *fLog << endl;
+          *fLog << warn << GetDescriptor() 
+                << ": No MCalibrationBlindCam found... no Blind Pixel method! " << endl;
+          return kFALSE;
+        }
+    }
+  
+  fIntensBad = (MBadPixelsIntensityCam*)pList->FindObject(AddSerialNumber("MBadPixelsIntensityCam"));
+  if (fIntensBad)
+    *fLog << inf << "Found MBadPixelsIntensityCam ... " << endl;
+  else
+    {
+      fBadPixels = (MBadPixelsCam*)pList->FindObject(AddSerialNumber("MBadPixelsCam"));
+      if (!fBadPixels)
+        {
+          *fLog << err << "Cannot find MBadPixelsCam ... abort." << endl;
+          return kFALSE;
+        }
+    }
+  
   // 
   // Optional Containers 
   //
-  fBlindCam = (MCalibrationBlindCam*)pList->FindObject("MCalibrationBlindCam");
-  if (!fBlindCam)
-    {
-      *fLog << endl;
-      *fLog << warn << GetDescriptor() 
-            << ": MCalibrationBlindPix nor MCalibrationBlindCam "
-	    << " found... no Blind Pixel method! " << endl;
-    }
-
   fPINDiode = (MCalibrationChargePINDiode*)pList->FindObject("MCalibrationChargePINDiode");
   if (!fPINDiode)
@@ -486,6 +510,10 @@
         ? (MCalibrationChargePix&)(*fIntensCam)[i]
         : (MCalibrationChargePix&)(*fCam)      [i];
-      MCalibrationQEPix     &pqe = (MCalibrationQEPix&)    (*fQECam)[i];
-      MBadPixelsPix         &bad = (*fBadPixels)[i];
+      MCalibrationQEPix     &pqe = fIntensQE 
+        ? (MCalibrationQEPix&)    (*fIntensQE)[i]
+        : (MCalibrationQEPix&)    (*fQECam)[i];
+      MBadPixelsPix         &bad = fIntensBad 
+        ? (*fIntensBad)[i]
+        : (*fBadPixels)[i];
       
       pix.SetPixId(i);
@@ -598,5 +626,7 @@
     fCam->SetPulserColor( fPulserColor );
   
-  if (fBlindCam)
+  if (fIntensBlind)
+    fIntensBlind->SetPulserColor( fPulserColor );
+  else if (fBlindCam)
     fBlindCam->SetPulserColor( fPulserColor );
   
@@ -671,5 +701,7 @@
 
       MPedestalPix  &ped = (*fPedestals)[pixid];
-      MBadPixelsPix &bad = (*fBadPixels)[pixid];
+      MBadPixelsPix &bad = fIntensBad 
+        ? (*fIntensBad)[pixid]
+        : (*fBadPixels)[pixid];
       const Int_t aidx    = (*fGeom)[pixid].GetAidx();
 
@@ -750,16 +782,16 @@
   // Finalize Blind Pixel
   //
-  if (FinalizeBlindCam())
-    fQECam->SetBlindPixelMethodValid(kTRUE);
+  if (fIntensQE)
+    fIntensQE->SetBlindPixelMethodValid(FinalizeBlindCam());
   else
-    fQECam->SetBlindPixelMethodValid(kFALSE); 
+    fQECam->SetBlindPixelMethodValid(FinalizeBlindCam()); 
 
   // 
   // Finalize PIN Diode
   //
-  if (FinalizePINDiode())
-    fQECam->SetPINDiodeMethodValid(kTRUE);
+  if (fIntensQE)
+    fIntensQE->SetBlindPixelMethodValid(FinalizePINDiode());
   else
-    fQECam->SetPINDiodeMethodValid(kFALSE); 
+    fQECam->SetBlindPixelMethodValid(FinalizePINDiode()); 
 
   //
@@ -787,7 +819,16 @@
     fCam      ->SetReadyToSave();
 
-  fQECam    ->SetReadyToSave();
-  fBadPixels->SetReadyToSave();
-
+  if (fIntensQE)
+    fIntensQE ->SetReadyToSave();
+  else
+    fQECam    ->SetReadyToSave();
+
+  if (fIntensBad)
+    fIntensBad->SetReadyToSave();
+  else
+    fBadPixels->SetReadyToSave();
+
+  if (fIntensBlind)
+    fIntensBlind->SetReadyToSave();
   if (fBlindCam)
     fBlindCam->SetReadyToSave();
@@ -985,5 +1026,5 @@
     {
       
-      MBadPixelsPix    &bad    = (*fBadPixels)[i];
+      MBadPixelsPix    &bad    = fIntensBad ? (*fIntensBad)[i] : (*fBadPixels)[i];
       MCalibrationPix  &pix    = fIntensCam ? (*fIntensCam)[i] : (*fCam)[i];
 
@@ -1091,5 +1132,7 @@
         ? (MCalibrationChargePix&)(*fIntensCam)[i]
         : (MCalibrationChargePix&)(*fCam)  [i];
-      MBadPixelsPix         &bad = (*fBadPixels)[i];
+      MBadPixelsPix         &bad = fIntensBad 
+        ? (*fIntensBad)[i]
+        : (*fBadPixels)[i];
       
       if (!pix.IsFFactorMethodValid())
@@ -1210,5 +1253,7 @@
         continue;
 
-      MBadPixelsPix         &bad = (*fBadPixels)[i];
+      MBadPixelsPix         &bad = fIntensBad 
+        ? (*fIntensBad)[i]
+        : (*fBadPixels)[i];
 
       if (bad.IsUncalibrated(MBadPixelsPix::kChargeSigmaNotValid))
@@ -1353,5 +1398,7 @@
         ? (MCalibrationChargePix&)(*fIntensCam)[i]
         : (MCalibrationChargePix&)(*fCam)[i];
-      MBadPixelsPix         &bad = (*fBadPixels)[i];
+      MBadPixelsPix         &bad = fIntensBad 
+        ? (*fIntensBad)[i]
+        : (*fBadPixels)[i];
 
       if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
@@ -1399,5 +1446,5 @@
 {
 
-  if (!fBlindCam)
+  if (!fBlindCam && !fIntensBlind)
     return kFALSE;  
 
@@ -1406,8 +1453,15 @@
   Int_t   nvalid  = 0;
 
-  for (Int_t i=0; i<fBlindCam->GetSize(); i++)
-    {
-      
-      MCalibrationBlindPix &blindpix = (MCalibrationBlindPix&)(*fBlindCam)[i];
+  MCalibrationBlindCam  *blindcam = fIntensBlind   
+    ? (MCalibrationBlindCam*)fIntensBlind->GetCam() : fBlindCam;
+  MCalibrationQECam     *qecam    = fIntensQE      
+    ? (MCalibrationQECam*)fIntensQE->GetCam()    : fQECam;
+  MCalibrationChargeCam *chargecam = fIntensCam 
+    ? (MCalibrationChargeCam*)fIntensCam->GetCam()  : fCam;
+
+  for (Int_t i=0; i<blindcam->GetSize(); i++)
+    {
+      
+      MCalibrationBlindPix &blindpix = (MCalibrationBlindPix&)(*blindcam)[i];
 
       if (!blindpix.IsValid())
@@ -1456,16 +1510,10 @@
   fluxvar /= 1./fluxvar;
 
-  const Float_t photons = flux * (*fGeom)[0].GetA() / fQECam->GetPlexiglassQE();
-  if (fIntensCam)
-    fIntensCam->SetNumPhotonsBlindPixelMethod(photons);
-  else
-    fCam->SetNumPhotonsBlindPixelMethod(photons);
-  
-  const Float_t photrelvar = fluxvar / flux / flux + fQECam->GetPlexiglassQERelVar();
+  const Float_t photons = flux * (*fGeom)[0].GetA() / qecam->GetPlexiglassQE();
+  chargecam->SetNumPhotonsBlindPixelMethod(photons);
+  
+  const Float_t photrelvar = fluxvar / flux / flux + qecam->GetPlexiglassQERelVar();
   if (photrelvar > 0.)
-    if (fIntensCam)
-      fIntensCam->SetNumPhotonsBlindPixelMethodErr(TMath::Sqrt( photrelvar * photons * photons));  
-    else
-      fCam->SetNumPhotonsBlindPixelMethodErr(TMath::Sqrt( photrelvar * photons * photons));  
+    chargecam->SetNumPhotonsBlindPixelMethodErr(TMath::Sqrt( photrelvar * photons * photons));  
 
   return kTRUE;
@@ -1575,8 +1623,13 @@
     }
   
-  MCalibrationChargePix &avpix = fIntensCam 
-    ? (MCalibrationChargePix&)fIntensCam->GetAverageArea(0)
-    : (MCalibrationChargePix&)fCam->GetAverageArea(0);
-  MCalibrationQEPix     &qepix = (MCalibrationQEPix&)  fQECam->GetAverageArea(0);  
+  MCalibrationQECam     *qecam     = fIntensQE      
+    ? (MCalibrationQECam*)    fIntensQE->GetCam()   : fQECam;
+  MCalibrationChargeCam *chargecam = fIntensCam 
+    ? (MCalibrationChargeCam*)fIntensCam->GetCam()  : fCam;
+  MBadPixelsCam         *badcam    = fIntensBad 
+    ? (MBadPixelsCam*)        fIntensBad->GetCam()  : fBadPixels;
+
+  MCalibrationChargePix &avpix = (MCalibrationChargePix&)chargecam->GetAverageArea(0);
+  MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    qecam->GetAverageArea(0);
 
   const Float_t avphotons   = avpix.GetPheFFactorMethod()       
@@ -1584,5 +1637,5 @@
                            / qepix.GetPMTCollectionEff()
                            / qepix.GetLightGuidesEff(fPulserColor)
-                           / fQECam->GetPlexiglassQE();
+                           / qecam->GetPlexiglassQE();
 
   const Float_t avphotrelvar = avpix.GetPheFFactorMethodRelVar() 
@@ -1590,5 +1643,5 @@
                             + qepix.GetPMTCollectionEffRelVar()
                             + qepix.GetLightGuidesEffRelVar(fPulserColor)
-                            + fQECam->GetPlexiglassQERelVar();
+                            + qecam->GetPlexiglassQERelVar();
 
   const UInt_t nareas   = fGeom->GetNumAreas();
@@ -1597,14 +1650,8 @@
   // Set the results in the MCalibrationChargeCam
   //
-  if (fIntensCam)
-    fIntensCam->SetNumPhotonsFFactorMethod   (avphotons);
-  else
-    fCam->SetNumPhotonsFFactorMethod   (avphotons);
+  charge->SetNumPhotonsFFactorMethod   (avphotons);
 
   if (avphotrelvar > 0.)
-    if (fIntensCam)
-      fIntensCam->SetNumPhotonsFFactorMethodErr(TMath::Sqrt( avphotrelvar * avphotons * avphotons));  
-    else
-      fCam->SetNumPhotonsFFactorMethodErr(TMath::Sqrt( avphotrelvar * avphotons * avphotons));  
+    charge->SetNumPhotonsFFactorMethodErr(TMath::Sqrt( avphotrelvar * avphotons * avphotons));  
 
   TArrayF lowlim           (nareas);
@@ -1621,9 +1668,7 @@
     {
       
-      MCalibrationChargePix &pix = fIntensCam
-        ? (MCalibrationChargePix&)(*fIntensCam)[i]
-        : (MCalibrationChargePix&)(*fCam)[i];
-      MCalibrationQEPix   &qepix = (MCalibrationQEPix&)  (*fQECam)[i];
-      MBadPixelsPix         &bad =                   (*fBadPixels)[i];
+      MCalibrationChargePix &avpix = (MCalibrationChargePix&)(*chargecam)[i];
+      MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    (*qecam)    [i];
+      MBadPixelsPix         &bad =                           (*badcam)   [i];
 
       if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
@@ -1649,7 +1694,7 @@
       if (!pix.CalcMeanFFactor( photons , avphotrelvar ))
         {
-          (*fBadPixels)[i].SetUncalibrated( MBadPixelsPix::kDeviatingFFactor );
+          bad.SetUncalibrated( MBadPixelsPix::kDeviatingFFactor );
           if (IsCheckDeviatingBehavior())
-            (*fBadPixels)[i].SetUnsuitable  ( MBadPixelsPix::kUnreliableRun    );
+            bad.SetUnsuitable  ( MBadPixelsPix::kUnreliableRun    );
           continue;
         }
@@ -1676,5 +1721,6 @@
         }
 
-      avffactorphotvar[i] = (avffactorphotvar[i] - avffactorphotons[i]*avffactorphotons[i]/numffactor[i]) / (numffactor[i]-1.);
+      avffactorphotvar[i] = (avffactorphotvar[i] - avffactorphotons[i]*avffactorphotons[i]/numffactor[i]) 
+                          / (numffactor[i]-1.);
       avffactorphotons[i] = avffactorphotons[i] / numffactor[i];
 
@@ -1739,8 +1785,6 @@
     {
       
-      MCalibrationChargePix &pix = fIntensCam 
-        ? (MCalibrationChargePix&)(*fIntensCam)[i]
-        : (MCalibrationChargePix&)(*fCam)[i];
-      MBadPixelsPix         &bad =                   (*fBadPixels)[i];
+      MCalibrationChargePix &pix   = (MCalibrationChargePix&)(*chargecam)[i];
+      MBadPixelsPix         &bad   =                         (*badcam)   [i];
 
       if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
@@ -1765,10 +1809,8 @@
     {
       
-      MCalibrationChargePix &pix = fIntensCam 
-        ? (MCalibrationChargePix&)(*fIntensCam)[i]
-        : (MCalibrationChargePix&)(*fCam)[i];
-      MCalibrationQEPix   &qepix = (MCalibrationQEPix&)  (*fQECam)[i];
-      MBadPixelsPix         &bad =                   (*fBadPixels)[i];
-      
+      MCalibrationChargePix &pix   = (MCalibrationChargePix&)(*chargecam)[i];
+      MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    (*qecam)    [i];
+      MBadPixelsPix         &bad   =                         (*badcam)   [i];
+
       if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
         {
@@ -1805,9 +1847,18 @@
   const UInt_t npixels  = fGeom->GetNumPixels();
 
+  MCalibrationQECam     *qecam     = fIntensQE      
+    ? (MCalibrationQECam*)    fIntensQE->GetCam()   : fQECam;
+  MCalibrationChargeCam *chargecam = fIntensCam 
+    ? (MCalibrationChargeCam*)fIntensCam->GetCam()  : fCam;
+  MCalibrationBlindCam  *blindcam  = fIntensBlind
+    ? (MCalibrationBlindCam*) fIntensBlind->GetCam(): fBlindCam;
+  MBadPixelsCam         *badcam    = fIntensBad 
+    ? (MBadPixelsCam*)        fIntensBad->GetCam()  : fBadPixels;
+
   //
   // Set the results in the MCalibrationChargeCam
   //
   /*
-  if (fBlindPixel)
+  if (blindcam)
     {
       if (fBlindPixel->IsFluxInsidePlexiglassAvailable())
@@ -1838,7 +1889,7 @@
     {
       
-      MCalibrationQEPix   &qepix = (MCalibrationQEPix&)  (*fQECam)[i];
-
-      if (!fBlindCam)
+      MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    (*qecam)    [i];
+      
+      if (!blindcam)
         {
           qepix.SetBlindPixelMethodValid(kFALSE, fPulserColor);
@@ -1846,31 +1897,22 @@
         }
 
-      /*
-      if (!fBlindPixel->IsFluxInsidePlexiglassAvailable())
+      MBadPixelsPix         &bad   =                         (*badcam)   [i];
+
+      if (bad.IsUnsuitable (MBadPixelsPix::kUnsuitableRun))
         {
           qepix.SetBlindPixelMethodValid(kFALSE, fPulserColor);
           continue;
         }
-      */      
-
-      MBadPixelsPix &bad = (*fBadPixels)[i];
-      if (bad.IsUnsuitable (MBadPixelsPix::kUnsuitableRun))
-        {
-          qepix.SetBlindPixelMethodValid(kFALSE, fPulserColor);
-          continue;
-        }
-      
-      MCalibrationChargePix &pix = fIntensCam
-        ? (MCalibrationChargePix&)(*fIntensCam)[i]
-        : (MCalibrationChargePix&)(*fCam)[i];        
-      MGeomPix              &geo =                        (*fGeom)[i];
-      
+      
+      MCalibrationChargePix &pix   = (MCalibrationChargePix&)(*chargecam)[i];
+      MGeomPix              &geo   =                         (*fGeom)    [i];
+
       const Float_t qe        = pix.GetPheFFactorMethod() 
-        //                             / fBlindPixel->GetFluxInsidePlexiglass() 
+                             / blindcam->GetFluxInsidePlexiglass() 
                              / geo.GetA() 
-                             * fQECam->GetPlexiglassQE();
-
-      const Float_t qerelvar = /* fBlindPixel->GetFluxInsidePlexiglassRelVar() 
-                                  + */ fQECam->GetPlexiglassQERelVar()
+                             * qecam->GetPlexiglassQE();
+
+      const Float_t qerelvar = blindcam->GetFluxInsidePlexiglassRelVar() 
+                               + qecam->GetPlexiglassQERelVar()
                                + pix.GetPheFFactorMethodRelVar();
 
@@ -1907,4 +1949,12 @@
   const UInt_t npixels  = fGeom->GetNumPixels();
 
+  MCalibrationQECam     *qecam     = fIntensQE      
+    ? (MCalibrationQECam*)    fIntensQE->GetCam()   : fQECam;
+  MCalibrationChargeCam *chargecam = fIntensCam 
+    ? (MCalibrationChargeCam*)fIntensCam->GetCam()  : fCam;
+  MCalibrationBlindCam  *blindcam  = fIntensBlind
+    ? (MCalibrationBlindCam*) fIntensBlind->GetCam(): fBlindCam;
+  MBadPixelsCam         *badcam    = fIntensBad 
+    ? (MBadPixelsCam*)        fIntensBad->GetCam()  : fBadPixels;
   //
   //  With the knowledge of the overall photon flux, calculate the 
@@ -1914,5 +1964,5 @@
     {
       
-      MCalibrationQEPix   &qepix = (MCalibrationQEPix&)  (*fQECam)[i];
+      MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    (*qecam)    [i];
 
       if (!fPINDiode)
@@ -1928,5 +1978,5 @@
         }
 
-      MBadPixelsPix &bad  =  (*fBadPixels)[i];
+      MBadPixelsPix         &bad   =                         (*badcam)   [i];
 
       if (!bad.IsUnsuitable (MBadPixelsPix::kUnsuitableRun))
@@ -1936,8 +1986,6 @@
         }
       
-      MCalibrationChargePix &pix = fIntensCam 
-        ?  (MCalibrationChargePix&)(*fIntensCam)[i]      
-        :  (MCalibrationChargePix&)(*fCam)[i];
-      MGeomPix              &geo =                        (*fGeom)[i];
+      MCalibrationChargePix &pix   = (MCalibrationChargePix&)(*chargecam)[i];
+      MGeomPix              &geo =                           (*fGeom)    [i];
       
       const Float_t qe       =  pix.GetPheFFactorMethod() 
@@ -1968,9 +2016,14 @@
   const UInt_t npixels  = fGeom->GetNumPixels();
 
+  MCalibrationQECam     *qecam     = fIntensQE      
+    ? (MCalibrationQECam*)    fIntensQE->GetCam()   : fQECam;
+  MBadPixelsCam         *badcam    = fIntensBad 
+    ? (MBadPixelsCam*)        fIntensBad->GetCam()  : fBadPixels;
+
   for (UInt_t i=0; i<npixels; i++)
     {
       
-      MCalibrationQEPix   &qepix = (MCalibrationQEPix&)  (*fQECam)[i];
-      MBadPixelsPix       &bad   = (*fBadPixels)[i];
+      MCalibrationQEPix     &qepix = (MCalibrationQEPix&)    (*qecam)    [i];
+      MBadPixelsPix         &bad   =                         (*badcam)   [i];
 
       if (!bad.IsUnsuitable (MBadPixelsPix::kUnsuitableRun))
@@ -2000,7 +2053,12 @@
   TArrayI counts(nareas);
 
-  for (Int_t i=0; i<fBadPixels->GetSize(); i++)
-    {
-      MBadPixelsPix &bad = (*fBadPixels)[i];
+  MBadPixelsCam         *badcam    = fIntensBad 
+    ? (MBadPixelsCam*)fIntensBad->GetCam()  : fBadPixels;
+  MCalibrationChargeCam *chargecam = fIntensCam 
+    ? (MCalibrationChargeCam*)fIntensCam->GetCam()  : fCam;
+
+  for (Int_t i=0; i<badcam->GetSize(); i++)
+    {
+      MBadPixelsPix &bad = (*badcam)[i];
       if (!bad.IsBad())
         {
@@ -2016,7 +2074,8 @@
   counts.Reset();
 
-  for (Int_t i=0; i<fBadPixels->GetSize(); i++)
-    {
-      MBadPixelsPix &bad = (*fBadPixels)[i];
+  for (Int_t i=0; i<badcam->GetSize(); i++)
+    {
+      MBadPixelsPix &bad =  (*badcam)[i];
+
       if (bad.IsUnsuitable(MBadPixelsPix::kUnsuitableRun))
         {
@@ -2027,8 +2086,5 @@
 
   for (Int_t aidx=0; aidx<nareas; aidx++)
-    if (fIntensCam)
-      fIntensCam->SetNumUnsuitable(counts[aidx], aidx);
-    else
-      fCam->SetNumUnsuitable(counts[aidx], aidx);
+    chargecam->SetNumUnsuitable(counts[aidx], aidx);
 
   if (fGeom->InheritsFrom("MGeomCamMagic"))
@@ -2038,7 +2094,9 @@
   counts.Reset();
 
-  for (Int_t i=0; i<fBadPixels->GetSize(); i++)
-    {
-      MBadPixelsPix &bad = (*fBadPixels)[i];
+  for (Int_t i=0; i<badcam->GetSize(); i++)
+    {
+
+      MBadPixelsPix &bad = (*badcam)[i];
+
       if (bad.IsUnsuitable(MBadPixelsPix::kUnreliableRun))
         {
@@ -2049,8 +2107,5 @@
 
   for (Int_t aidx=0; aidx<nareas; aidx++)
-    if (fIntensCam)
-      fIntensCam->SetNumUnreliable(counts[aidx], aidx);
-    else
-      fCam->SetNumUnreliable(counts[aidx], aidx);
+    chargecam->SetNumUnreliable(counts[aidx], aidx);
 
   *fLog << " " << setw(7) << "Unreliable Pixels:              "
@@ -2069,7 +2124,11 @@
   UInt_t countouter = 0;
 
-  for (Int_t i=0; i<fBadPixels->GetSize(); i++)
-    {
-      MBadPixelsPix &bad = (*fBadPixels)[i];
+  MBadPixelsCam         *badcam    = fIntensBad 
+    ? (MBadPixelsCam*)fIntensBad->GetCam()  : fBadPixels;
+
+  for (Int_t i=0; i<badcam->GetSize(); i++)
+    {
+      MBadPixelsPix &bad = (*badcam)[i];
+
       if (bad.IsUncalibrated(typ))
         {
