diff options
Diffstat (limited to 'threadtest.py')
-rw-r--r-- | threadtest.py | 26 |
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: |