Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.cc	(revision 5642)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.cc	(revision 5651)
@@ -407,2 +407,19 @@
 }
 
+Int_t MCalibrationIntensityCam::CountNumEntries(const MCalibrationCam::PulserColor_t col) const 
+{
+  
+  Int_t size = 0;
+
+  if (col == MCalibrationCam::kNONE)
+    return GetSize();
+  else
+    for (Int_t i=0;i<GetSize();i++)
+      {
+        const MCalibrationCam *cam = GetCam(i);
+        if (cam->GetPulserColor() == col)
+          size++;
+      }
+
+  return size;
+}
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.h	(revision 5642)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityCam.h	(revision 5651)
@@ -41,4 +41,6 @@
   
   void AddToList( const char* name, const MGeomCam &geom );
+
+  Int_t CountNumEntries(const MCalibrationCam::PulserColor_t col) const;  
 
   // Draws
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.cc	(revision 5642)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.cc	(revision 5651)
@@ -86,5 +86,18 @@
 {
   
-  const Int_t size = GetSize();
+  Int_t size = 0;
+  
+  if (col == MCalibrationCam::kNONE)
+    size = GetSize();
+  else
+    for (Int_t i=0;i<GetSize();i++)
+      {
+        MCalibrationChargeCam *cam = (MCalibrationChargeCam*)GetCam(i);
+        if (cam->GetPulserColor() == col)
+          size++;
+      }
+
+  if (size == 0)
+    return NULL;
   
   TArrayF phe(size);
@@ -129,4 +142,81 @@
   gr->GetXaxis()->SetTitle("Q [FADC counts]");
   gr->GetYaxis()->SetTitle("photo-electrons [1]");      
+  return gr;
+}
+
+// -------------------------------------------------------------------
+//
+// Returns a TGraphErrors with the number of photo-electrons vs. 
+// the extracted signal of pixel "pixid". 
+//
+TGraphErrors *MCalibrationIntensityChargeCam::GetPhePerCharge( const UInt_t pixid, const MCalibrationCam::PulserColor_t col)
+{
+  
+  Int_t size = 0;
+  
+  if (col == MCalibrationCam::kNONE)
+    size = GetSize();
+  else
+    for (Int_t i=0;i<GetSize();i++)
+      {
+        MCalibrationChargeCam *cam = (MCalibrationChargeCam*)GetCam(i);
+        if (cam->GetPulserColor() == col)
+          size++;
+      }
+
+  if (size == 0)
+    return NULL;
+  
+  TArrayF phepersig(size);
+  TArrayF phepersigerr(size);
+  TArrayF sig(size);
+  TArrayF sigerr(size);
+  
+  for (Int_t i=0;i<size;i++)
+    {
+      //
+      // Get the calibration cam from the intensity cam
+      //
+      MCalibrationChargeCam *cam = (MCalibrationChargeCam*)GetCam(i);
+
+      if (col != MCalibrationCam::kNONE)
+        if (cam->GetPulserColor() != col)
+          continue;
+      //
+      // Get the calibration pix from the calibration cam
+      //
+      MCalibrationChargePix &pix = (MCalibrationChargePix&)(*cam)[pixid];
+      //
+      // Don't use bad pixels
+      //
+      if (!pix.IsFFactorMethodValid())
+        continue;
+      //
+      // For the calculation of Q, we have to use the 
+      // converted value!
+      //
+      sig   [i] = pix.GetConvertedMean();
+      sigerr[i] = pix.GetConvertedMeanErr();
+      //
+      const Float_t phe = pix.GetPheFFactorMethod();
+      const Float_t err = pix.GetPheFFactorMethodErr();
+      Float_t var = 0.;
+      
+      phepersig[i]    = sig[i] > 0. ? pix.GetPheFFactorMethod()/sig[i] : -1.;
+      if (sig[i] > 0. && phe > 0.)
+        {
+          var = err * err / phe / phe + sigerr[i]*sigerr[i]/sig[i]/sig[i];
+          if (var > 0.001)
+            var = TMath::Sqrt(var)*phepersig[i];
+        }
+      phepersigerr[i] = var;
+    }
+  
+  TGraphErrors *gr = new TGraphErrors(size,
+                                     sig.GetArray(),phepersig.GetArray(),
+                                     sigerr.GetArray(),phepersigerr.GetArray());
+  gr->SetTitle(Form("%s%3i","Pixel ",pixid));
+  gr->GetXaxis()->SetTitle("Q [FADC counts]");
+  gr->GetYaxis()->SetTitle("photo-electrons / Q [FADC cts ^{-1}]");      
   return gr;
 }
@@ -251,5 +341,5 @@
   gr->SetTitle(Form("%s%3i","Pixel ",pixid));
   gr->GetXaxis()->SetTitle("1/Q [FADC counts^{-1}]");
-  gr->GetYaxis()->SetTitle("\sigma_{red}^{2}/Q^{2}");      
+  gr->GetYaxis()->SetTitle("\sigma_{red}^{2}/Q^{2} [1]");      
   return gr;
 }
@@ -322,2 +412,22 @@
 
 
+Int_t MCalibrationIntensityChargeCam::CountNumValidEntries(const UInt_t pixid, const MCalibrationCam::PulserColor_t col)
+{
+
+  Int_t nvalid = 0;
+
+  for (Int_t i=0;i<GetSize();i++)
+    {
+      const MCalibrationChargeCam *cam = (MCalibrationChargeCam*)GetCam(i);
+      const MCalibrationChargePix  &pix    = (MCalibrationChargePix&)(*cam)[pixid];
+
+      if (col == MCalibrationCam::kNONE)
+        if (pix.IsFFactorMethodValid())
+          nvalid++;
+      else
+        if (cam->GetPulserColor() == col)
+          if (pix.IsFFactorMethodValid())
+            nvalid++;
+    }
+  return nvalid;
+}
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.h	(revision 5642)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.h	(revision 5651)
@@ -43,7 +43,10 @@
   void  SetNumPhotonsPINDiodeMethodErr  ( const Float_t f )  {
     ((MCalibrationChargeCam*)GetCam())->SetNumPhotonsPINDiodeMethodErr(f); }   
+
+  Int_t CountNumValidEntries(const UInt_t pixid, const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
   
   TGraphErrors *GetRazmikPlot( const UInt_t pixid );
   TGraphErrors *GetPheVsCharge( const UInt_t pixid, const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
+  TGraphErrors *GetPhePerCharge( const UInt_t pixid, const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
   TGraphErrors *GetPheVsChargePerArea( const Int_t aidx, const MCalibrationCam::PulserColor_t col=MCalibrationCam::kNONE);
   TH2F         *GetRazmikPlotResults( const Int_t aidx, const MGeomCam &geom );
