diff --git a/Geo/SPoint3.h b/Geo/SPoint3.h
index bb1102a40b2cc9e794c1714966fc8d6038e49af4..120643bfab4ca981a8537c870df02ba4791e6568 100644
--- a/Geo/SPoint3.h
+++ b/Geo/SPoint3.h
@@ -44,6 +44,8 @@ class SPoint3 {
     if (P[2] < p.P[2]) return true;
     return false;
   }
+  const double* data() const{return P;}
+  double* data() {return P;}
 };
 
 inline SPoint3 operator + (const SPoint3 &a, const SPoint3 &b)
diff --git a/Geo/STensor3.h b/Geo/STensor3.h
index 11cf2f040d2bfb0a8c3d96e00654da735aa7cb30..b9ff4904ebb886fe5e07562de1226d80465edbf9 100644
--- a/Geo/STensor3.h
+++ b/Geo/STensor3.h
@@ -220,6 +220,8 @@ class STensor3 {
   inline double get_m13(){ return _val[2]; }
   inline double get_m23(){ return _val[5]; }
   inline double get_m33(){ return _val[8]; }
+  inline const double* data() const {return _val;}
+  inline double* data() {return _val;}
   void getMat(fullMatrix<double> &mat) const
   {
     for (int i = 0; i < 3; i++){
diff --git a/Geo/SVector3.h b/Geo/SVector3.h
index 532389c796801c6c423760a3f0ad356823b55737..84cd8bce50c651c9f3b2c3dd30c9b93017fd6e55 100644
--- a/Geo/SVector3.h
+++ b/Geo/SVector3.h
@@ -89,7 +89,8 @@ class SVector3 {
       return 2;
     }
   }
-
+  const double* data() const {return P.data();}
+  double* data() {return P.data();}
 };
 
 inline double dot(const SVector3 &a, const SVector3 &b)