Index: trunk/MagicSoft/Mars/mdata/MDataArray.cc
===================================================================
--- trunk/MagicSoft/Mars/mdata/MDataArray.cc	(revision 2109)
+++ trunk/MagicSoft/Mars/mdata/MDataArray.cc	(revision 2114)
@@ -35,4 +35,6 @@
 #include <fstream.h>
 
+#include <TVector.h>
+
 #include "MLog.h"
 #include "MLogManip.h"
@@ -89,7 +91,7 @@
 // Return the data value of the i-th entry
 //
-Double_t MDataArray::operator()(Int_t i)
-{
-    return ((MData*)fList[i])->GetValue();
+Double_t MDataArray::operator()(Int_t i) const
+{
+    return (*this)[i].GetValue();
 }
 
@@ -189,2 +191,13 @@
     return str;
 }
+
+void MDataArray::GetData(TVector &v) const
+{
+    Double_t ncols = GetNumEntries();
+
+    v.ResizeTo(ncols);
+
+    // same as: for (int i=0; i<ncols; i++) <should be faster>
+    while (ncols--)
+        v(ncols) = (*this)(ncols);
+}
Index: trunk/MagicSoft/Mars/mdata/MDataArray.h
===================================================================
--- trunk/MagicSoft/Mars/mdata/MDataArray.h	(revision 2109)
+++ trunk/MagicSoft/Mars/mdata/MDataArray.h	(revision 2114)
@@ -14,4 +14,6 @@
 #include <TObjArray.h>
 #endif
+
+class TVector;
 
 class MData;
@@ -31,5 +33,12 @@
 
     MData &operator[](Int_t i) const;
-    Double_t operator()(Int_t i);
+    Double_t operator()(Int_t i) const;
+
+    void GetData(TVector &v) const;
+
+    void operator>>(TVector &v) const
+    {
+        GetData(v);
+    }
 
     TString GetRule(int i) const;
