Index: trunk/MagicSoft/Mars/mbase/MWriteAsciiFile.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MWriteAsciiFile.cc	(revision 1175)
+++ trunk/MagicSoft/Mars/mbase/MWriteAsciiFile.cc	(revision 1176)
@@ -48,4 +48,14 @@
 ClassImp(MWriteAsciiFile);
 
+void MWriteAsciiFile::Init(const char *filename, const char *name, const char *title)
+{
+    fName  = name  ? name  : "MWriteAsciiFile";
+    fTitle = title ? title : "Task to write one container to an ascii file";
+
+    fNameFile = filename;
+
+    fOut = new ofstream(fNameFile);
+}
+
 // --------------------------------------------------------------------------
 //
@@ -61,13 +71,8 @@
 MWriteAsciiFile::MWriteAsciiFile(const char *filename, const char *contname,
                                  const char *name, const char *title)
-    : fOut(NULL), fContainer(NULL)
 {
-    fName  = name  ? name  : "MWriteAsciiFile";
-    fTitle = title ? title : "Task to write one container to an ascii file";
+    Init(filename, name, title);
 
-    fNameFile      = filename;
-    fNameContainer = contname;
-
-    fOut = new ofstream(fNameFile);
+    AddContainer(contname);
 }
 
@@ -85,13 +90,8 @@
 MWriteAsciiFile::MWriteAsciiFile(const char *filename, MParContainer *cont,
                                  const char *name, const char *title)
-    : fOut(NULL), fContainer(cont)
 {
-    fName  = name  ? name  : "MWriteAsciiFile";
-    fTitle = title ? title : "Task to write one container to an ascii file";
+    Init(filename, name, title);
 
-    fNameFile      = filename;
-    fNameContainer = cont->GetName();
-
-    fOut = new ofstream(fNameFile);
+    AddContainer(cont);
 }
 
@@ -103,4 +103,6 @@
 MWriteAsciiFile::~MWriteAsciiFile()
 {
+    fContNames.SetOwner();
+
     delete fOut;
 }
@@ -112,6 +114,22 @@
 void MWriteAsciiFile::CheckAndWrite() const
 {
-    if (fContainer->IsReadyToSave())
-        fContainer->AsciiWrite(*fOut);
+    Bool_t written = kFALSE;
+
+    MParContainer *cont = NULL;
+
+    TIter Next(&fContainer);
+
+    while ((cont=(MParContainer*)Next()))
+    {
+        if (!cont->IsReadyToSave())
+            continue;
+
+        cont->AsciiWrite(*fOut);
+        *fOut << " ";
+        written = kTRUE;
+    }
+
+    if (written)
+        *fOut << endl;
 }
 
@@ -132,15 +150,47 @@
 Bool_t MWriteAsciiFile::GetContainer(MParList *pList)
 {
-    //
-    // Try to find the container which should be stored.
-    //
-    if (fContainer)
-        return kTRUE;
+    TObject *obj = NULL;
 
-    fContainer = (MParContainer*)pList->FindObject(fNameContainer);
-    if (fContainer)
-        return kTRUE;
+    TIter Next(&fContNames);
 
-    *fLog << err << dbginf << "Cannot find parameter container '" << fContainer << "'." << endl;
-    return kFALSE;
+    while ((obj=Next()))
+    {
+        const char *name = obj->GetName();
+
+        MParContainer *cont = (MParContainer*)pList->FindObject(name);
+        if (!cont)
+        {
+            *fLog << err << dbginf << "Cannot find parameter container '" << name << "'." << endl;
+            return kFALSE;
+        }
+
+        if (!cont->InheritsFrom(MParContainer::Class()))
+        {
+            *fLog << err << dbginf << "'" << name << "' doesn't inherit from MParContainer." << endl;
+            return kFALSE;
+
+        }
+
+        AddContainer(cont);
+    }
+
+    return kTRUE;
 }
+
+// --------------------------------------------------------------------------
+//
+//
+void MWriteAsciiFile::AddContainer(const char *cname)
+{
+    TNamed *named = new TNamed(cname, "");
+    fContNames.AddLast(named);
+}
+
+// --------------------------------------------------------------------------
+//
+//
+void MWriteAsciiFile::AddContainer(MParContainer *cont)
+{
+    fContainer.AddLast(cont);
+}
+
Index: trunk/MagicSoft/Mars/mbase/MWriteAsciiFile.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MWriteAsciiFile.h	(revision 1175)
+++ trunk/MagicSoft/Mars/mbase/MWriteAsciiFile.h	(revision 1176)
@@ -4,4 +4,7 @@
 #ifndef MARS_MWriteFile
 #include "MWriteFile.h"
+#endif
+#ifndef ROOT_TObjArray
+#include <TObjArray.h>
 #endif
 
@@ -11,8 +14,8 @@
     ofstream *fOut;
 
+    TObjArray fContNames;
+    TObjArray fContainer;
+
     TString fNameFile;
-    TString fNameContainer;
-
-    MParContainer *fContainer;
 
     virtual void   CheckAndWrite() const;
@@ -21,11 +24,15 @@
     virtual const char *GetFileName() const { return fNameFile; }
 
+    void Init(const char *filename, const char *name, const char *title);
 
 public:
     MWriteAsciiFile(const char *filename, const char *contname,
                     const char *name=NULL, const char *title=NULL);
-    MWriteAsciiFile(const char *filename, MParContainer *cont,
+    MWriteAsciiFile(const char *filename, MParContainer *cont=NULL,
                     const char *name=NULL, const char *title=NULL);
     ~MWriteAsciiFile();
+
+    void AddContainer(const char *cname);
+    void AddContainer(MParContainer *cont);
 
     ClassDef(MWriteAsciiFile, 0) // Class to write one container to an ascii file
