summaryrefslogtreecommitdiff
path: root/sim.py
diff options
context:
space:
mode:
Diffstat (limited to 'sim.py')
-rwxr-xr-xsim.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/sim.py b/sim.py
index 8d991b2..3044f3e 100755
--- a/sim.py
+++ b/sim.py
@@ -116,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