diff --git a/src/geomtree/geomtree.py b/src/geomtree/geomtree.py
index 2e4515d7386ad5def634221f137d8859a44b57a7..16a8a04b025a89e79b324d5bc660d7515258740e 100644
--- a/src/geomtree/geomtree.py
+++ b/src/geomtree/geomtree.py
@@ -8,14 +8,16 @@ from scipy.linalg import svd, det
 
 class GeomTree(Tree):
 
-    __slots__ = 'my_geometry'
+    __slots__ = 'my_geometry', 'my_subtree_geometry'
 
     def __init__(self,tf=None):
         super().__init__()
         if tf is not None:
             self.my_geometry = tf
+            self.compute_subtree_geometry()
         else:
             self.my_geometry = AffineTransform()
+            self.compute_subtree_geometry()
 
     def get_actor(self,axis=False,alpha=0.95,opacity=0.2,show_ellipsoid=True):
         actors = []
@@ -50,6 +52,15 @@ class GeomTree(Tree):
             geometry.update(child.get_geometry())
         return geometry
 
+    def compute_subtree_geometry(self):
+        from geomtree.point_cloud import PointCloud
+        pts=[]
+        qr = np.sqrt(chi2.ppf(0.95, 3))
+        for st in self.list_of_subtrees():
+            tf=st.my_geometry
+            pts.append(np.array([tf.translation + qr*a for a in tf.linear.T]+[tf.translation - qr*a for a in tf.linear.T]))
+        self.subtree_geometry = minimal_volume_enclosing_ellipsoid(PointCloud(pts))
+
 def align_centers(t1,t2,tree_type="unordered", rmsd=True):
     """
     If the two trees are isomorphic, find the best alignment of centers of the two trees via Kabsch algorithm