From e4ea02720991b5e923e0b7b1045709aff0d6b0c0 Mon Sep 17 00:00:00 2001 From: Stan Seibert Date: Wed, 5 Oct 2011 17:37:26 -0400 Subject: Epic port of Chroma from units of meters/seconds/MeV to millimeters/nanoseconds/MeV in order to match GEANT4, and also avoid huge discrepancies in magnitude caused by values like 10e-9 sec. Along the way, cleaned up a few things: * Switch the PI and SPEED_OF_LIGHT constants from double to single precision. This avoid some unnecessary double precision calculations in the GPU code. * Fixed a silly problem in the definition of the spherical spiral. Now the demo detector looks totally awesome. Also wrapped it in a black surface. Demo detector now has 10055 PMTs. * Updated the test_ray_intersection data file to reflect the new units. * Fix a missing import in chroma.gpu.tools --- test/data/ray_intersection.npy | Bin 0 -> 1920080 bytes test/data/ray_intersection.npz | Bin 1920080 -> 0 bytes test/test_ray_intersection.py | 6 ++++-- 3 files changed, 4 insertions(+), 2 deletions(-) create mode 100644 test/data/ray_intersection.npy delete mode 100644 test/data/ray_intersection.npz (limited to 'test') diff --git a/test/data/ray_intersection.npy b/test/data/ray_intersection.npy new file mode 100644 index 0000000..43f51c2 Binary files /dev/null and b/test/data/ray_intersection.npy differ diff --git a/test/data/ray_intersection.npz b/test/data/ray_intersection.npz deleted file mode 100644 index fba0e40..0000000 Binary files a/test/data/ray_intersection.npz and /dev/null differ diff --git a/test/test_ray_intersection.py b/test/test_ray_intersection.py index ce364e0..8a33ac3 100644 --- a/test/test_ray_intersection.py +++ b/test/test_ray_intersection.py @@ -9,7 +9,7 @@ class TestRayIntersection(unittest.TestCase): self.context = chroma.gpu.create_cuda_context() self.module = chroma.gpu.get_cu_module('mesh.h') self.gpu_funcs = chroma.gpu.GPUFuncs(self.module) - self.box = chroma.gpu.GPUGeometry(chroma.build(chroma.make.cube())) + self.box = chroma.gpu.GPUGeometry(chroma.build(chroma.make.cube(size=1000.0))) pos, dir = chroma.project.from_film() self.pos_gpu = ga.to_gpu(chroma.gpu.to_float3(pos)) @@ -17,10 +17,12 @@ class TestRayIntersection(unittest.TestCase): testdir = os.path.dirname(os.path.abspath(__file__)) self.dx_standard = np.load(os.path.join(testdir, - 'data/ray_intersection.npz')) + 'data/ray_intersection.npy')) + def test_intersection_distance(self): dx = ga.zeros(self.pos_gpu.size, dtype=np.float32) self.gpu_funcs.distance_to_mesh(np.int32(self.pos_gpu.size), self.pos_gpu, self.dir_gpu, self.box.gpudata, dx, block=(64,1,1), grid=(self.pos_gpu.size//64+1,1)) + self.assertTrue((dx.get() == self.dx_standard).all()) def tearDown(self): -- cgit