Index: trunk/MagicSoft/Mars/mbase/MEvtLoop.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 1086)
@@ -221,6 +221,4 @@
     *fLog << all << "Ready!" << endl << endl;
 
-    clock.Print();
-
     *fLog << dec << endl << "CPU  - "
         << "Time: " << clock.CpuTime() << "s"
Index: trunk/MagicSoft/Mars/mbase/MGList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MGList.cc	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MGList.cc	(revision 1086)
@@ -38,8 +38,35 @@
 
 #include <TClass.h>
+#include <TGClient.h>
 #include <TGWidget.h>
+#include <TGPicture.h>
 
 
 ClassImp(MGList);
+
+// --------------------------------------------------------------------------
+//
+//  Before destroying the list with all its contents free all TGPicture
+//  objects in the list.
+//
+#include <TRefCnt.h>
+
+MGList::~MGList()
+{
+    TObject *obj;
+    TIter Next(this);
+    while ((obj=Next()))
+    {
+        if (!obj->InheritsFrom(TGPicture::Class()))
+            continue;
+
+        //
+        // Remove the object first. Otherwise we would remove
+        // a non existing object...
+        //
+        Remove(obj);
+        gClient->FreePicture((TGPicture*)obj);
+    }
+}
 
 // --------------------------------------------------------------------------
@@ -137,4 +164,63 @@
 // --------------------------------------------------------------------------
 //
+//  Adds the picture physically to the list. The list takes care of that
+//   - The picture is freed as often as it was retrieved from gClient
+//
+void MGList::AddPicture(const TGPicture *pic)
+{
+    //
+    // Check whether the picture exists
+    //
+    if (!pic)
+    {
+        cout << "Warning: Requested picture not found... ignored." << endl;
+        return;
+    }
+
+    //
+    // Add the picture to the list
+    //
+    TList::Add(const_cast<TGPicture*>(pic));
+}
+
+// --------------------------------------------------------------------------
+//
+//  This gets a picture from the picture pool of the TGClient-object.
+//  The pictures are freed automatically in the dstructor of the list.
+//  The picture counts itself how often it got used, so that only
+//  the first call to GetPicture will craete it and the last call to
+//  FreePicture will destroy it. If you access the picture only via
+//  MGList::GetPicture you don't have to care about.
+//
+//  Don't try to call FreePicture by yourself for a picture gotten by
+//  GetPicture. This is independant of the kIsOwner bit.
+//
+const TGPicture *MGList::GetPicture(const char *name)
+{
+    const TGPicture *pic = gClient->GetPicture(name);
+    AddPicture(pic);
+    return pic;
+}
+
+// --------------------------------------------------------------------------
+//
+//  This gets a picture from the picture pool of the TGClient-object.
+//  The pictures are freed automatically in the dstructor of the list.
+//  The picture counts itself how often it got used, so that only
+//  the first call to GetPicture will craete it and the last call to
+//  FreePicture will destroy it. If you access the picture only via
+//  MGList::GetPicture you don't have to care about.
+//
+//  Don't try to call FreePicture by yourself for a picture gotten by
+//  GetPicture. This is independant of the kIsOwner bit.
+//
+const TGPicture *MGList::GetPicture(const char *name, Int_t width, Int_t height)
+{
+    const TGPicture *pic = gClient->GetPicture(name, width, height);
+    AddPicture(pic);
+    return pic;
+}
+// --------------------------------------------------------------------------
+//
 //  Search the list for a object derived from TGidget which has the given
 //  widget id. Returns a pointer to this object otherwise NULL.
Index: trunk/MagicSoft/Mars/mbase/MGList.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MGList.h	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MGList.h	(revision 1086)
@@ -7,4 +7,5 @@
 
 class TGWidget;
+class TGPicture;
 
 class MGList : public TList
@@ -14,10 +15,15 @@
     Bool_t    IsExisting(TObject *obj) const;
 
+    void      AddPicture(const TGPicture *pic);
+
 public:
     MGList() : TList() {}
+    virtual ~MGList();
 
     void Add(TObject *obj);
     void Add(TObject *obj, Option_t *opt);
 
+    const TGPicture *GetPicture(const char *name);
+    const TGPicture *GetPicture(const char *name, Int_t width, Int_t height);
 
     TObject *FindWidget(Int_t id) const;
Index: trunk/MagicSoft/Mars/mbase/MParContainer.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParContainer.h	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MParContainer.h	(revision 1086)
@@ -22,63 +22,4 @@
 class ofstream;
 class ifstream;
-/*
-class MParContainer : public TObject
-{
-private:
-    void Init(const char *name, const char *title)
-    {
-        fName = new TString;
-        (*fName) = name;
-        fTitle = new TString;
-        (*fTitle) = title;
-
-        cout << " <***> " << flush;
-    }
-
-protected:
-    MLog    *fLog;         //! The general log facility for this object, initialized with the global object
-
-    TString *fName;        //! parameter container identifier (name)
-    TString *fTitle;       //! parameter container title
-
-    Bool_t   fReadyToSave; //! should be set to true if the contents of the container is changed somehow
-
-public:
-    MParContainer(const char *name="", const char *title="") : fLog(&gLog), fReadyToSave(kFALSE) { Init(name, title); }
-    MParContainer(const TString &name, const TString &title) : fLog(&gLog), fReadyToSave(kFALSE) { Init(name, title); }
-    MParContainer(const MParContainer &named);
-    MParContainer& operator=(const MParContainer& rhs);
-
-    void SetLogStream(MLog *lg) { fLog = lg; }
-
-    virtual ~MParContainer() { 
-      //delete fName; delete fTitle;
-    }
-    virtual TObject *Clone(const char *newname) const;
-    virtual Int_t    Compare(const TObject *obj) const;
-    virtual void     Copy(TObject &named);
-    virtual void     FillBuffer(char *&buffer);
-    virtual const char  *GetName() const {return fName->Data();}
-    virtual const char  *GetTitle() const {return fTitle->Data();}
-    virtual ULong_t  Hash() { return fName->Hash(); }
-    virtual Bool_t   IsSortable() const { return kTRUE; }
-    virtual void     SetName(const char *name); // *MENU*
-    virtual void     SetObject(const char *name, const char *title);
-    virtual void     SetTitle(const char *title=""); // *MENU*
-    virtual void     ls(Option_t *option="") const;
-    virtual void     Print(Option_t *option="") const;
-    virtual Int_t    Sizeof() const;
-
-    virtual void     Reset() {};
-
-    virtual Bool_t IsReadyToSave() { return fReadyToSave; }
-    virtual void   SetReadyToSave(Bool_t flag=kTRUE) { fReadyToSave=flag; }
-
-    virtual void AsciiRead(ifstream &fin);
-    virtual void AsciiWrite(ofstream &fout) const;
-
-    ClassDef(MParContainer, 0)  //The basis for all parameter containers
-};
-*/
 
 class MParContainer : public TObject
Index: trunk/MagicSoft/Mars/mbase/MReadTree.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MReadTree.h	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MReadTree.h	(revision 1086)
@@ -24,5 +24,5 @@
     TList  *fNotify;           // List of TObjects to notify when switching files
 
-    TGProgressBar *fProgress;  // Possible display of status
+    TGProgressBar  *fProgress; //! Possible display of status
 
     void SetBranchStatus(const TList *list, Bool_t status);
@@ -32,4 +32,6 @@
     void EnableBranches(MParList *plist);
     void EnableBranchChoosing();
+
+    virtual void SetReadyToSave(Bool_t flag=kTRUE);
 
     enum { kIsOwner = BIT(14) };
@@ -58,5 +60,4 @@
     virtual void   AddNotify(TObject *obj);
     virtual void   SetOwner(Bool_t flag=kTRUE);
-    virtual void   SetReadyToSave(Bool_t flag=kTRUE);
     virtual void   Print(Option_t *opt="") const;
 
Index: trunk/MagicSoft/Mars/mbase/MTask.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTask.cc	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MTask.cc	(revision 1086)
@@ -16,5 +16,5 @@
 !
 !
-!   Author(s): Thomas Bretz  12/2000 (tbretz@uni-sw.gwdg.de)
+!   Author(s): Thomas Bretz  12/2000 <mailto:tbretz@uni-sw.gwdg.de>
 !
 !   Copyright: MAGIC Software Development, 2000-2001
@@ -67,7 +67,4 @@
 #include "MTask.h"
 
-#include <TMethod.h>
-#include <TOrdCollection.h>
-
 #include "MLog.h"
 #include "MLogManip.h"
@@ -227,5 +224,5 @@
 void MTask::PrintStatistics(const Int_t lvl) const
 {
-    *fLog << setw(lvl) << " " << GetDescriptor() << "\t";
+    *fLog << all << setw(lvl) << " " << GetDescriptor() << "\t";
     *fLog << dec << fNumExecutions << endl;
 }
Index: trunk/MagicSoft/Mars/mbase/MTaskList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTaskList.cc	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MTaskList.cc	(revision 1086)
@@ -240,5 +240,5 @@
     }
 
-    *fLog << endl;
+    *fLog << all << endl;
 
     return kTRUE;
Index: trunk/MagicSoft/Mars/mbase/MWriteRootFile.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MWriteRootFile.cc	(revision 1085)
+++ trunk/MagicSoft/Mars/mbase/MWriteRootFile.cc	(revision 1086)
@@ -72,5 +72,11 @@
     //
     fBranches.SetOwner();
-    fTrees.SetOwner();
+
+    //
+    // Believing the root user guide, TTree instanced are owned by the
+    // directory (file) in which they are. This means we don't have to
+    // care about their destruction.
+    //
+    //fTrees.SetOwner();
 
     //
@@ -118,11 +124,12 @@
 void MWriteRootFile::Print(Option_t *) const
 {
-    cout << all << " File: " << GetFileName() << endl;
-    cout << setfill('-') << setw(strlen(GetFileName())+8) << "" << endl;
-
-    TTree *t;
+    *fLog << all << " File: " << GetFileName() << endl;
+    *fLog << setfill('-') << setw(strlen(GetFileName())+8) << "" << endl;
+    *fLog << setfill(' '); // FIXME: not resetting setfill results in strange output???
+
+    TTree *t = NULL;
     TIter Next(&fTrees);
     while ((t=(TTree*)Next()))
-        cout << t->GetName() << ": \t" << t->GetEntries() << " entries." << endl;
+        *fLog << t->GetName() << ": \t" << t->GetEntries() << " entries." << endl;
 }
 
