Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.cc	(revision 5913)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.cc	(revision 5914)
@@ -45,5 +45,5 @@
 #include <TGraphErrors.h>
 #include <TOrdCollection.h>
-#include <TH1D.h>
+#include <TH1.h>
 
 #include "MLog.h"
@@ -551,5 +551,5 @@
 // photo-electrons vs. camera number for pixel 'pixid' 
 //
-TGraphErrors *MCalibrationIntensityChargeCam::GetVarVsTime( const Int_t pixid , const Option_t *opt )
+TGraphErrors *MCalibrationIntensityChargeCam::GetVarVsTime( const Int_t pixid , const Option_t *varname )
 {
   
@@ -559,5 +559,5 @@
     return NULL;
   
-  TString option(opt);
+  TString option(varname);
 
   TArrayF nr(size);
@@ -664,5 +664,5 @@
 // per area index 'aidx' vs. the calibration camera number 
 //
-TGraphErrors *MCalibrationIntensityChargeCam::GetVarPerAreaVsTime( const Int_t aidx, const MGeomCam &geom, const Option_t *opt)
+TGraphErrors *MCalibrationIntensityChargeCam::GetVarPerAreaVsTime( const Int_t aidx, const MGeomCam &geom, const Option_t *varname)
 {
   
@@ -672,5 +672,5 @@
     return NULL;
 
-  TString option(opt);
+  TString option(varname);
 
   TArrayF vararea(size);
@@ -981,2 +981,93 @@
 }
 
+TH1F *MCalibrationIntensityChargeCam::GetVarFluctuations( const Int_t aidx, const MGeomCam &geom, const Option_t *varname )
+{
+  
+  const Int_t size = GetSize();
+  
+  if (size == 0)
+    return NULL;
+  
+  TString option(varname);
+  
+  TH1F *hist = new TH1F("hist",Form("%s - Rel. Fluctuations %s Pixel",option.Data(),aidx ? "Outer" : "Inner"),
+                        200,0.,100.);
+  hist->SetXTitle("Relative Fluctuation [%]");
+  hist->SetYTitle("Nr. channels [1]");  
+  hist->SetFillColor(kRed+aidx);
+
+  MCalibrationChargeCam *cam = (MCalibrationChargeCam*)GetCam();
+
+  //
+  // Loop over pixels
+  //
+  for (Int_t npix=0;npix<cam->GetSize();npix++)
+    {
+      if (geom[npix].GetAidx() != aidx)
+        continue;
+
+      Double_t variab   = 0.;
+      Double_t variab2  = 0.;
+      Double_t variance = 0.;
+      Int_t    num      = 0;
+      Float_t  pvar     = 0.;
+      Float_t  relrms   = 99.9;
+      //
+      // Loop over the Cams for each pixel
+      //
+      for (Int_t i=0; i<GetSize(); i++)
+        {
+          MCalibrationChargeCam *cam = (MCalibrationChargeCam*)GetCam(i);
+          //
+          // Get the calibration pix from the calibration cam
+          //
+          MCalibrationChargePix &pix = (MCalibrationChargePix&)(*cam)[npix];
+          //
+          // Don't use bad pixels
+          //
+          if (!pix.IsFFactorMethodValid())
+            continue;
+
+          if (option.Contains("RSigma"))
+            pvar = pix.GetRSigma();
+          if (option.Contains("AbsTime"))
+            pvar = pix.GetAbsTimeMean();
+          if (option.Contains("ConversionHiLo"))
+            pvar = pix.GetConversionHiLo();
+          if (option.Contains("ConvertedMean"))
+            pvar = pix.GetConvertedMean();
+          if (option.Contains("ConvertedSigma"))
+            pvar = pix.GetConvertedSigma();
+          if (option.Contains("ConvertedRSigma"))
+            pvar = pix.GetConvertedRSigma();
+          if (option.Contains("MeanConvFADC2Phe"))
+            pvar = pix.GetMeanConvFADC2Phe();
+          if (option.Contains("MeanFFactorFADC2Phot"))
+            pvar = pix.GetMeanFFactorFADC2Phot();
+          if (option.Contains("Ped"))
+            pvar = pix.GetPed();
+          if (option.Contains("PedRms"))
+            pvar = pix.GetPedRms();
+          if (option.Contains("PheFFactorMethod"))
+            pvar = pix.GetPheFFactorMethod();
+          if (option.Contains("RSigmaPerCharge"))
+            pvar = pix.GetRSigmaPerCharge();
+
+          variab  += pvar;
+          variab2 += pvar*pvar;
+          num++;
+        }
+
+      if (num > 1)
+        {
+          variab  /= num;
+          variance = (variab2 - variab*variab*num) / (num-1);
+
+          if (variance > 0.)
+            relrms = TMath::Sqrt(variance)/variab * 100.;
+        }
+      hist->Fill(relrms);
+    }
+  return hist;
+}
+
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.h	(revision 5913)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationIntensityChargeCam.h	(revision 5914)
@@ -16,6 +16,6 @@
 class TGraphErrors;
 class TH2F;
+class TH1F;
 class MGeomCam;
-
 class MCalibrationIntensityChargeCam : public MCalibrationIntensityCam
 {
@@ -41,6 +41,7 @@
   TGraphErrors *GetPhotVsTime( const Option_t *method="FFactor" );
 
-  TGraphErrors *GetVarPerAreaVsTime( const Int_t aidx, const MGeomCam &geom, const Option_t *opt );
-  TGraphErrors *GetVarVsTime( const Int_t pixid , const Option_t *opt );
+  TGraphErrors *GetVarPerAreaVsTime( const Int_t aidx, const MGeomCam &geom, const Option_t *varname );
+  TGraphErrors *GetVarVsTime( const Int_t pixid , const Option_t *varname );
+  TH1F         *GetVarFluctuations( const Int_t aidx, const MGeomCam &geom, const Option_t *varname);
   
   ClassDef(MCalibrationIntensityChargeCam, 1) // Container Intensity Charge Calibration Results Camera
