diff options
author | tlatorre <tlatorre@uchicago.edu> | 2020-04-13 11:40:13 -0500 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2020-04-13 11:40:13 -0500 |
commit | d1ce12ce69604c6979f4ffa45e4908eb71b19c60 (patch) | |
tree | 5a22ab0bac3cb88b9357e406487711b269aa7a38 /src/fit.c | |
parent | 9ebdb5f67d092a523b05a8f4654eb40bd4627601 (diff) | |
download | sddm-d1ce12ce69604c6979f4ffa45e4908eb71b19c60.tar.gz sddm-d1ce12ce69604c6979f4ffa45e4908eb71b19c60.tar.bz2 sddm-d1ce12ce69604c6979f4ffa45e4908eb71b19c60.zip |
update find_peaks algorithm
This commit updates the find peaks algorithm with several improvements which
together drastically improve its ability to find Cerenkov rings:
- when computing the Hough transform, instead of charge we weight each PMT hit
by the probability that it is a multi-photon PMT hit
- we don't subtract off previously found rings (this makes the code simpler and
I don't think it previously had a huge effect)
- ignore PMT hits who are within approximately 5 degrees of any previously
found ring (previously we ignored all hits within the center of previously
found rings)
- ignore PMT hits which have a time residual of more than 10 nanoseconds to
hopefully ignore more reflected and/or scattered light
- switch from weighting the Hough transform by exp(-fabs(cos(theta)-1/n)/0.1)
-> exp(-pow(cos(theta)-1/n,2)/0.01). I'm still not sure if this has a huge
effect, but the reason I switched is that the PDF for Cerenkov light looks
closer to the second form.
- switch to calling quad with f = 1.0 in test-find-peaks (I still need to add
this update to fit.c but will do that in a later commit).
Diffstat (limited to 'src/fit.c')
-rw-r--r-- | src/fit.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -5488,7 +5488,7 @@ int fit_event2(event *ev, double *xopt, double *fmin, int *id, size_t n, double ub[3] = GTVALID; /* Find the peaks in the Hough transform of the event. */ - find_peaks(ev, pos, 100, 100, peak_theta, peak_phi, &npeaks, LEN(peak_theta), 0.1); + find_peaks(ev, pos, t0, 100, 100, peak_theta, peak_phi, &npeaks, LEN(peak_theta), 0.1); /* Don't fit more than 3 peaks for now. */ if (npeaks > 3) npeaks = 3; |