From d3f5750bcb3688e4ef2ed67d96c937de772b4c03 Mon Sep 17 00:00:00 2001 From: tlatorre Date: Sun, 25 Nov 2018 11:42:24 -0600 Subject: speed up fast likelihood calculation This commit speeds up the fast likelihood calculation by only computing the time PDF for a single photon. Since the majority of the time in the fast likelihood calculation is spent computing the time PDF this should speed things up by quite a bit. I suspect this won't have a big effect on the likelihood value, but I should do some more testing. --- src/likelihood.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/likelihood.c') diff --git a/src/likelihood.c b/src/likelihood.c index 1b3502c..d0ab20f 100644 --- a/src/likelihood.c +++ b/src/likelihood.c @@ -747,6 +747,8 @@ double nll_muon(event *ev, int id, double T0, double *pos, double *dir, double t size_t npoints, npoints_shower; + double log_pt_fast; + /* Initialize static arrays. */ for (i = 0; i < MAX_PMTS; i++) mu_direct[i] = 0.0; for (i = 0; i < MAX_PMTS; i++) mu_shower[i] = 0.0; @@ -918,9 +920,16 @@ double nll_muon(event *ev, int id, double T0, double *pos, double *dir, double t log_mu = log(mu[i]); + if (fast) + log_pt_fast = log_pt(ev->pmt_hits[i].t, 1, mu_noise, mu_indirect, &mu_direct[i], &mu_shower[i], 1, &ts[i], &ts_shower[i], ts[i], PMT_TTS, &ts_sigma[i]); + if (ev->pmt_hits[i].hit) { for (j = 1; j < MAX_PE; j++) { - logp[j] = log(pq(ev->pmt_hits[i].qhs,j)) - mu[i] + j*log_mu - lnfact(j) + log_pt(ev->pmt_hits[i].t, j, mu_noise, mu_indirect, &mu_direct[i], &mu_shower[i], 1, &ts[i], &ts_shower[i], ts[i], PMT_TTS, &ts_sigma[i]); + if (fast) + logp[j] = log(pq(ev->pmt_hits[i].qhs,j)) - mu[i] + j*log_mu - lnfact(j) + log_pt_fast; + else + logp[j] = log(pq(ev->pmt_hits[i].qhs,j)) - mu[i] + j*log_mu - lnfact(j) + log_pt(ev->pmt_hits[i].t, j, mu_noise, mu_indirect, &mu_direct[i], &mu_shower[i], 1, &ts[i], &ts_shower[i], ts[i], PMT_TTS, &ts_sigma[i]); + if (j == 1 || logp[j] > max_logp) max_logp = logp[j]; if (logp[j] - max_logp < min_ratio*ln(10)) { -- cgit