summaryrefslogtreecommitdiff
path: root/sim.py
diff options
context:
space:
mode:
Diffstat (limited to 'sim.py')
-rwxr-xr-xsim.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/sim.py b/sim.py
index a056c50..3044f3e 100755
--- a/sim.py
+++ b/sim.py
@@ -82,8 +82,7 @@ class Simulation(object):
ev.photon_stop = self.gpu_worker.get_photons()
if run_daq:
- ev.hits = self.gpu_worker.get_hits()
- ev.channels = ev.hits
+ ev.channels = self.gpu_worker.get_hits()
yield ev
@@ -117,6 +116,32 @@ class Simulation(object):
self.gpu_worker.add_hits_to_pdf()
return self.gpu_worker.get_pdfs()
+
+
+ def eval_pdf(self, event_channels, nevents, vertex_generator,
+ min_twidth, trange, min_qwidth, qrange,
+ min_bin_content=20, nreps=1, time_only=True):
+ photon_gen = repeating_iterator(self.photon_generator.generate_events(nevents, vertex_generator),
+ nreps)
+ return self.eval_pdf_from_photons(event_channels, nevents*nreps, photon_gen,
+ min_twidth, trange, min_qwidth, qrange,
+ min_bin_content=min_bin_content, time_only=time_only)
+
+ def eval_pdf_from_photons(self, event_channels, nevents, photon_generator,
+ min_twidth, trange, min_qwidth, qrange,
+ min_bin_content=20, time_only=True):
+ '''Returns tuple: 1D array of channel hit counts, 1D array of PDF probability densities'''
+ self.gpu_worker.setup_pdf_eval(event_channels.hit, event_channels.t, event_channels.q,
+ min_twidth, trange, min_qwidth, qrange,
+ min_bin_content=min_bin_content, time_only=True)
+
+ for ev in itertools.islice(photon_generator, nevents):
+ self.gpu_worker.load_photons(ev.photon_start)
+ self.gpu_worker.propagate()
+ self.gpu_worker.run_daq()
+ self.gpu_worker.accumulate_pdf_eval()
+
+ return self.gpu_worker.get_pdf_eval()
@profile_if_possible