Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 4270)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 4271)
@@ -88,13 +88,13 @@
 //
 MCalibrationCam::MCalibrationCam(const char *name, const char *title)
-    : fNumHiGainFADCSlices(0.), fNumLoGainFADCSlices(0.), fPulserColor(kNONE), 
+    : fPulserColor(kNONE), 
       fPixels(NULL), fAverageAreas(NULL), fAverageSectors(NULL)
 {
-    fName  = name  ? name  : "MCalibrationCam";
-    fTitle = title ? title : "Base class Storage container for Camera Calibration";
-
-    fAverageBadAreas    = new TClonesArray("MBadPixelsPix",1);
-    fAverageBadSectors  = new TClonesArray("MBadPixelsPix",1);
-
+
+  fAverageBadAreas    = new TClonesArray("MBadPixelsPix",1);
+  fAverageBadSectors  = new TClonesArray("MBadPixelsPix",1);
+
+  fNumHiGainFADCSlices.Set(1);
+  fNumLoGainFADCSlices.Set(1);
 }
 
@@ -174,11 +174,9 @@
   
   MCalibrationCam &calib = (MCalibrationCam&)object;
-
-  MParContainer::Copy(object);
-  
-  calib.fNumHiGainFADCSlices  = fNumHiGainFADCSlices;
-  calib.fNumLoGainFADCSlices  = fNumLoGainFADCSlices;
+  
+  MParContainer::Copy(calib);
+  
   calib.fPulserColor          = fPulserColor;
-
+  
   const Int_t n3 = GetSize();
   if (n3 != 0)
@@ -188,5 +186,5 @@
         (*this)[i].Copy(calib[i]);
     }
-
+  
   const Int_t n4 = GetAverageAreas();
   if (n4 != 0)
@@ -194,11 +192,12 @@
       calib.InitAverageAreas(n4);
       for (int i=0; i<n4; i++)
-        GetAverageArea(i).Copy(calib.GetAverageArea(i));
-      for (int i=0; i<n4; i++)
-        GetAverageBadArea(i).Copy(calib.GetAverageBadArea(i));
-      for (int i=0; i<n4; i++)
-        calib.fNumUnsuitable[i] = fNumUnsuitable[i];
-      for (int i=0; i<n4; i++)
-        calib.fNumUnreliable[i] = fNumUnreliable[i];
+        {
+          GetAverageArea   (i).Copy(calib.GetAverageArea(i));
+          GetAverageBadArea(i).Copy(calib.GetAverageBadArea(i));
+          calib.fNumUnsuitable      [i] = fNumUnsuitable[i];
+          calib.fNumUnreliable      [i] = fNumUnreliable[i];
+          calib.fNumHiGainFADCSlices[i] = fNumHiGainFADCSlices[i];
+          calib.fNumLoGainFADCSlices[i] = fNumLoGainFADCSlices[i];
+        }
     }
   
@@ -208,11 +207,10 @@
       calib.InitAverageSectors(n5);
       for (int i=0; i<n5; i++)
-        GetAverageSector(i).Copy(calib.GetAverageSector(i));
-      for (int i=0; i<n5; i++)
-        GetAverageBadSector(i).Copy(calib.GetAverageBadSector(i));
+        {
+          GetAverageSector   (i).Copy(calib.GetAverageSector(i));
+          GetAverageBadSector(i).Copy(calib.GetAverageBadSector(i));
+        }
     }
-  
-}
-
+}
 
 // -------------------------------------------------------------------
@@ -241,4 +239,6 @@
   fNumUnsuitable.Set(i);
   fNumUnreliable.Set(i);
+  fNumHiGainFADCSlices.Set(i);
+  fNumLoGainFADCSlices.Set(i);
 }
 
@@ -299,4 +299,31 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// Returns the mean number of High-Gain FADC slices per area index and -1 if 
+// the area index exceeds the initialized array.
+//
+const Float_t MCalibrationCam::GetNumHiGainFADCSlices( Int_t aidx ) const
+{
+  if (aidx < 0)
+    return -1;
+
+  return aidx > fNumHiGainFADCSlices.GetSize() ? -1 : fNumHiGainFADCSlices[aidx]; 
+}
+
+// --------------------------------------------------------------------------
+//
+// Returns the mean number of Low-Gain FADC slices per area index and -1 if 
+// the area index exceeds the initialized array.
+//
+const Float_t MCalibrationCam::GetNumLoGainFADCSlices( Int_t aidx ) const
+{
+  if (aidx < 0)
+    return -1;
+
+  return aidx > fNumLoGainFADCSlices.GetSize() ? -1 : fNumLoGainFADCSlices[aidx]; 
+}
+
+
 
 // --------------------------------------------------------------------------
@@ -440,4 +467,21 @@
 }
 
+void MCalibrationCam::SetNumHiGainFADCSlices( const Float_t i, const Int_t aidx)
+{
+  if (aidx < 0)
+    return;
+
+  if (aidx < fNumHiGainFADCSlices.GetSize())
+    fNumHiGainFADCSlices[aidx] = i;  
+}
+
+void MCalibrationCam::SetNumLoGainFADCSlices( const Float_t i, const Int_t aidx)
+{
+  if (aidx < 0)
+    return;
+  if (aidx < fNumLoGainFADCSlices.GetSize())
+    fNumLoGainFADCSlices[aidx] = i; 
+}
+
 void MCalibrationCam::SetNumUnsuitable( const UInt_t i, const Int_t aidx)
 {
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 4270)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 4271)
@@ -64,6 +64,6 @@
   const Int_t            GetAverageSectors      ()             const;  
   const MCalibrationPix &GetAverageSector       ( UInt_t i   ) const;
-  const Float_t          GetNumHiGainFADCSlices ( Int_t aidx ) const;
-  const Float_t          GetNumLoGainFADCSlices ( Int_t aidx ) const;
+  const Float_t          GetNumHiGainFADCSlices ( Int_t aidx=0 ) const;
+  const Float_t          GetNumLoGainFADCSlices ( Int_t aidx=0 ) const;
   const Int_t            GetNumUnsuitable       ( Int_t aidx ) const;
   const Int_t            GetNumUnreliable       ( Int_t aidx ) const;
@@ -84,6 +84,6 @@
 
   // Setters
-  void  SetNumHiGainFADCSlices ( const Float_t f, const Int_t aidx );
-  void  SetNumLoGainFADCSlices ( const Float_t f, const Int_t aidx );
+  void  SetNumHiGainFADCSlices ( const Float_t f, const Int_t aidx=0 );
+  void  SetNumLoGainFADCSlices ( const Float_t f, const Int_t aidx=0 );
   void  SetNumUnsuitable       ( const UInt_t i,  const Int_t aidx );  
   void  SetNumUnreliable       ( const UInt_t i,  const Int_t aidx ); 
