From 7df896b90d3edf69cacadfea93ed158408d68fa7 Mon Sep 17 00:00:00 2001
From: Johannes Schumann <johannes.schumann@fau.de>
Date: Fri, 11 Jun 2021 17:45:01 +0200
Subject: [PATCH] Fix for spherical geometry

---
 km3buu/geometry.py            | 2 +-
 km3buu/tests/test_geometry.py | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/km3buu/geometry.py b/km3buu/geometry.py
index 3414955..fa2fe44 100644
--- a/km3buu/geometry.py
+++ b/km3buu/geometry.py
@@ -128,7 +128,7 @@ class SphericalVolume(DetectorVolume):
         return 4 / 3 * np.pi * np.power(self._radius, 3)
 
     def random_pos(self):
-        r = np.power(self._radius, 1 / 3)
+        r = self._radius * np.power(np.random.random(), 1 / 3)
         phi = np.random.uniform(0, np.pi)
         cosTheta = np.random.uniform(-1, 1)
         pos_x = r * np.cos(phi) * np.sqrt(1 - np.power(cosTheta, 2))
diff --git a/km3buu/tests/test_geometry.py b/km3buu/tests/test_geometry.py
index 9894c47..292cac2 100644
--- a/km3buu/tests/test_geometry.py
+++ b/km3buu/tests/test_geometry.py
@@ -13,6 +13,7 @@ __status__ = "Development"
 import unittest
 
 from km3buu.geometry import *
+import numpy as np
 
 
 class TestGeneralGeometry(unittest.TestCase):
@@ -38,6 +39,8 @@ class TestSphere(unittest.TestCase):
             assert pos[0] < 22.0
             assert pos[1] < 22.0
             assert pos[2] < 22.0
+            radius = np.sqrt(np.sum(np.power((np.array(pos) - 2), 2)))
+            assert radius <= 20
 
 
 class TestCan(unittest.TestCase):
-- 
GitLab