summaryrefslogtreecommitdiff
path: root/threadtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'threadtest.py')
-rw-r--r--threadtest.py26
1 files changed, 13 insertions, 13 deletions
diff --git a/threadtest.py b/threadtest.py
index 91a1857..d7b9d7c 100644
--- a/threadtest.py
+++ b/threadtest.py
@@ -1,6 +1,5 @@
from gputhread import *
from Queue import Queue
-from detectors import LBNE
from sample import uniform_sphere
import numpy as np
from pycuda import gpuarray
@@ -11,7 +10,7 @@ from histogram import Histogram
jobs = Queue()
output = Queue()
-def create_job(position=(0,0,0), nphotons=1000, max_steps=10):
+def create_job(position=(0,0,0), nphotons=5000, max_steps=10):
positions = np.tile(position, nphotons).reshape((nphotons, 3))
directions = uniform_sphere(nphotons)
polarizations = uniform_sphere(nphotons)
@@ -23,14 +22,14 @@ def create_job(position=(0,0,0), nphotons=1000, max_steps=10):
return Job(positions, directions, wavelengths, polarizations, times,
states, last_hit_triangles, max_steps)
-def generate_event(position=(0,0,0), nphotons=1000):
+def generate_event(detector, position=(0,0,0), nphotons=5000):
jobs.put(create_job(position, nphotons))
jobs.join()
job = output.get()
last_hit_triangles = job.last_hit_triangles
- solids = lbne.solid_id[last_hit_triangles]
+ solids = detector.solid_id[last_hit_triangles]
solids[last_hit_triangles == -1] = -1
surface_absorbed = job.states == 2
@@ -38,7 +37,7 @@ def generate_event(position=(0,0,0), nphotons=1000):
print 'state %2i %i' % (i, len(job.states[job.states == i]))
event_times = []
- for i in lbne.pmtids:
+ for i in detector.pmtids:
photons = np.logical_and(solids == i, surface_absorbed)
hit_times = job.times[photons]
@@ -50,7 +49,7 @@ def generate_event(position=(0,0,0), nphotons=1000):
return event_times
-def likelihood(event_times, position=(0,0,0), nphotons=1000, neval=100):
+def likelihood(detector, event_times, position=(0,0,0), nphotons=5000, neval=100):
for i in range(neval):
jobs.put(create_job(position, nphotons))
jobs.join()
@@ -60,11 +59,11 @@ def likelihood(event_times, position=(0,0,0), nphotons=1000, neval=100):
job = output.get()
last_hit_triangles = job.last_hit_triangles
- solids = lbne.solid_id[job.last_hit_triangles]
+ solids = detector.solid_id[job.last_hit_triangles]
solids[last_hit_triangles == -1] = -1
surface_absorbed = job.states == 2
- for j in lbne.pmtids:
+ for j in detector.pmtids:
pmt_photons = solids == j
photons = np.logical_and(pmt_photons, surface_absorbed)
@@ -108,22 +107,23 @@ if __name__ == '__main__':
parser.add_option('-n', type='int', dest='nblocks', default=64)
options, args = parser.parse_args()
- lbne = LBNE()
- lbne.build(bits=options.nbits)
+ from detectors import minilbne
+
+ minilbne.build(bits=options.nbits)
cuda.init()
gputhreads = []
for i in range(options.ndevices):
- gputhreads.append(GPUThread(i, lbne, jobs, output, options.nblocks))
+ gputhreads.append(GPUThread(i, minilbne, jobs, output, options.nblocks))
gputhreads[-1].start()
try:
- event_times = generate_event()
+ event_times = generate_event(minilbne)
for z in np.linspace(-1.0, 1.0, 100):
t0 = time.time()
- log_likelihood = likelihood(event_times, (z,0,0))
+ log_likelihood = likelihood(minilbne, event_times, (z,0,0))
elapsed = time.time() - t0
print 'z = %5.2f, likelihood = %s, elapsed %.2f sec' % (z, log_likelihood, elapsed)
finally: