Index: trunk/MagicSoft/Mars/Changelog
===================================================================
--- trunk/MagicSoft/Mars/Changelog	(revision 5874)
+++ trunk/MagicSoft/Mars/Changelog	(revision 5875)
@@ -47,4 +47,15 @@
      - added some comment about file version
 
+   * mbase/MFilter.h:
+     - implemented new virtual function GetDataMember like in MData
+
+   * mbase/MTask.[h,cc]:
+     - when filter is added ass GetDataMember to branch list (should be
+       obsolete, because filter is in the tasklist, but it should not hurt)
+
+   * mfbase/MF.[h,cc], mfbase/MFDataChain.[h,cc], mfbase/MFDataMember.[h,cc],
+     mfbase/MFilterList.[h,cc]:
+     - implemented new function GetDataMember
+
 
 
@@ -64,4 +75,6 @@
    * callisto.rc
      - fixed default weights files for pedestal extraction for cosmcis
+
+
 
  2005/01/16 Markus Gaug
Index: trunk/MagicSoft/Mars/mbase/MFilter.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MFilter.h	(revision 5874)
+++ trunk/MagicSoft/Mars/mbase/MFilter.h	(revision 5875)
@@ -19,4 +19,5 @@
 
     virtual TString GetRule() const;
+    virtual TString GetDataMember() const { return ""; }
 
     Bool_t IsConditionTrue() const { return fInverted ? !IsExpressionTrue() : IsExpressionTrue(); }
Index: trunk/MagicSoft/Mars/mbase/MTask.cc
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTask.cc	(revision 5874)
+++ trunk/MagicSoft/Mars/mbase/MTask.cc	(revision 5875)
@@ -132,4 +132,11 @@
 }
 
+void MTask::SetFilter(MFilter *filter)
+{
+    fFilter=filter;
+    if (filter)
+        AddToBranchList(filter->GetDataMember());
+}
+
 // --------------------------------------------------------------------------
 //
Index: trunk/MagicSoft/Mars/mbase/MTask.h
===================================================================
--- trunk/MagicSoft/Mars/mbase/MTask.h	(revision 5874)
+++ trunk/MagicSoft/Mars/mbase/MTask.h	(revision 5875)
@@ -73,5 +73,5 @@
 
     // Filter functions
-    virtual void SetFilter(MFilter *filter) { fFilter=filter; }
+    virtual void SetFilter(MFilter *filter);
     const MFilter *GetFilter() const        { return fFilter; }
     MFilter *GetFilter()                    { return fFilter; } // for MContinue only
Index: trunk/MagicSoft/Mars/mfbase/MF.cc
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MF.cc	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MF.cc	(revision 5875)
@@ -391,4 +391,15 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// Return a comma seperated list of all data members used in the chain.
+// This is mainly used in MTask::AddToBranchList
+//
+TString MF::GetDataMember() const
+{
+    *fLog << dbg << "MF::GetDataMember" << endl;
+    return fF->GetDataMember();
+}
+
 void MF::StreamPrimitive(ofstream &out) const
 {
Index: trunk/MagicSoft/Mars/mfbase/MF.h
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MF.h	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MF.h	(revision 5875)
@@ -38,4 +38,5 @@
 
     TString GetRule() const { return fF ? fF->GetRule() : MFilter::GetRule(); }
+    TString GetDataMember() const;
 
     Bool_t IsExpressionTrue() const;
Index: trunk/MagicSoft/Mars/mfbase/MFDataChain.cc
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MFDataChain.cc	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MFDataChain.cc	(revision 5875)
@@ -142,4 +142,8 @@
 }
 
+// --------------------------------------------------------------------------
+//
+//  Crahses if default constructor called.
+//
 void MFDataChain::StreamPrimitive(ofstream &out) const
 {
@@ -157,9 +161,11 @@
 }
 
+// --------------------------------------------------------------------------
+//
+//  Crahses if default constructor called.
+//
 TString MFDataChain::GetRule() const
 {
-    TString ret;// = "{";
-    ret += fData.GetRule();
-    //ret += "}";
+    TString ret(fData.GetRule());
     ret += fFilterType==kELowerThan?"<":">";
 
@@ -169,2 +175,14 @@
     return ret;
 }
+
+// --------------------------------------------------------------------------
+//
+//  Crahses if default constructor called.
+//
+TString MFDataChain::GetDataMember() const
+{
+    TString ret(fData.GetDataMember());
+    ret += ",";
+    ret += fCond->GetDataMember();
+    return ret;
+}
Index: trunk/MagicSoft/Mars/mfbase/MFDataChain.h
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MFDataChain.h	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MFDataChain.h	(revision 5875)
@@ -44,5 +44,7 @@
 
     void Print(Option_t *opt = "") const;
+
     TString GetRule() const;
+    TString GetDataMember() const;
 
     void SetVariables(const TArrayD &arr)
Index: trunk/MagicSoft/Mars/mfbase/MFDataMember.cc
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MFDataMember.cc	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MFDataMember.cc	(revision 5875)
@@ -167,2 +167,7 @@
     return ret+str.Strip(TString::kBoth);
 }
+
+TString MFDataMember::GetDataMember() const
+{
+    return fData.GetDataMember();
+}
Index: trunk/MagicSoft/Mars/mfbase/MFDataMember.h
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MFDataMember.h	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MFDataMember.h	(revision 5875)
@@ -37,5 +37,7 @@
 
     void Print(Option_t *opt = "") const;
+
     TString GetRule() const;
+    TString GetDataMember() const;
 
     void SetVariables(const TArrayD &arr) { fData.SetVariables(arr); }
Index: trunk/MagicSoft/Mars/mfbase/MFilterList.cc
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MFilterList.cc	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MFilterList.cc	(revision 5875)
@@ -232,4 +232,6 @@
     *fLog << "Done." << endl;
 
+    AddToBranchList(filter->GetDataMember());
+
     return kTRUE;
 }
@@ -415,4 +417,27 @@
 }
 
+// --------------------------------------------------------------------------
+//
+// Return the data members existing in this array in a comma-seperated list
+// (This is mainly used for MTask::AddToBranchList)
+//
+TString MFilterList::GetDataMember() const
+{
+    TString str;
+
+    TIter Next(&fFilters);
+    MFilter *filter = NULL;
+    while ((filter=(MFilter*)Next()))
+    {
+        if (filter->GetDataMember().IsNull())
+            continue;
+
+        str += ",";
+        str += filter->GetDataMember();
+    }
+    return str;
+}
+
+
 void MFilterList::SetVariables(const TArrayD &arr)
 {
Index: trunk/MagicSoft/Mars/mfbase/MFilterList.h
===================================================================
--- trunk/MagicSoft/Mars/mfbase/MFilterList.h	(revision 5874)
+++ trunk/MagicSoft/Mars/mfbase/MFilterList.h	(revision 5875)
@@ -49,6 +49,8 @@
 
     void Print(Option_t *opt = "") const;
+
     TString GetRule() const { return GetRule(""); }
     TString GetRule(Option_t *opt) const;
+    TString GetDataMember() const;
 
     Int_t PreProcess(MParList *pList);
