Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 3637)
+++ trunk/MagicSoft/Mars/Changelog	(revision 3638)
@@ -46,4 +46,27 @@
        FitLoGainHists and InitHists can be used from base class. 
 
+   * mcalib/MCalibrationPix.[h,cc]
+   * mcalib/MCalibrationChargePix.[h,cc]
+   * mcalib/MCalibrationRelTimePix.[h,cc]
+     - put most of the functionality into the base class MCalibrationPix
+     - other two classes derive now from MCalibrationPix
+
+   * mcalib/MCalibrationCam.[h,cc]
+   * mcalib/MCalibrationChargeCam.[h,cc]
+   * mcalib/MCalibrationRelTimeCam.[h,cc]
+     - put most of the functionality into the base class MCalibrationCam
+     - other two classes derive now from MCalibrationCam
+     - calls to MCalibration*Cam[i] now have to cast!
+
+   * mcalib/MCalibrate.cc
+   * mcalib/MCalibrateData.cc
+   * mcalib/MMcCalibrateCalc.cc
+   * manalysis/MMcCalibrationUpdate.cc
+   * mcalib/MCalibrationChargeCalc.cc
+     - cast calls to MCalibration*Cam[i]
+
+   * manalysis/MGeomApply.cc
+     - add initialization MCalibrationRelTimeCam
+     - add intialization of average pixels
 
  2004/04/02: Abelardo Moralejo
Index: trunk/MagicSoft/Mars/macros/calibration.C
===================================================================
--- trunk/MagicSoft/Mars/macros/calibration.C	(revision 3637)
+++ trunk/MagicSoft/Mars/macros/calibration.C	(revision 3638)
@@ -96,4 +96,5 @@
   MExtractedSignalCam        sigcam;
   MArrivalTimeCam            timecam;
+  MCalibrationRelTimeCam     relcam;
   MCalibrationChargeCam      calcam;
   MCalibrationChargePINDiode pindiode;   
@@ -118,4 +119,5 @@
   plist.AddToList(&sigcam);
   plist.AddToList(&timecam);
+  plist.AddToList(&relcam);
   plist.AddToList(&calcam);
   plist.AddToList(&histtime);
Index: trunk/MagicSoft/Mars/manalysis/MGeomApply.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MGeomApply.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/manalysis/MGeomApply.cc	(revision 3638)
@@ -72,4 +72,5 @@
 #include "MPedestalCam.h"
 #include "MCalibrationChargeCam.h"
+#include "MCalibrationRelTimeCam.h"
 #include "MCalibrationQECam.h"
 #include "MPedPhotCam.h"
@@ -134,14 +135,24 @@
         ped->InitSize(cam->GetNumPixels());
 
-    MCalibrationChargeCam *cal = (MCalibrationChargeCam*)pList->FindObject(AddSerialNumber("MCalibrationChargeCam"));
+    MCalibrationChargeCam *cal = 
+      (MCalibrationChargeCam*)pList->FindObject(AddSerialNumber("MCalibrationChargeCam"));
     if (cal)
       {
-        cal->InitSize(cam->GetNumPixels());
-        cal->InitAverageAreas(cam->GetNumAreas());
-        cal->InitAverageSectors(cam->GetNumSectors());
+        cal->InitSize          ( cam->GetNumPixels()  );
+        cal->InitAverageAreas  ( cam->GetNumAreas()   );
+        cal->InitAverageSectors( cam->GetNumSectors() );
+      }
+
+    MCalibrationRelTimeCam *cat = 
+      (MCalibrationRelTimeCam*)pList->FindObject(AddSerialNumber("MCalibrationRelTimeCam"));
+    if (cat)
+      {
+        cat->InitSize          ( cam->GetNumPixels()  );
+        cat->InitAverageAreas  ( cam->GetNumAreas()   );
+        cat->InitAverageSectors( cam->GetNumSectors() );
       }
     
-
-    MCalibrationQECam *qe = (MCalibrationQECam*)pList->FindObject(AddSerialNumber("MCalibrationQECam"));
+    MCalibrationQECam *qe = 
+      (MCalibrationQECam*)pList->FindObject(AddSerialNumber("MCalibrationQECam"));
     if (qe)
         qe->InitSize(cam->GetNumPixels());
@@ -151,8 +162,10 @@
         pedphot->InitSize(cam->GetNumPixels());
 
+
     MExtractedSignalCam *ext = (MExtractedSignalCam*)pList->FindObject(AddSerialNumber("MExtractedSignalCam"));
     if (ext)
         ext->InitSize(cam->GetNumPixels());
 
+
     MBlindPixels *bnd = (MBlindPixels*)pList->FindObject(AddSerialNumber("MBlindPixels"));
     if (bnd)
Index: trunk/MagicSoft/Mars/manalysis/MMcCalibrationUpdate.cc
===================================================================
--- trunk/MagicSoft/Mars/manalysis/MMcCalibrationUpdate.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/manalysis/MMcCalibrationUpdate.cc	(revision 3638)
@@ -239,5 +239,5 @@
     for (int i=0; i<num; i++)
     {
-        MCalibrationChargePix &calpix = (*fCalCam)[i];
+        MCalibrationChargePix &calpix = (MCalibrationChargePix&)(*fCalCam)[i];
 
 	calpix.SetBlindPixelMethodValid();
@@ -305,5 +305,5 @@
 	MPedPhotPix &pedpix = (*fPedPhotCam)[i];
 
-        MCalibrationChargePix &calpix = (*fCalCam)[i];
+        MCalibrationChargePix &calpix = (MCalibrationChargePix&)(*fCalCam)[i];
 	Float_t adc2phot = calpix.GetMeanConversionBlindPixelMethod();
 	Float_t hi2lo    = calpix.GetConversionHiLo();
Index: trunk/MagicSoft/Mars/mcalib/MCalibrate.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrate.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrate.cc	(revision 3638)
@@ -226,5 +226,5 @@
 
 	  
-	  MCalibrationChargePix &pix = (*fCalibrations)[pixidx];
+	  MCalibrationChargePix &pix = (MCalibrationChargePix&)(*fCalibrations)[pixidx];
 	  MBadPixelsPix         &bad = (*fBadPixels)[pixidx];
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrateData.cc	(revision 3638)
@@ -248,5 +248,5 @@
   if(fCalibrationMode!=kNone)
   {
-    MCalibrationChargePix &pix = (*fCalibrations)[pixidx];       
+    MCalibrationChargePix &pix = (MCalibrationChargePix&)(*fCalibrations)[pixidx];       
     MBadPixelsPix         &bad = (*fBadPixels)[pixidx];
     
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 3638)
@@ -16,4 +16,5 @@
 class MCalibrationCam : public MParContainer, public MCamEvent
 {
+
 protected:
   
@@ -24,6 +25,6 @@
   TClonesArray *fAverageBadSectors;  //-> Array of MBadPixelsPix, one per camera sector
   
-  Byte_t  fFlags;
-
+  Byte_t fFlags;                     // Byte to hold the flags
+  
 public:
 
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCalc.cc	(revision 3638)
@@ -378,5 +378,5 @@
     {
 
-      MCalibrationChargePix &pix = (*fCam)      [i];
+      MCalibrationChargePix &pix = (MCalibrationChargePix&)(*fCam)[i];
       MCalibrationQEPix     &pqe = (*fQECam)    [i];
       MBadPixelsPix         &bad = (*fBadPixels)[i];
@@ -491,7 +491,7 @@
   // 4) Pixel has a charge sigma bigger than its Pedestal RMS
   // 
-  if (cal.GetMeanCharge() < fChargeLimit*cal.GetPedRms())
-    {
-      *fLog << warn << "WARNING: Fitted Charge: " << cal.GetMeanCharge() << " is smaller than "
+  if (cal.GetMean() < fChargeLimit*cal.GetPedRms())
+    {
+      *fLog << warn << "WARNING: Fitted Charge: " << cal.GetMean() << " is smaller than "
             << fChargeLimit << " Pedestal RMS: " <<  cal.GetPedRms() << " in Pixel  " << cal.GetPixId() << endl;
       bad.SetUncalibrated( MBadPixelsPix::kChargeIsPedestal);
@@ -499,7 +499,7 @@
     }
   
-  if (cal.GetMeanChargeErr() < fChargeErrLimit) 
-    {
-      *fLog << warn << "WARNING: Sigma of Fitted Charge: " << cal.GetMeanChargeErr() << " is smaller than "
+  if (cal.GetMeanErr() < fChargeErrLimit) 
+    {
+      *fLog << warn << "WARNING: Sigma of Fitted Charge: " << cal.GetMeanErr() << " is smaller than "
             << fChargeErrLimit << " in Pixel  " << cal.GetPixId() << endl;
       bad.SetUncalibrated( MBadPixelsPix::kChargeErrNotValid );
@@ -507,15 +507,15 @@
     }
       
-   if (cal.GetMeanCharge() < fChargeRelErrLimit*cal.GetMeanChargeErr()) 
-    {
-      *fLog << warn << "WARNING: Fitted Charge: " << cal.GetMeanCharge() << " is smaller than "
-            << fChargeRelErrLimit << "* its error: " << cal.GetMeanChargeErr() << " in Pixel  " << cal.GetPixId() << endl;
+   if (cal.GetMean() < fChargeRelErrLimit*cal.GetMeanErr()) 
+    {
+      *fLog << warn << "WARNING: Fitted Charge: " << cal.GetMean() << " is smaller than "
+            << fChargeRelErrLimit << "* its error: " << cal.GetMeanErr() << " in Pixel  " << cal.GetPixId() << endl;
       bad.SetUncalibrated( MBadPixelsPix::kChargeRelErrNotValid );
       bad.SetUnsuitable(   MBadPixelsPix::kUnsuitableRun        );
     }
 
-  if (cal.GetSigmaCharge() < cal.GetPedRms())
-    {
-      *fLog << warn << "WARNING: Sigma of Fitted Charge: " << cal.GetSigmaCharge() 
+  if (cal.GetSigma() < cal.GetPedRms())
+    {
+      *fLog << warn << "WARNING: Sigma of Fitted Charge: " << cal.GetSigma() 
 	    << " smaller than Pedestal RMS: " << cal.GetPedRms() << " in Pixel  " << cal.GetPixId() << endl;
       bad.SetUncalibrated( MBadPixelsPix::kChargeSigmaNotValid );
@@ -601,5 +601,5 @@
     {
 
-      MCalibrationChargePix &pix = (*fCam)[pixid];
+      MCalibrationChargePix &pix = (MCalibrationChargePix&)(*fCam)[pixid];
       //
       // Check if the pixel has been excluded from the fits
@@ -642,6 +642,8 @@
     {
 
-      FinalizeAvPedestals(fCam->GetAverageArea(aidx), avinnerped, avinnerprms,avinnernum);
-      FinalizeCharges(fCam->GetAverageArea(aidx),fCam->GetAverageBadArea(aidx));
+      FinalizeAvPedestals((MCalibrationChargePix&)fCam->GetAverageArea(aidx), 
+                          avinnerped, avinnerprms,avinnernum);
+      FinalizeCharges((MCalibrationChargePix&)fCam->GetAverageArea(aidx),
+                      fCam->GetAverageBadArea(aidx));
     }
   
@@ -649,6 +651,8 @@
     {
 
-      FinalizeAvPedestals(fCam->GetAverageSector(sector), avinnerped, avinnerprms,avinnernum);
-      FinalizeCharges(fCam->GetAverageSector(sector),fCam->GetAverageBadSector(sector));
+      FinalizeAvPedestals((MCalibrationChargePix&)fCam->GetAverageSector(sector), 
+                          avinnerped, avinnerprms,avinnernum);
+      FinalizeCharges((MCalibrationChargePix&)fCam->GetAverageSector(sector),
+                      fCam->GetAverageBadSector(sector));
     }
   
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.cc	(revision 3638)
@@ -107,4 +107,5 @@
 /////////////////////////////////////////////////////////////////////////////
 #include "MCalibrationChargeCam.h"
+#include "MCalibrationCam.h"
 
 #include <TH2.h>
@@ -152,10 +153,15 @@
     fPixels           = new TClonesArray("MCalibrationChargePix",1);
     fAverageAreas     = new TClonesArray("MCalibrationChargePix",1);
-    fAverageBadAreas  = new TClonesArray("MBadPixelsPix",1);
-    fAverageSectors     = new TClonesArray("MCalibrationChargePix",1);
-    fAverageBadSectors  = new TClonesArray("MBadPixelsPix",1);
-
-    Clear();
-
+    fAverageSectors   = new TClonesArray("MCalibrationChargePix",1);
+
+    fMeanFluxPhesInnerPixel       = 0.;
+    fMeanFluxPhesInnerPixelVar    = 0.;
+    fMeanFluxPhesOuterPixel       = 0.;
+    fMeanFluxPhesOuterPixelVar    = 0.;
+    
+    CLRBIT(fFlags,kBlindPixelMethodValid);
+    CLRBIT(fFlags,kFFactorMethodValid);
+    CLRBIT(fFlags,kPINDiodeMethodValid);
+  
     SetAverageQE();
     SetConvFFactorRelErrLimit();
@@ -173,13 +179,4 @@
 {
 
-  //
-  // delete fPixels should delete all Objects stored inside
-  // 
-  delete fPixels;
-  delete fAverageAreas;
-  delete fAverageBadAreas;
-  delete fAverageSectors;
-  delete fAverageBadSectors;
-  
   
   if (fOffsets)
@@ -192,144 +189,4 @@
 }
 
-// -------------------------------------------------------------------
-//
-// This function simply allocates memory via the ROOT command:
-// (TObject**) TStorage::ReAlloc(fCont, newSize * sizeof(TObject*),
-//                                      fSize * sizeof(TObject*));
-// newSize corresponds to size in our case
-// fSize is the old size (in most cases: 1)
-//
-void MCalibrationChargeCam::InitSize(const UInt_t i)
-{
-  fPixels->ExpandCreate(i);
-}
-
-void MCalibrationChargeCam::InitAverageAreas(const UInt_t i)
-{
-  fAverageAreas->ExpandCreate(i);
-  fAverageBadAreas->ExpandCreate(i);
-}
-
-void MCalibrationChargeCam::InitAverageSectors(const UInt_t i)
-{
-  fAverageSectors->ExpandCreate(i);
-  fAverageBadSectors->ExpandCreate(i);
-}
-
-
-
-// --------------------------------------------------------------------------
-//
-// This function returns the current size of the TClonesArray 
-// independently if the MCalibrationPix is filled with values or not.
-//
-// It is the size of the array fPixels.
-//
-Int_t MCalibrationChargeCam::GetSize() const
-{
-  return fPixels->GetEntriesFast();
-}
-
-Int_t MCalibrationChargeCam::GetAverageAreas() const
-{
-  return fAverageAreas->GetEntriesFast();
-}
-
-Int_t MCalibrationChargeCam::GetAverageSectors() const
-{
-  return fAverageSectors->GetEntriesFast();
-}
-
-
-// --------------------------------------------------------------------------
-//
-// Get i-th pixel (pixel number)
-//
-MCalibrationChargePix &MCalibrationChargeCam::operator[](UInt_t i)
-{
-  return *static_cast<MCalibrationChargePix*>(fPixels->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th pixel (pixel number)
-//
-const MCalibrationChargePix &MCalibrationChargeCam::operator[](UInt_t i) const
-{
-  return *static_cast<MCalibrationChargePix*>(fPixels->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (area number)
-//
-MCalibrationChargePix &MCalibrationChargeCam::GetAverageArea(UInt_t i)
-{
-  return *static_cast<MCalibrationChargePix*>(fAverageAreas->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (area number)
-//
-const MCalibrationChargePix &MCalibrationChargeCam::GetAverageArea(UInt_t i) const 
-{
-  return *static_cast<MCalibrationChargePix*>(fAverageAreas->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (sector number)
-//
-MCalibrationChargePix &MCalibrationChargeCam::GetAverageSector(UInt_t i)
-{
-  return *static_cast<MCalibrationChargePix*>(fAverageSectors->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (sector number)
-//
-const MCalibrationChargePix &MCalibrationChargeCam::GetAverageSector(UInt_t i) const 
-{
-  return *static_cast<MCalibrationChargePix*>(fAverageSectors->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (area number)
-//
-MBadPixelsPix &MCalibrationChargeCam::GetAverageBadArea(UInt_t i)
-{
-  return *static_cast<MBadPixelsPix*>(fAverageBadAreas->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (area number)
-//
-const MBadPixelsPix &MCalibrationChargeCam::GetAverageBadArea(UInt_t i) const 
-{
-  return *static_cast<MBadPixelsPix*>(fAverageBadAreas->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (sector number)
-//
-MBadPixelsPix &MCalibrationChargeCam::GetAverageBadSector(UInt_t i)
-{
-  return *static_cast<MBadPixelsPix*>(fAverageBadSectors->UncheckedAt(i));
-}
-
-// --------------------------------------------------------------------------
-//
-// Get i-th average pixel (sector number)
-//
-const MBadPixelsPix &MCalibrationChargeCam::GetAverageBadSector(UInt_t i) const 
-{
-  return *static_cast<MBadPixelsPix*>(fAverageBadSectors->UncheckedAt(i));
-}
-
 
 // --------------------------------------
@@ -338,24 +195,4 @@
 {
 
-  fPixels->ForEach(TObject, Clear)();
-
-  //
-  // another ForEach does not compile, thus have to do the loop ourselves:
-  //
-  for (Int_t i=0;i<GetAverageAreas();i++)
-    {
-      fAverageAreas[i].Clear();
-      fAverageBadAreas[i].Clear();
-    }
-
-  //
-  // another ForEach does not compile, thus have to do the loop ourselves:
-  //
-  for (Int_t i=0;i<GetAverageSectors();i++)
-    {
-      fAverageSectors[i].Clear();
-      fAverageBadSectors[i].Clear();
-    }
-  
   fMeanFluxPhesInnerPixel       = 0.;
   fMeanFluxPhesInnerPixelVar    = 0.;
@@ -366,4 +203,6 @@
   CLRBIT(fFlags,kFFactorMethodValid);
   CLRBIT(fFlags,kPINDiodeMethodValid);
+
+  MCalibrationCam::Clear();
 
   return;
@@ -448,6 +287,6 @@
           *fLog << all << "Pix " << pix->GetPixId() 
                 << ":  Ped.  Rms: "            << pix->GetPedRms()        << " +- " << pix->GetPedRmsErr() 
-		<< "   Mean signal: "          << pix->GetMeanCharge()    << " +- " << pix->GetSigmaCharge() 
-		<< "   Reduced Sigma: "        << pix->GetRSigmaCharge() 
+		<< "   Mean signal: "          << pix->GetMean()    << " +- " << pix->GetSigma() 
+		<< "   Reduced Sigma: "        << pix->GetRSigma() 
 		<< "   Nr Phe's: "             << pix->GetPheFFactorMethod() 
                 << " Saturated? :" << pix->IsHiGainSaturation() 
@@ -484,7 +323,7 @@
     *fLog << all << "Average Area:" 
           << "   Ped.  Rms: "            << pix->GetPedRms()        << " +- " << pix->GetPedRmsErr() 
-          << "   Mean signal: "          << pix->GetMeanCharge()    << " +- " << pix->GetMeanChargeErr() 
-          << "   Sigma signal: "         << pix->GetSigmaCharge()    << " +- "<< pix->GetSigmaChargeErr() 
-          << "   Reduced Sigma: "        << pix->GetRSigmaCharge() 
+          << "   Mean signal: "          << pix->GetMean()    << " +- " << pix->GetMeanErr() 
+          << "   Sigma signal: "         << pix->GetSigma()    << " +- "<< pix->GetSigmaErr() 
+          << "   Reduced Sigma: "        << pix->GetRSigma() 
           << "   Nr Phe's: "             << pix->GetPheFFactorMethod() 
           << endl;
@@ -496,7 +335,7 @@
     *fLog << all << "Average Sector:" 
           << "   Ped.  Rms: "            << pix->GetPedRms()        << " +- " << pix->GetPedRmsErr() 
-          << "   Mean signal: "          << pix->GetMeanCharge()    << " +- " << pix->GetMeanChargeErr() 
-          << "   Sigma signal: "         << pix->GetSigmaCharge()    << " +- "<< pix->GetSigmaChargeErr() 
-          << "   Reduced Sigma: "        << pix->GetRSigmaCharge() 
+          << "   Mean signal: "          << pix->GetMean()    << " +- " << pix->GetMeanErr() 
+          << "   Sigma signal: "         << pix->GetSigma()    << " +- "<< pix->GetSigmaErr() 
+          << "   Reduced Sigma: "        << pix->GetRSigma() 
           << "   Nr Phe's: "             << pix->GetPheFFactorMethod() 
           << endl;
@@ -594,110 +433,112 @@
     return kFALSE;
 
+ MCalibrationChargePix &pix = (MCalibrationChargePix&)(*this)[idx];
+
   switch (type)
     {
     case 0:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetMeanCharge();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetMean();
       break;
     case 1:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetMeanChargeErr();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetMeanErr();
       break;
     case 2:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetSigmaCharge();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetSigma();
       break;
     case 3:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetSigmaChargeErr();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetSigmaErr();
       break;
     case 4:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetChargeProb();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetProb();
       break;
     case 5:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      if ((*this)[idx].GetRSigmaCharge() == -1.)
+      if (pix.IsExcluded())
+        return kFALSE;
+      if (pix.GetRSigma() == -1.)
 	  return kFALSE;
-      val = (*this)[idx].GetRSigmaCharge();
+      val = pix.GetRSigma();
       break;
     case 6:
-      if ((*this)[idx].IsExcluded())
+      if (pix.IsExcluded())
         return kFALSE;    
-      if ((*this)[idx].GetRSigmaCharge() == -1.)
+      if (pix.GetRSigma() == -1.)
 	  return kFALSE;
-      val = (*this)[idx].GetRSigmaChargeErr();
+      val = pix.GetRSigmaErr();
       break;
     case 7:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      if ((*this)[idx].GetRSigmaCharge() == -1.)
-        return kFALSE;
-      if ((*this)[idx].GetMeanCharge() == 0.)
-        return kFALSE;
-      val = (*this)[idx].GetRSigmaCharge() / (*this)[idx].GetMeanCharge();
+      if (pix.IsExcluded())
+        return kFALSE;
+      if (pix.GetRSigma() == -1.)
+        return kFALSE;
+      if (pix.GetMean() == 0.)
+        return kFALSE;
+      val = pix.GetRSigma() / pix.GetMean();
       break;
     case 8:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      if ((*this)[idx].GetRSigmaCharge() <= 0.)
+      if (pix.IsExcluded())
+        return kFALSE;
+      if (pix.GetRSigma() <= 0.)
 	  return kFALSE;
-      if ((*this)[idx].GetMeanCharge() <= 0.)
-        return kFALSE;
-      if ((*this)[idx].GetRSigmaChargeErr() <= 0.)
+      if (pix.GetMean() <= 0.)
+        return kFALSE;
+      if (pix.GetRSigmaErr() <= 0.)
 	  return kFALSE;
-      if ((*this)[idx].GetMeanChargeErr() <= 0.)
-        return kFALSE;
-      // relative error RsigmaCharge square
-      val =    (*this)[idx].GetRSigmaChargeErr()* (*this)[idx].GetRSigmaChargeErr() 
-            / ((*this)[idx].GetRSigmaCharge()   * (*this)[idx].GetRSigmaCharge()   );
-      // relative error Charge square
-      val +=   (*this)[idx].GetMeanChargeErr() * (*this)[idx].GetMeanChargeErr()
-            / ((*this)[idx].GetMeanCharge()    * (*this)[idx].GetMeanCharge()   );
+      if (pix.GetMeanErr() <= 0.)
+        return kFALSE;
+      // relative error Rsigma square
+      val =    pix.GetRSigmaErr()* pix.GetRSigmaErr() 
+            / (pix.GetRSigma()   * pix.GetRSigma()   );
+      // relative error  square
+      val +=   pix.GetMeanErr() * pix.GetMeanErr()
+            / (pix.GetMean()    * pix.GetMean()   );
       // calculate relative error out of squares
       val  =   TMath::Sqrt(val) ;
       // multiply with value to get absolute error
-      val  *=  (*this)[idx].GetRSigmaCharge() / (*this)[idx].GetMeanCharge();
+      val  *=  pix.GetRSigma() / pix.GetMean();
       break;
     case 9:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsFFactorMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetPheFFactorMethod();
+      if (pix.IsExcluded() || !pix.IsFFactorMethodValid())
+        return kFALSE;
+      val = pix.GetPheFFactorMethod();
       break;
     case 10:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsFFactorMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetPheFFactorMethodErr();
+      if (pix.IsExcluded() || !pix.IsFFactorMethodValid())
+        return kFALSE;
+      val = pix.GetPheFFactorMethodErr();
       break;
     case 11:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsFFactorMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetMeanConversionFFactorMethod();
+      if (pix.IsExcluded() || !pix.IsFFactorMethodValid())
+        return kFALSE;
+      val = pix.GetMeanConversionFFactorMethod();
       break;
     case 12:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsFFactorMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetConversionFFactorMethodErr();
+      if (pix.IsExcluded() || !pix.IsFFactorMethodValid())
+        return kFALSE;
+      val = pix.GetConversionFFactorMethodErr();
       break;
     case 13:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsFFactorMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetTotalFFactorFFactorMethod();
+      if (pix.IsExcluded() || !pix.IsFFactorMethodValid())
+        return kFALSE;
+      val = pix.GetTotalFFactorFFactorMethod();
       break;
     case 14:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsFFactorMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetTotalFFactorFFactorMethodErr();
+      if (pix.IsExcluded() || !pix.IsFFactorMethodValid())
+        return kFALSE;
+      val = pix.GetTotalFFactorFFactorMethodErr();
       break;
     case 15:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      if ((*this)[idx].IsFFactorMethodValid())
+      if (pix.IsExcluded())
+        return kFALSE;
+      if (pix.IsFFactorMethodValid())
         val = 1;
       else
@@ -705,27 +546,27 @@
       break;
     case 16:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsBlindPixelMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetMeanConversionBlindPixelMethod();
+      if (pix.IsExcluded() || !pix.IsBlindPixelMethodValid())
+        return kFALSE;
+      val = pix.GetMeanConversionBlindPixelMethod();
       break;
     case 17:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsBlindPixelMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetConversionBlindPixelMethodErr();
+      if (pix.IsExcluded() || !pix.IsBlindPixelMethodValid())
+        return kFALSE;
+      val = pix.GetConversionBlindPixelMethodErr();
       break;
     case 18:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsBlindPixelMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetTotalFFactorBlindPixelMethod();
+      if (pix.IsExcluded() || !pix.IsBlindPixelMethodValid())
+        return kFALSE;
+      val = pix.GetTotalFFactorBlindPixelMethod();
       break;
     case 19:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsBlindPixelMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetTotalFFactorBlindPixelMethodErr();
+      if (pix.IsExcluded() || !pix.IsBlindPixelMethodValid())
+        return kFALSE;
+      val = pix.GetTotalFFactorBlindPixelMethodErr();
       break;
     case 20:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      if ((*this)[idx].IsBlindPixelMethodValid())
+      if (pix.IsExcluded())
+        return kFALSE;
+      if (pix.IsBlindPixelMethodValid())
         val = 1;
       else
@@ -733,27 +574,27 @@
       break;
     case 21:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsPINDiodeMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetMeanConversionPINDiodeMethod();
+      if (pix.IsExcluded() || !pix.IsPINDiodeMethodValid())
+        return kFALSE;
+      val = pix.GetMeanConversionPINDiodeMethod();
       break;
     case 22:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsPINDiodeMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetConversionPINDiodeMethodErr();
+      if (pix.IsExcluded() || !pix.IsPINDiodeMethodValid())
+        return kFALSE;
+      val = pix.GetConversionPINDiodeMethodErr();
       break;
     case 23:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsPINDiodeMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetTotalFFactorPINDiodeMethod();
+      if (pix.IsExcluded() || !pix.IsPINDiodeMethodValid())
+        return kFALSE;
+      val = pix.GetTotalFFactorPINDiodeMethod();
       break;
     case 24:
-      if ((*this)[idx].IsExcluded() || !(*this)[idx].IsPINDiodeMethodValid())
-        return kFALSE;
-      val = (*this)[idx].GetTotalFFactorPINDiodeMethodErr();
+      if (pix.IsExcluded() || !pix.IsPINDiodeMethodValid())
+        return kFALSE;
+      val = pix.GetTotalFFactorPINDiodeMethodErr();
       break;
     case 25:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      if ((*this)[idx].IsPINDiodeMethodValid())
+      if (pix.IsExcluded())
+        return kFALSE;
+      if (pix.IsPINDiodeMethodValid())
         val = 1;
       else
@@ -761,5 +602,5 @@
       break;
     case 26:
-      if ((*this)[idx].IsExcluded())
+      if (pix.IsExcluded())
         val = 1.;
       else
@@ -767,47 +608,47 @@
       break;
     case 27:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetHiGainNumPickup();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetHiGainNumPickup();
       break;
     case 28:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetLoGainNumPickup();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetLoGainNumPickup();
       break;
     case 29:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].IsHiGainSaturation();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.IsHiGainSaturation();
       break;
     case 30:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetPed();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetPed();
       break;
     case 31:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetPedErr();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetPedErr();
       break;
     case 32:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetPedRms();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetPedRms();
       break;
     case 33:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetPedErr()/2.;
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetPedErr()/2.;
       break;
     case 34:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetAbsTimeMean();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetAbsTimeMean();
       break;
     case 35:
-      if ((*this)[idx].IsExcluded())
-        return kFALSE;
-      val = (*this)[idx].GetAbsTimeRms();
+      if (pix.IsExcluded())
+        return kFALSE;
+      val = pix.GetAbsTimeRms();
       break;
     default:
@@ -825,5 +666,6 @@
 void MCalibrationChargeCam::DrawPixelContent(Int_t idx) const
 {
-    (*this)[idx].DrawClone();
+  MCalibrationChargePix &pix = (MCalibrationChargePix&)(*this)[idx];
+  pix.DrawClone();
 }
 
@@ -1096,7 +938,7 @@
       
       if (ratio == 1.)
-        conv               = fMeanFluxPhotonsInnerPixel / pix->GetMeanCharge(); 
+        conv               = fMeanFluxPhotonsInnerPixel / pix->GetMean(); 
       else
-        conv               = fMeanFluxPhotonsOuterPixel / pix->GetMeanCharge(); 
+        conv               = fMeanFluxPhotonsOuterPixel / pix->GetMean(); 
 
       if (conv <= 0.)
@@ -1106,8 +948,8 @@
         }
       
-      const Float_t chargeRelVar       =   pix->GetMeanChargeErr() * pix->GetMeanChargeErr()
-                                       / ( pix->GetMeanCharge()    * pix->GetMeanCharge());
-      const Float_t rsigmaChargeRelVar =   pix->GetRSigmaChargeErr() *  pix->GetRSigmaChargeErr()
-                                        / (pix->GetRSigmaCharge()    * pix->GetRSigmaCharge()) ;
+      const Float_t chargeRelVar       =   pix->GetMeanErr() * pix->GetMeanErr()
+                                       / ( pix->GetMean()    * pix->GetMean());
+      const Float_t rsigmaRelVar =   pix->GetRSigmaErr() *  pix->GetRSigmaErr()
+                                        / (pix->GetRSigma()    * pix->GetRSigma()) ;
 
       const Float_t convrelvar = meanphotRelVar + chargeRelVar;
@@ -1125,5 +967,5 @@
       // Calculate the Total F-Factor of the camera (in photons)
       //
-      const Float_t totalFFactor  =  (pix->GetRSigmaCharge()/pix->GetMeanCharge())
+      const Float_t totalFFactor  =  (pix->GetRSigma()/pix->GetMean())
                                     *TMath::Sqrt(fMeanFluxPhotonsInnerPixel);
       
@@ -1131,5 +973,5 @@
       // Calculate the error of the Total F-Factor of the camera ( in photons )
       //
-      const Float_t totalFFactorVar = rsigmaChargeRelVar + chargeRelVar + meanphotRelVar;
+      const Float_t totalFFactorVar = rsigmaRelVar + chargeRelVar + meanphotRelVar;
 
       if (convrelvar > 0. && conv > 0.)
@@ -1168,7 +1010,7 @@
         }
       
-      const Float_t charge    = pix->GetMeanCharge();
+      const Float_t charge    = pix->GetMean();
       const Float_t area      = geom[idx].GetA();
-      const Float_t chargeerr = pix->GetMeanChargeErr();          
+      const Float_t chargeerr = pix->GetMeanErr();          
       
       const Float_t nphot      = flux    * area;
@@ -1212,7 +1054,7 @@
         }
       
-      const Float_t charge    = pix->GetMeanCharge();
+      const Float_t charge    = pix->GetMean();
       const Float_t area      = geom[idx].GetA();
-      const Float_t chargeerr = pix->GetMeanChargeErr();          
+      const Float_t chargeerr = pix->GetMeanErr();          
       
       const Float_t nphot      = flux    * area;
@@ -1244,7 +1086,9 @@
 {
 
-  mean  = (*this)[ipx].GetMeanConversionBlindPixelMethod();
-  err   = (*this)[ipx].GetConversionBlindPixelMethodErr();
-  sigma = (*this)[ipx].GetSigmaConversionBlindPixelMethod();
+  MCalibrationChargePix &pix = (MCalibrationChargePix&)(*this)[ipx];
+
+  mean  = pix.GetMeanConversionBlindPixelMethod();
+  err   = pix.GetConversionBlindPixelMethodErr();
+  sigma = pix.GetSigmaConversionBlindPixelMethod();
 
   return kTRUE;
@@ -1255,5 +1099,7 @@
 {
 
-  Float_t conv = (*this)[ipx].GetMeanConversionFFactorMethod();
+  MCalibrationChargePix &pix = (MCalibrationChargePix&)(*this)[ipx];
+
+  Float_t conv = pix.GetMeanConversionFFactorMethod();
 
   if (conv < 0.)
@@ -1261,6 +1107,6 @@
 
   mean  = conv;
-  err   = (*this)[ipx].GetConversionFFactorMethodErr();
-  sigma = (*this)[ipx].GetSigmaConversionFFactorMethod();
+  err   = pix.GetConversionFFactorMethodErr();
+  sigma = pix.GetSigmaConversionFFactorMethod();
 
   return kTRUE;
@@ -1277,7 +1123,9 @@
 {
 
-  mean  = (*this)[ipx].GetMeanConversionPINDiodeMethod();
-  err   = (*this)[ipx].GetConversionPINDiodeMethodErr();
-  sigma = (*this)[ipx].GetSigmaConversionPINDiodeMethod();
+  MCalibrationChargePix &pix = (MCalibrationChargePix&)(*this)[ipx];
+
+  mean  = pix.GetMeanConversionPINDiodeMethod();
+  err   = pix.GetConversionPINDiodeMethodErr();
+  sigma = pix.GetSigmaConversionPINDiodeMethod();
 
   return kFALSE;
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargeCam.h	(revision 3638)
@@ -2,21 +2,17 @@
 #define MARS_MCalibrationChargeCam
 
-#ifndef MARS_MParContainer
-#include "MParContainer.h"
-#endif
-#ifndef MARS_MCamEvent
-#include "MCamEvent.h"
+#ifndef MARS_MCalibrationCam
+#include "MCalibrationCam.h"
 #endif
 
 class TH1D;
 class TH2D;
-class TClonesArray;
 
 class MCalibrationChargeBlindPix;
 class MCalibrationChargePINDiode;
 class MCalibrationChargePix;
-class MBadPixelsPix;
+class MGeomCam;
 class MBadPixelsCam;
-class MCalibrationChargeCam : public MParContainer, public MCamEvent
+class MCalibrationChargeCam : public MCalibrationCam
 {
 private:
@@ -32,16 +28,8 @@
   Float_t fPheFFactorRelVarLimit;    // Acceptance limit for number of phe's w.r.t mean number (in variances)
   
-  TClonesArray *fPixels;             //-> Array of MCalibrationChargePix, one per pixel
-  TClonesArray *fAverageAreas;       //-> Array of MCalibrationChargePix, one per pixel area
-  TClonesArray *fAverageSectors;     //-> Array of MCalibrationChargePix, one per camera sector
-  TClonesArray *fAverageBadAreas;    //-> Array of MBadPixelsPix, one per pixel area
-  TClonesArray *fAverageBadSectors;  //-> Array of MBadPixelsPix, one per camera sector
-  
   TH1D* fOffsets;                    //! 
   TH1D* fSlopes;                     //! 
   
   TH2D* fOffvsSlope;                 //! 
-
-  Byte_t  fFlags;
 
   enum  { kFFactorMethodValid, kBlindPixelMethodValid, kPINDiodeMethodValid, kCombinedMethodValid };
@@ -63,7 +51,4 @@
   
   void Clear(    Option_t *o="" );
-  void InitSize( const UInt_t i );
-  void InitAverageAreas(  const UInt_t i );
-  void InitAverageSectors( const UInt_t i );
 
   // Setters   
@@ -79,8 +64,4 @@
 
   // Getters
-  Int_t   GetSize()               const;
-  Int_t   GetAverageAreas()       const;
-  Int_t   GetAverageSectors()     const;  
-
   Bool_t  GetConversionFactorFFactor(    Int_t ipx, Float_t &mean, Float_t &err, Float_t &sigma );
   Bool_t  GetConversionFactorBlindPixel( Int_t ipx, Float_t &mean, Float_t &err, Float_t &sigma );
@@ -100,20 +81,4 @@
   Bool_t IsBlindPixelMethodValid()   const;
   Bool_t IsPINDiodeMethodValid()     const;  
-
-  // Others
-  MCalibrationChargePix &operator[](UInt_t i);
-  const MCalibrationChargePix &operator[](UInt_t i) const;
-
-  MCalibrationChargePix &GetAverageArea(UInt_t i);
-  const MCalibrationChargePix &GetAverageArea(UInt_t i) const;
-
-  MBadPixelsPix &GetAverageBadArea(UInt_t i);
-  const MBadPixelsPix &GetAverageBadArea(UInt_t i) const;
-
-  MCalibrationChargePix &GetAverageSector(UInt_t i);
-  const MCalibrationChargePix &GetAverageSector(UInt_t i) const;
-
-  MBadPixelsPix &GetAverageBadSector(UInt_t i);
-  const MBadPixelsPix &GetAverageBadSector(UInt_t i) const;
 
   // Prints
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationChargePix.h	(revision 3638)
@@ -74,8 +74,8 @@
   Float_t fConversionHiLoVar;               // The error of the conversion factor between Hi Gain and Lo Gain  
 
-  Byte_t fCalibFlags;
+  Byte_t fCalibFlags;                       // The bit-field for the class-own bits
 
-  enum  { kBlindPixelMethodValid, kFFactorMethodValid, 
-	  kPINDiodeMethodValid, kCombinedMethodValid };
+  enum  { kBlindPixelMethodValid, kFFactorMethodValid,
+          kPINDiodeMethodValid, kCombinedMethodValid }; // The possible bits to be set
 
 public:
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimePix.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimePix.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimePix.cc	(revision 3638)
@@ -39,4 +39,5 @@
 //
 MCalibrationRelTimePix::MCalibrationRelTimePix(const char *name, const char *title)
+    : fRelTimeFlags(0)
 {
 
@@ -55,5 +56,4 @@
 {
 
-  SetExcluded  ( kFALSE );
   SetValid     ( kFALSE );
 
@@ -82,17 +82,7 @@
 // Set the Excluded Bit from outside 
 //
-void MCalibrationRelTimePix::SetExcluded(Bool_t b )
-{ 
-    b ?  SETBIT(fFlags, kExcluded) : CLRBIT(fFlags, kExcluded); 
-}
-
-    
-// --------------------------------------------------------------------------
-//
-// Set the Excluded Bit from outside 
-//
 void MCalibrationRelTimePix::SetValid(const Bool_t b )
 { 
-  b ?  SETBIT(fFlags, kValid) : CLRBIT(fFlags, kValid); 
+  b ?  SETBIT(fRelTimeFlags, kValid) : CLRBIT(fRelTimeFlags, kValid); 
 }    
 
@@ -106,11 +96,6 @@
 
 
-Bool_t MCalibrationRelTimePix::IsExcluded()     const
-{ 
-   return TESTBIT(fFlags,kExcluded);  
-}
-
 Bool_t MCalibrationRelTimePix::IsValid() const 
 { 
-  return TESTBIT(fFlags, kValid); 
+  return TESTBIT(fRelTimeFlags, kValid); 
 }
Index: trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimePix.h
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimePix.h	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MCalibrationRelTimePix.h	(revision 3638)
@@ -14,5 +14,7 @@
   Float_t fSigmaConversion;    // The sigma of conversion factor to Phe's (F-factor method)
 
-  enum  { kExcluded, kValid };
+  Byte_t fRelTimeFlags;        // The bit-field for the class-own bits
+
+  enum  { kValid };             // The possible bits to be set
 
 public:
@@ -27,5 +29,4 @@
   
   // Setters
-  void SetExcluded (  const Bool_t b = kTRUE );
   void SetValid( const Bool_t b = kTRUE );
 
@@ -39,5 +40,4 @@
   Float_t GetTimePrecisionErr() const { return GetSigmaErr();    }
 
-  Bool_t IsExcluded()           const;
   Bool_t IsValid()              const;
 
Index: trunk/MagicSoft/Mars/mcalib/MMcCalibrationCalc.cc
===================================================================
--- trunk/MagicSoft/Mars/mcalib/MMcCalibrationCalc.cc	(revision 3637)
+++ trunk/MagicSoft/Mars/mcalib/MMcCalibrationCalc.cc	(revision 3638)
@@ -246,5 +246,5 @@
     for (int i=0; i<num; i++)
     {
-        MCalibrationChargePix &calpix = (*fCalCam)[i];
+        MCalibrationChargePix &calpix = (MCalibrationChargePix&)(*fCalCam)[i];
 
         const Float_t factor = fADC2Phot*calpix.GetMeanConversionBlindPixelMethod();
