Index: trunk/MagicSoft/Mars/mbase/MEvtLoop.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 860)
+++ trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 867)
@@ -105,8 +105,5 @@
 
     if (fLog != &gLog)
-    {
         fParList ->SetLogStream(fLog);
-        fTaskList->SetLogStream(fLog);
-    }
 
     //
@@ -180,5 +177,4 @@
         << " --> " << (maxcnt<0?dummy:maxcnt)/clock.CpuTime() << " Events/s"
         << endl << endl;
-
 }
 
@@ -188,24 +184,27 @@
 //  for developers use only!
 //
-void MEvtLoop::PostProcess() const
+Bool_t MEvtLoop::PostProcess() const
 {
     //
     //  execute the post process of all tasks
     //
-    fTaskList->PostProcess();
-}
-
-// --------------------------------------------------------------------------
-//
-// See class description above.
-//
-void MEvtLoop::Eventloop(Int_t maxcnt, const char *tlist)
-{
-    if (!PreProcess(tlist))
-        return;
-
-    Process(maxcnt);
-
-    PostProcess();
-}
-
+    return fTaskList->PostProcess();
+}
+
+// --------------------------------------------------------------------------
+//
+//  See class description above.
+//
+Bool_t MEvtLoop::Eventloop(Int_t maxcnt, const char *tlist)
+{
+    Bool_t rc = PreProcess();
+
+    if (rc)
+        Process(maxcnt);
+
+    if (!PostProcess())
+        return kFALSE;
+
+    return rc;
+}
+
Index: trunk/MagicSoft/Mars/mbase/MEvtLoop.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MEvtLoop.h	(revision 860)
+++ trunk/MagicSoft/Mars/mbase/MEvtLoop.h	(revision 867)
@@ -35,7 +35,7 @@
     Bool_t PreProcess(const char *tlist="MTaskList");
     void   Process(Int_t maxcnt) const;
-    void   PostProcess() const;
+    Bool_t PostProcess() const;
 
-    void Eventloop(Int_t maxcnt=-1, const char *tlist="MTaskList");
+    Bool_t Eventloop(Int_t maxcnt=-1, const char *tlist="MTaskList");
 
     ClassDef(MEvtLoop, 0) // Class to execute the tasks in a tasklist
Index: trunk/MagicSoft/Mars/mbase/MParList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 860)
+++ trunk/MagicSoft/Mars/mbase/MParList.cc	(revision 867)
@@ -199,5 +199,6 @@
 //  after the last appearance of a semicolon is stripped to get the
 //  Name of the Class. Normally this is used to number your objects.
-//  "Name;1", "Name;2", ...
+//  "Name;1", "Name;2", ... If a semicolon is detected leading dots
+//  are stripped from the object-name (eg. "name;5.")
 //
 MParContainer *MParList::FindCreateObj(const char *classname, const char *objname)
@@ -223,6 +224,18 @@
     const char *semicolon = strrchr(cname, ';');
 
+    TString oname(objname);
+
     if (semicolon)
+    {
         cname.Remove(semicolon-cname);
+
+        //
+        // Remove leading dots from objectname (eg. "MMcTrig;5.")
+        //
+        Int_t sz = oname.Sizeof()-2;
+
+        while (sz>=0 && oname[sz]=='.')
+            oname.Remove(sz--);
+    }
 
     //
@@ -230,5 +243,5 @@
     // in the List. If we can find one we are done.
     //
-    MParContainer *pcont = (MParContainer*)FindObject(objname);
+    MParContainer *pcont = (MParContainer*)FindObject(oname);
 
     if (pcont)
@@ -238,5 +251,5 @@
     // if object is not existing in the list try to create one
     //
-    *fLog << dbginf << "Object '" << objname << "' of type '" << cname << "' not found... creating." << endl;
+    *fLog << dbginf << "Object '" << oname << "' of type '" << cname << "' not found... creating." << endl;
 
     //
@@ -263,5 +276,5 @@
     // set the new object name of the object
     //
-    pcont->SetName(objname);
+    pcont->SetName(oname);
 
     //
Index: trunk/MagicSoft/Mars/mbase/MReadTree.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MReadTree.cc	(revision 860)
+++ trunk/MagicSoft/Mars/mbase/MReadTree.cc	(revision 867)
@@ -173,5 +173,5 @@
             // we cannot proceed reading this branch
             //
-            *fLog << "MReadTree::PreProcess - Warning: Class '" << name << "' not existing in dictionary. Branch skipped." << endl;
+            *fLog << dbginf << "Warning: Class '" << name << "' not existing in dictionary. Branch skipped." << endl;
             continue;
         }
Index: trunk/MagicSoft/Mars/mbase/MTask.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTask.h	(revision 860)
+++ trunk/MagicSoft/Mars/mbase/MTask.h	(revision 867)
@@ -22,6 +22,8 @@
     const MFilter *fFilter;
 
+    Bool_t fIsPreprocessed; // Indicates the success of the PreProcessing (set by MTaskList)
+
 public:
-    MTask() : fFilter(NULL) {}
+    MTask() : fFilter(NULL), fIsPreprocessed(kFALSE) {}
     ~MTask()
     {
@@ -30,4 +32,7 @@
     const MFilter *GetFilter() const { return fFilter; }
     void SetFilter(const MFilter *filter) { fFilter=filter; }
+
+    Bool_t IsPreprocessed() const { return fIsPreprocessed; }
+    void SetIsPreprocessed(Bool_t state=kTRUE) { fIsPreprocessed = state; }
 
     virtual Bool_t PreProcess(MParList *pList);
Index: trunk/MagicSoft/Mars/mbase/MTaskList.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTaskList.cc	(revision 860)
+++ trunk/MagicSoft/Mars/mbase/MTaskList.cc	(revision 867)
@@ -193,4 +193,6 @@
         if (!task->PreProcess(fParList))
             return kFALSE;
+
+        task->SetIsPreprocessed();
     }
 
@@ -307,4 +309,7 @@
     while ( (task=(MTask*)Next()) )
     {
+        if (!task->IsPreprocessed())
+            continue;
+
         *fLog << task->GetName() << "... " << flush;
 
