Index: trunk/MagicSoft/Mars/mhbase/MBinning.h
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MBinning.h	(revision 5620)
+++ trunk/MagicSoft/Mars/mhbase/MBinning.h	(revision 5692)
@@ -38,13 +38,20 @@
     MBinning(const char *name=NULL, const char *title=NULL);
     MBinning(Int_t nbins, Axis_t lo, Axis_t hi, const char *name=0, const char *opt="", const char *title=NULL);
+    MBinning(const MBinning &bins) { SetEdges(bins); }
+
+    void Copy(TObject &named) const
+    {
+        MBinning &bins = (MBinning&)named;
+        bins.SetEdges(*this);
+    }
 
     void SetEdges(const TArrayD &arr)
     {
         fEdges = arr;
-        fType = kIsUserArray;
+        fType  = kIsUserArray;
     }
 
     void SetEdges(const TAxis &axe);
-    void SetEdges(const MBinning &bins) { SetEdges(fEdges); }
+    void SetEdges(const MBinning &bins) { SetEdges(bins.fEdges); fType = bins.fType; }
     void SetEdges(const TH1 &h, const Char_t axis='x');
     void SetEdges(const Int_t nbins, const Axis_t lo, Axis_t up);
Index: trunk/MagicSoft/Mars/mhbase/MHMatrix.cc
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MHMatrix.cc	(revision 5620)
+++ trunk/MagicSoft/Mars/mhbase/MHMatrix.cc	(revision 5692)
@@ -160,4 +160,8 @@
     }
 
+    const Int_t idx = fData->FindRule(rule);
+    if (idx>=0)
+        return idx;
+
     fData->AddEntry(rule);
     return fData->GetNumEntries()-1;
Index: trunk/MagicSoft/Mars/mhbase/MHMatrix.h
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MHMatrix.h	(revision 5620)
+++ trunk/MagicSoft/Mars/mhbase/MHMatrix.h	(revision 5692)
@@ -115,5 +115,5 @@
     void ReduceRows(UInt_t num);
 
-    ClassDef(MHMatrix, 1) // Multidimensional Matrix to store events
+    ClassDef(MHMatrix, 1) // Multidimensional Matrix (TMatrix) to store events
 };
 
