diff options
author | tlatorre <tlatorre@uchicago.edu> | 2019-11-06 11:28:27 -0600 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2019-11-06 11:28:27 -0600 |
commit | b78b16d32f4ed170f4a24d290348765da198d5f0 (patch) | |
tree | 52206c009c858785655fea22cd7963433dcfad1c /src/sno_charge.c | |
parent | 86f64fd828259760ce7003416b70769cf5ba200d (diff) | |
download | sddm-b78b16d32f4ed170f4a24d290348765da198d5f0.tar.gz sddm-b78b16d32f4ed170f4a24d290348765da198d5f0.tar.bz2 sddm-b78b16d32f4ed170f4a24d290348765da198d5f0.zip |
add a couple of improvements to the quad fitter and fix a bug in get_hough_transform()
This commit adds two improvements to the quad fitter:
1. I updated quad to weight the random PMT hit selection by the probability
that the PMT hit is a multiphoton hit. The idea here is that we really only
want to sample direct light and for high energy events the reflected and
scattered light is usually single photon.
2. I added an option to quad to only use points in the quad cloud which are
below a given quantile of t0. The idea here is that for particles like muons
which travel more than a few centimeters in the detector the quad cloud usually
looks like the whole track. Since we want the QUAD fitter to find the position
of the *start* of the track we select only those quad cloud points with an
early time so the position is closer to the position of the start of the track.
Also, I fixed a major bug in get_hough_transform() in which I was using the
wrong index variable when checking if a PMT was not flagged, a normal PMT, and
was hit. This was causing the algorithm to completely miss finding more than
one ring while I was testing it.
Diffstat (limited to 'src/sno_charge.c')
-rw-r--r-- | src/sno_charge.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/sno_charge.c b/src/sno_charge.c index f0d38ec..130df9f 100644 --- a/src/sno_charge.c +++ b/src/sno_charge.c @@ -116,6 +116,26 @@ double get_qhi(void) return qhi; } +double get_qmean(void) +{ + if (!initialized) { + fprintf(stderr, "charge interpolation hasn't been initialized!\n"); + exit(1); + } + + return qmean; +} + +double get_qstd(void) +{ + if (!initialized) { + fprintf(stderr, "charge interpolation hasn't been initialized!\n"); + exit(1); + } + + return qstd; +} + static double nlopt_log_pq(unsigned int n, const double *x, double *grad, void *params) { int i; |