summaryrefslogtreecommitdiff
path: root/sim.py
diff options
context:
space:
mode:
Diffstat (limited to 'sim.py')
-rwxr-xr-xsim.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/sim.py b/sim.py
index 7ba6472..7c9720a 100755
--- a/sim.py
+++ b/sim.py
@@ -119,7 +119,7 @@ class Simulation(object):
return self.gpu_pdf.get_pdfs()
- def eval_pdf(self, event_channels, iterable, min_twidth, trange, min_qwidth, qrange, min_bin_content=20, nreps=1, time_only=True):
+ def eval_pdf(self, event_channels, iterable, min_twidth, trange, min_qwidth, qrange, min_bin_content=20, nreps=1, ndaq=1, time_only=True):
"""Returns tuple: 1D array of channel hit counts, 1D array of PDF
probability densities."""
self.gpu_pdf.setup_pdf_eval(event_channels.hit,
@@ -137,16 +137,15 @@ class Simulation(object):
if isinstance(first_element, event.Event):
iterable = self.photon_generator.generate_events(iterable)
- if nreps > 1:
- iterable = repeating_iterator(iterable, nreps)
-
for ev in iterable:
- gpu_photons = gpu.GPUPhotons(ev.photons_beg)
+ gpu_photons = gpu.GPUPhotons(ev.photons_beg, ncopies=nreps)
gpu_photons.propagate(self.gpu_geometry, self.rng_states,
nthreads_per_block=self.nthreads_per_block,
max_blocks=self.max_blocks)
- gpu_channels = self.gpu_daq.acquire(gpu_photons, self.rng_states, nthreads_per_block=self.nthreads_per_block, max_blocks=self.max_blocks)
- self.gpu_pdf.accumulate_pdf_eval(gpu_channels)
+ for gpu_photon_slice in gpu_photons.iterate_copies():
+ for idaq in xrange(ndaq):
+ gpu_channels = self.gpu_daq.acquire(gpu_photon_slice, self.rng_states, nthreads_per_block=self.nthreads_per_block, max_blocks=self.max_blocks)
+ self.gpu_pdf.accumulate_pdf_eval(gpu_channels)
return self.gpu_pdf.get_pdf_eval()