aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2019-01-10update TODOtlatorre
2019-01-10update TODOtlatorre
2019-01-10update find_peaks algorithmtlatorre
Previously, the algorithm used to find peaks was to search for all peaks in the Hough transform above some constant fraction of the highest peak. This algorithm could have issues finding smaller peaks away from the highest peak. The new algorithm instead finds the highest peak in the Hough transform and then recomputes the Hough transform ignoring all PMT hits within the Cerenkov cone of the first peak. The next peak is found from this transform and the process is iteratively repeated until a certain number of peaks are found. One disadvantage of this new system is that it will *always* find the same number of peaks and this will usually be greater than the actual number of rings in the event. This is not a problem though since when fitting the event we loop over all possible peaks and do a quick fit to determine the starting point and so false positives are OK because the real peaks will fit better during this quick fit. Another potential issue with this new method is that by rejecting all PMT hits within the Cerenkov cone of the first peak we could miss a second peak very close to the first peak. This is partially mitigated by the fact that when we loop over all possible combinations of the particle ids and directions we allow each peak to be used more than once. For example, when fitting for the hypothesis that an event is caused by two electrons and one muon and given two possible directions 1 and 2, we will fit for the following possible direction combinations: 1 1 1 1 1 2 1 2 1 1 2 2 2 2 1 2 2 2 Therefore if there is a second ring close to the first it is possible to fit it correctly since we will seed the quick fit with two particles pointing in the same direction. This commit also adds a few tests for new functions and changes the energy step size during the quick fit to 10% of the starting energy value.
2018-12-17update TODOtlatorre
2018-12-14fix another bug in combinations_with_replacement()tlatorre
Also, fix a few memory leaks in test.c.
2018-12-14switch to using fit_event2() by defaulttlatorre
This commit updates the fit to use the fit_event2() function which can fit for multi vertex hypotheses. It also uses the QUAD fitter and the Hough transform of the event to seed the fit so the results for 1 particle fits will be slightly different than before. I also fixed a small bug in combinations_with_replacement().
2018-12-14add a function to compute combinations with replacementtlatorre
2018-12-14fix help stringtlatorre
2018-12-13add some more comments and fix a memory leaktlatorre
2018-12-13add -fdiagnostics-color to Makefiletlatorre
2018-12-13add some commentstlatorre
2018-12-13update fit.c to fit multiple verticestlatorre
This commit adds a new function fit_event2() to fit multiple vertices. To seed the fit, fit_event2() does the following: - use the QUAD fitter to find the position and initial time of the event - call find_peaks() to find possible directions for the particles - loop over all possible unique combinations of the particles and direction vectors and do a "fast" minimization The best minimum found from the "fast" minimizations is then used to start the fit. This commit has a few other updates: - adds a hit_only parameter to the nll() function. This was necessary since previously PMTs which weren't hit were always skipped for the fast minimization, but when fitting for multiple vertices we need to include PMTs which aren't hit since we float the energy. - add the function guess_energy() to guess the energy of a particle given a position and direction. This function estimates the energy by summing up the QHS for all PMTs hit within the Cerenkov cone and dividing by 6. - fixed a bug which caused the fit to freeze when hitting ctrl-c during the fast minimization phase.
2018-12-13update find_peaks_array() to return peaks in sorted ordertlatorre
2018-12-13add function to compute unique direction vectors for a multi particle fittlatorre
2018-12-11fix some compiler warningstlatorre
2018-12-11add a function to find peaks using a Hough transformtlatorre
2018-12-07add the QUAD fittertlatorre
2018-12-04don't quit when maxtime is reachedtlatorre
2018-12-04update TODOtlatorre
2018-12-04fix bugtlatorre
2018-12-04add a command line parameter to control the maximum time of the fittlatorre
This commit adds a parameter to stop the fit if it takes longer than a certain period of time in seconds. This parameter can be set on the command line. For example, to limit fits to 10 minutes: $ ./fit FILENAME --max-time 600.0
2018-12-04set a stopping criterion of 1% for the fit parameterstlatorre
2018-12-03update run-fittlatorre
2018-12-03update plottlatorre
2018-12-03fix test-zebratlatorre
2018-12-03add script to run multiple fitstlatorre
2018-12-03add a goodness of fit parameter psi to the fittlatorre
2018-11-30sizeof()/sizeof() -> LEN()tlatorre
2018-11-30update plot-fit-results to handle masked arrays properlytlatorre
2018-11-30nll_muon -> nll and nll -> nopt_nlltlatorre
2018-11-30add ability to fit for multiple verticestlatorre
2018-11-30rename plot.py -> plottlatorre
2018-11-28update sno_charge.ctlatorre
This commit adds lots of comments to sno_charge.c and makes a couple of other changes: - use interp1d() instead of the GSL interpolation routines - increase MAX_PE to 100 I increased MAX_PE because I determined that it had a rather large impact on the likelihood function for 500 MeV electrons. This unfortunately slows down the initialization by a lot. I think I could speed this up by convolving the single PE charge distribution with a gaussian *before* convolving the charge distributions to compute the charge distributions for multiple PE.
2018-11-27add separate CHARGE_FRACTION variables for electrons and muonstlatorre
2018-11-27change PSUP_REFLECTION_TIME to 80 nstlatorre
See Bryce Moffat's thesis page 64.
2018-11-27add rayleigh scatteringtlatorre
This commit adds Rayleigh scattering to the likelihood function. The Rayleigh scattering lengths come from rsp_rayleigh.dat from SNOMAN which only includes photons which scattered +/- 10 ns around the prompt peak. The fraction of light which scatters is treated the same in the likelihood as reflected light, i.e. it is uniform across all the PMTs in the detector and the time PDF is assumed to be a constant for a fixed amount of time after the prompt peak.
2018-11-27a bunch of small changes to speed things uptlatorre
2018-11-27update dx_shower to 10 cm to speed things uptlatorre
2018-11-26update TODOtlatorre
2018-11-26update TODOtlatorre
2018-11-26update .gitignoretlatorre
2018-11-26update TODOtlatorre
2018-11-26update electron range tablestlatorre
This commit also adds a script to calculate the CSDA range for electrons from a table of the stopping power as a function of energy. We need this script since the NIST ESTAR website will only output the stopping power above a certain energy threshold (1 GeV for electrons). See https://physics.nist.gov/PhysRefData/Star/Text/ESTAR.html.
2018-11-25add a separate `dx_shower` parameter for the spacing of the shower track ↵tlatorre
integral
2018-11-25add a script to plot the fit results as a function of energytlatorre
2018-11-25speed up fast likelihood calculationtlatorre
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.
2018-11-25speed up particle inittlatorre
2018-11-25update likelihood to make sure we integrate over at least 100 pointstlatorre
2018-11-25add shower photons to fast likelihood calculationtlatorre
2018-11-21update TODOtlatorre