Index: /trunk/MagicSoft/Mars/Changelog
===================================================================
--- /trunk/MagicSoft/Mars/Changelog	(revision 4205)
+++ /trunk/MagicSoft/Mars/Changelog	(revision 4206)
@@ -56,4 +56,7 @@
    * mcalib/MHCalibrationCam.h
      - make destructors virtual. 
+
+   * mcalib/MHCalibrationCam.[h,cc]
+     - create a copy contructor
 
 
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 4205)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.cc	(revision 4206)
@@ -88,7 +88,5 @@
 //
 MCalibrationCam::MCalibrationCam(const char *name, const char *title)
-    : fNumUnsuitable(),
-      fNumUnreliable(),
-      fNumHiGainFADCSlices(0.), fNumLoGainFADCSlices(0.), fPulserColor(kNONE), 
+    : fNumHiGainFADCSlices(0.), fNumLoGainFADCSlices(0.), fPulserColor(kNONE), 
       fPixels(NULL), fAverageAreas(NULL), fAverageSectors(NULL)
 {
@@ -172,4 +170,50 @@
 }
 
+void MCalibrationCam::Copy(TObject& object) const
+{
+  
+  MCalibrationCam &calib = (MCalibrationCam&)object;
+
+  MParContainer::Copy(object);
+  
+  calib.fNumHiGainFADCSlices  = fNumHiGainFADCSlices;
+  calib.fNumLoGainFADCSlices  = fNumLoGainFADCSlices;
+  calib.fPulserColor          = fPulserColor;
+
+  const Int_t n3 = GetSize();
+  if (n3 != 0)
+    {
+      calib.InitSize(n3);
+      for (int i=0; i<n3; i++)
+        (*this)[i].Copy(calib[i]);
+    }
+
+  const Int_t n4 = GetAverageAreas();
+  if (n4 != 0)
+    {
+      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];
+    }
+  
+  const Int_t n5 = GetAverageSectors();
+  if (n5 != 0)
+    {
+      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));
+    }
+  
+}
+
+
 // -------------------------------------------------------------------
 //
Index: /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h
===================================================================
--- /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 4205)
+++ /trunk/MagicSoft/Mars/mcalib/MCalibrationCam.h	(revision 4206)
@@ -48,5 +48,6 @@
   virtual void Clear           ( Option_t *o="");
   virtual void DrawPixelContent( Int_t num) const;    
-
+  virtual void Copy(TObject& object) const;
+  
   // Getters
   const Int_t            GetAverageAreas     ()           const;
