Index: trunk/MagicSoft/Mars/mhbase/MH.cc
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MH.cc	(revision 6869)
+++ trunk/MagicSoft/Mars/mhbase/MH.cc	(revision 6890)
@@ -664,11 +664,11 @@
     Double_t min = FLT_MAX;
 
-    const TAxis &axex = *((TH1&)h).GetXaxis();
-    const TAxis &axey = *((TH1&)h).GetYaxis();
-    const TAxis &axez = *((TH1&)h).GetZaxis();
-
-    for (int iz=1; iz<=axez.GetNbins(); iz++)
-        for (int iy=1; iy<=axey.GetNbins(); iy++)
-            for (int ix=1; ix<=axex.GetNbins(); ix++)
+    const Int_t nx = h.GetXaxis()->GetNbins();
+    const Int_t ny = h.GetYaxis()->GetNbins();
+    const Int_t nz = h.GetZaxis()->GetNbins();
+
+    for (int iz=1; iz<=nz; iz++)
+        for (int iy=1; iy<=ny; iy++)
+            for (int ix=1; ix<=nx; ix++)
             {
                 const Double_t v = h.GetBinContent(h.GetBin(ix, iy, iz));
Index: trunk/MagicSoft/Mars/mhbase/MHMatrix.cc
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MHMatrix.cc	(revision 6869)
+++ trunk/MagicSoft/Mars/mhbase/MHMatrix.cc	(revision 6890)
@@ -143,5 +143,5 @@
 Int_t MHMatrix::AddColumn(const char *rule)
 {
-    if (fM.IsValid())
+    if (IsValid(fM))
     {
         *fLog << warn << "Warning - matrix is already in use. Can't add a new column... skipped." << endl;
@@ -173,5 +173,5 @@
 void MHMatrix::AddColumns(MDataArray *matrix)
 {
-    if (fM.IsValid())
+    if (IsValid(fM))
     {
         *fLog << warn << "Warning - matrix is already in use. Can't add new columns... skipped." << endl;
@@ -224,5 +224,5 @@
         return;
 
-    if (!fM.IsValid())
+    if (!IsValid(fM))
     {
         fM.ResizeTo(1, fData->GetNumEntries());
@@ -525,7 +525,7 @@
 Double_t MHMatrix::CalcDist(const TVector &evt, Int_t num)
 {
-    if (!fM2.IsValid())
-    {
-        if (!fM.IsValid())
+    if (!IsValid(fM2))
+    {
+        if (!IsValid(fM))
         {
             *fLog << err << "MHMatrix::CalcDist - ERROR: fM not valid." << endl;
@@ -803,5 +803,5 @@
                               Int_t nmaxevts, TMatrix *rest)
 {
-    if (!fM.IsValid())
+    if (!IsValid(fM))
     {
         *fLog << err << dbginf << "Matrix not initialized" << endl;
@@ -1001,5 +1001,5 @@
 Bool_t MHMatrix::DefRefMatrix(Int_t nmaxevts, TMatrix *rest)
 {
-    if (!fM.IsValid())
+    if (!IsValid(fM))
     {
         *fLog << err << dbginf << "Matrix not initialized" << endl;
@@ -1113,5 +1113,5 @@
 Int_t MHMatrix::ReadEnv(const TEnv &env, TString prefix, Bool_t print)
 {
-    if (fM.IsValid())
+    if (IsValid(fM))
     {
         *fLog << err << "ERROR - matrix is already in use. Can't add a new column from TEnv... skipped." << endl;
Index: trunk/MagicSoft/Mars/mhbase/MHMatrix.h
===================================================================
--- trunk/MagicSoft/Mars/mhbase/MHMatrix.h	(revision 6869)
+++ trunk/MagicSoft/Mars/mhbase/MHMatrix.h	(revision 6890)
@@ -44,4 +44,8 @@
 
     void AddRow();
+    Bool_t IsValid(const TMatrix &m) const
+    {
+        return m.GetNrows()>0 && m.IsValid();
+    }
 
     Bool_t SetupFill(const MParList *pList);
@@ -73,5 +77,5 @@
     const TMatrix &GetM() const { return fM; }
 
-    Bool_t IsValid() const { return fM.IsValid(); }
+    Bool_t IsValid() const { return IsValid(fM); }
     Int_t  GetNumRows() const { return fM.GetNrows(); }
 
