Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3350)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3351)
@@ -114,5 +114,5 @@
 MCalibrationChargeCalc::MCalibrationChargeCalc(const char *name, const char *title)
     : fPedestals(NULL), fCam(NULL), 
-      fRawEvt(NULL), fRunHeader(NULL), fEvtTime(NULL),
+      fRawEvt(NULL), fRunHeader(NULL), fGeom(NULL), fEvtTime(NULL),
       fSignals(NULL), fPINDiode(NULL), fBlindPixel(NULL)
 {
@@ -239,6 +239,6 @@
 
 
-    MGeomCam *cam = (MGeomCam*)pList->FindObject("MGeomCam");
-    if (!cam)
+    fGeom = (MGeomCam*)pList->FindObject("MGeomCam");
+    if (!fGeom)
     {
       *fLog << err << GetDescriptor() << ": No MGeomCam found... aborting." << endl;
@@ -246,5 +246,5 @@
     }
 
-    fCam->SetGeomCam(cam);
+    fCam->SetGeomCam(fGeom);
 
     fNumHiGainSamples =  fSignals->GetNumUsedHiGainFADCSlices();
@@ -252,5 +252,5 @@
     fSqrtHiGainSamples = TMath::Sqrt((Float_t)fNumHiGainSamples);
 
-    UInt_t npixels = cam->GetNumPixels();
+    UInt_t npixels = fGeom->GetNumPixels();
 
     for (UInt_t i=0; i<npixels; i++)
@@ -346,7 +346,10 @@
   //
   Int_t nvalid   = 0;
-  Float_t avped  = 0;
-  Float_t avprms = 0;
-  Float_t avnum  = 0;
+  Float_t avinnerped  = 0;
+  Float_t avinnerprms = 0;
+  Float_t avinnernum  = 0;
+  Float_t avouterped  = 0;
+  Float_t avouterprms = 0;
+  Float_t avouternum  = 0;
   for (Int_t pixid=0; pixid<fPedestals->GetSize(); pixid++)
     {
@@ -367,7 +370,16 @@
       const Float_t num    = TMath::Sqrt((Float_t)fPedestals->GetTotalEntries());
 
-      avped  += ped;
-      avprms += prms;
-      avnum  += num;
+      if (fGeom->GetPixRatio(pixid) == 1.)
+      {
+	  avinnerped  += ped;
+	  avinnerprms += prms;
+	  avinnernum  += num;
+      }
+      else
+      {
+	  avouterped  += ped;
+	  avouterprms += prms;
+	  avouternum  += num;
+      }
       //
       // set them in the calibration camera
@@ -419,7 +431,7 @@
   if (avinnerpix->IsHiGainSaturation())
   {
-      avinnerpix->SetPedestal(avped  * fNumLoGainSamples,
-			 avprms * TMath::Sqrt((Float_t)fNumLoGainSamples),
-			 avprms * fNumLoGainSamples / avnum);
+      avinnerpix->SetPedestal(avinnerped/avinnernum  * fNumLoGainSamples,
+			 avinnerprms/avinnernum * TMath::Sqrt((Float_t)fNumLoGainSamples),
+			 avinnerprms/avinnernum * TMath::Sqrt((Float_t)fNumLoGainSamples/avinnernum));
       avinnerpix->SetNumLoGainSamples((Float_t)fNumLoGainSamples);
       avinnerpix->ApplyLoGainConversion();
@@ -427,14 +439,14 @@
   else
   {
-      avinnerpix->SetPedestal(avped  * fNumHiGainSamples,
-			 avprms * TMath::Sqrt((Float_t)fNumHiGainSamples),
-			 avprms * fNumHiGainSamples / avnum);
+      avinnerpix->SetPedestal(avinnerped/avinnernum  * fNumHiGainSamples,
+			 avinnerprms/avinnernum * TMath::Sqrt((Float_t)fNumHiGainSamples),
+			 avinnerprms/avinnernum * TMath::Sqrt((Float_t)fNumHiGainSamples/avinnernum));
   }
 
   if (avouterpix->IsHiGainSaturation())
   {
-      avouterpix->SetPedestal(avped  * fNumLoGainSamples,
-			 avprms * TMath::Sqrt((Float_t)fNumLoGainSamples),
-			 avprms * fNumLoGainSamples / avnum);
+      avouterpix->SetPedestal(avouterped/avouternum  * fNumLoGainSamples,
+			      avouterprms/avouternum * TMath::Sqrt((Float_t)fNumLoGainSamples),
+			      avouterprms/avouternum * TMath::Sqrt((Float_t)fNumLoGainSamples/avouternum));
       avouterpix->SetNumLoGainSamples((Float_t)fNumLoGainSamples);
       avouterpix->ApplyLoGainConversion();
@@ -442,7 +454,7 @@
   else
   {
-      avouterpix->SetPedestal(avped  * fNumHiGainSamples,
-			 avprms * TMath::Sqrt((Float_t)fNumHiGainSamples),
-			 avprms * fNumHiGainSamples / avnum);
+      avouterpix->SetPedestal(avouterped/avouternum  * fNumHiGainSamples,
+			      avouterprms/avouternum * TMath::Sqrt((Float_t)fNumHiGainSamples),
+			      avouterprms/avouternum * TMath::Sqrt((Float_t)fNumHiGainSamples/avouternum));
   }
   
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 3350)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.h	(revision 3351)
@@ -28,5 +28,4 @@
 class MCalibrationChargeCalc : public MTask
 {
-
 private:
 
@@ -35,4 +34,5 @@
   MRawEvtData                *fRawEvt;                    //! raw event data (time slices)
   MRawRunHeader              *fRunHeader;                 //! RunHeader information
+  MGeomCam                   *fGeom;                      //! Geometry information
 
   MTime                      *fEvtTime;                   //! Time of the event
