Index: trunk/MagicSoft/Mars/mbase/MEvtLoop.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 590)
+++ trunk/MagicSoft/Mars/mbase/MEvtLoop.cc	(revision 599)
@@ -46,7 +46,10 @@
 }
 
-void MEvtLoop::Eventloop(Int_t maxcnt, const char *ftasks)
+Bool_t MEvtLoop::PreProcess(const char *tlist)
 {
-    // See class description above.
+    //
+    // The proprocessing part of the eventloop. Be careful, this is
+    // for developers use only!
+    //
 
     //
@@ -56,5 +59,5 @@
     {
         cout << "MEvtLoop::Eventloop - Error: Parlist not initialized." << endl;
-        return;
+        return kFALSE;
     }
 
@@ -63,9 +66,9 @@
     //  the default name is "MTaskList"
     //
-    MTaskList *tasks = (MTaskList*)fParlist->FindObject(ftasks);
-    if (!tasks)
+    fTaskList = (MTaskList*)fParlist->FindObject(tlist);
+    if (!fTaskList)
     {
-        cout << "MEvtLoop::Eventloop - Error: Cannot find tasklist '" << ftasks << "' in parameter list." << endl;
-        return;
+        cout << "MEvtLoop::Eventloop - Error: Cannot find tasklist '" << tlist << "' in parameter list." << endl;
+        return kFALSE;
     }
 
@@ -75,9 +78,19 @@
     //  the parameter list
     //
-    if (!tasks->PreProcess(fParlist))
+    if (!fTaskList->PreProcess(fParlist))
     {
         cout << "Error detected while PreProcessing" << endl;
-        return;
+        return kFALSE;
     }
+
+    return kTRUE;
+}
+
+void MEvtLoop::Process(Int_t maxcnt) const
+{
+    //
+    // The processing part of the eventloop. Be careful, this is
+    // for developers use only!
+    //
 
     //
@@ -108,7 +121,7 @@
     //
     if (maxcnt<0)
-        while (tasks->Process() && ++dummy);
+        while (fTaskList->Process() && ++dummy);
     else
-        while (tasks->Process() && dummy--);
+        while (fTaskList->Process() && dummy--);
 
     //
@@ -127,8 +140,29 @@
         << endl << endl;
 
+}
+
+void MEvtLoop::PostProcess() const
+{
+    //
+    // The postprocessing part of the eventloop. Be careful, this is
+    // for developers use only!
+    //
+
     //
     //  execute the post process of all tasks
     //
-    tasks->PostProcess();
+    fTaskList->PostProcess();
 }
 
+void MEvtLoop::Eventloop(Int_t maxcnt, const char *tlist)
+{
+    // See class description above.
+
+    if (!PreProcess(tlist))
+        return;
+
+    Process(maxcnt);
+
+    PostProcess();
+}
+
Index: trunk/MagicSoft/Mars/mbase/MEvtLoop.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MEvtLoop.h	(revision 590)
+++ trunk/MagicSoft/Mars/mbase/MEvtLoop.h	(revision 599)
@@ -15,4 +15,5 @@
 
 class MParList;
+class MTaskList;
 
 class MEvtLoop
@@ -20,4 +21,5 @@
 private:
     MParList  *fParlist;
+    MTaskList *fTaskList;
 
 public:
@@ -27,4 +29,8 @@
     void SetParList(MParList *p);
 
+    Bool_t PreProcess(const char *tlist="MTaskList");
+    void   Process(Int_t maxcnt) const;
+    void   PostProcess() const;
+
     void Eventloop(Int_t maxcnt=-1, const char *tlist="MTaskList");
 
