Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 9025)
+++ trunk/MagicSoft/Mars/Changelog	(revision 9026)
@@ -18,4 +18,15 @@
 
                                                  -*-*- END OF LINE -*-*-
+
+ 2008/07/21 Thomas Bretz
+
+   * mbase/MParContainer.[h,cc]:
+     - adde new static ember functions GetClass
+
+   * mbase/MParList.[h,cc], mbase/MStatusArray.[h,cc],
+     mreport/MReportHelp.cc:
+     - use new GetClass function
+
+
 
  2008/07/20 Thomas Bretz
Index: trunk/MagicSoft/Mars/mbase/MParList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 9025)
+++ trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 9026)
@@ -776,5 +776,6 @@
     // try to get class from root environment
     //
-    TClass *cls = GetClass(cname);
+    gLog << err;
+    TClass *cls = GetClass(cname, &gLog);
     if (!cls)
         return list;
@@ -782,6 +783,6 @@
     if (!cls->InheritsFrom(MParContainer::Class()))
     {
-        *fLog << err << dbginf << "Cannot create new instance of class '" << cname << "': " << endl;
-        *fLog << "Class doesn't inherit from MParContainer." << endl;
+        gLog << err << dbginf << "Cannot create new instance of class '" << cname << "': " << endl;
+        gLog << "Class doesn't inherit from MParContainer." << endl;
         return list;
     }
Index: trunk/MagicSoft/Mars/mbase/MStatusArray.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusArray.cc	(revision 9025)
+++ trunk/MagicSoft/Mars/mbase/MStatusArray.cc	(revision 9026)
@@ -44,5 +44,5 @@
 #include "MStatusArray.h"
 
-#include <TH1.h>      // TH1::AddDirectoryStatus();
+#include <TH1.h>       // TH1::AddDirectoryStatus();
 #include <TClass.h>
 #include <TCanvas.h>
@@ -51,4 +51,5 @@
 #include "MLogManip.h"
 
+#include "MParContainer.h"   // MParContainer::GetClass
 #include "MStatusDisplay.h"
 
@@ -125,51 +126,4 @@
 }
 
-// FIXME: Move to a general class MMARS (TROOT) and unify with MParContainer
-TClass *MStatusArray::GetClass(const char *name) const
-{
-    TClass *cls = gROOT->GetClass(name);
-    Int_t rc = 0;
-    if (!cls)
-        rc =1;
-    else
-    {
-        if (!cls->Property())
-            rc = 5;
-        if (!cls->Size())
-            rc = 4;
-        if (!cls->IsLoaded())
-            rc = 3;
-        if (!cls->HasDefaultConstructor())
-            rc = 2;
-    }
-
-    if (rc==0)
-        return cls;
-
-    gLog << err << dbginf << "Class '" << name << "' not in dictionary: ";
-    switch (rc)
-    {
-    case 1:
-        gLog << "gROOT->GetClass() returned NULL." << endl;
-        return NULL;
-    case 2:
-        gLog << "no default constructor." << endl;
-        return NULL;
-    case 3:
-        gLog << "not loaded." << endl;
-        return NULL;
-    case 4:
-        gLog << "zero size." << endl;
-        return NULL;
-    case 5:
-        gLog << "no property." << endl;
-        return NULL;
-    }
-
-    gLog << "THIS SHOULD NEVER HAPPEN!" << endl;
-
-    return 0;
-}
-
 TCanvas *MStatusArray::FindCanvas(const char *name) const
 {
@@ -184,5 +138,6 @@
 TObject *MStatusArray::FindObjectInCanvas(const char *object, const char *base, const char *canvas) const
 {
-    TClass *cls = GetClass(base);
+    gLog << err;
+    TClass *cls = MParContainer::GetClass(base, &gLog);
     if (!cls)
         return 0;
Index: trunk/MagicSoft/Mars/mbase/MStatusArray.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MStatusArray.h	(revision 9025)
+++ trunk/MagicSoft/Mars/mbase/MStatusArray.h	(revision 9026)
@@ -24,5 +24,4 @@
     void     PrintObjectsInPad(const TCollection *list, const TString &name, Int_t lvl=0) const;
     TObject *FindObjectInPad(TVirtualPad *pad, const char *object, TClass *base) const;
-    TClass  *GetClass(const char *name) const;
 
 public:
Index: trunk/MagicSoft/Mars/mreport/MReportHelp.cc
===================================================================
--- trunk/MagicSoft/Mars/mreport/MReportHelp.cc	(revision 9025)
+++ trunk/MagicSoft/Mars/mreport/MReportHelp.cc	(revision 9026)
@@ -58,47 +58,12 @@
 MReportHelp::MReportHelp(const char *name, MLog *fLog) : fReport(NULL), fNumReports(0), fNumSkipped(0)
 {
-    TClass *cls = gROOT->GetClass(name);
-    Int_t rc = 0;
-    if (!cls)
-        rc =1;
-    else
-    {
-        if (!cls->Property())
-            rc = 5;
-        if (!cls->Size())
-            rc = 4;
-        if (!cls->IsLoaded())
-            rc = 3;
-        if (!cls->HasDefaultConstructor())
-            rc = 2;
-    }
-
-    if (rc)
-    {
-        *fLog << err << dbginf << "Cannot create new instance of class '" << name << "': ";
-        switch (rc)
-        {
-        case 1:
-            *fLog << "gROOT->GetClass() returned NULL." << endl;
-            return;
-        case 2:
-            *fLog << "no default constructor." << endl;
-            return;
-        case 3:
-            *fLog << "not loaded." << endl;
-            return;
-        case 4:
-            *fLog << "zero size." << endl;
-            return;
-        case 5:
-            *fLog << "no property." << endl;
-            return;
-        }
-    }
-
     //
     // create the parameter container of the the given class type
     //
-    fReport = (MReport*)cls->New();
+    *fLog << err;
+    TClass *cls = MParList::GetClass(name, fLog);
+
+    if (cls && cls->InheritsFrom(MReport::Class()))
+        fReport = static_cast<MReport*>(cls->New());
 }
 
