Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
This commit updates the zebra code to properly handle all the errors from
get_bytes(). I also updated fit and cat-zdab to not display the errors about
the FTX banks by default unless you run them with the -v command line option.
|
|
This commit updates cat-grid-jobs to only warn once about a mismatch between
the SHA1 of the current zdab-cat program and the grid results, and also cleans
up some of the output.
|
|
This commit updates the submit-grid-jobs script to use my version of splitext()
which removes the full extension from the filename. This fixes an issue where
the output HDF5 files had xzdab in the name whenever the input file had the
file extension .xzdab.gz.
|
|
|
|
This commit fixes the FTS cut so that it returns 1 when the event is flagged as
failing the cut. Previously, the function returned the following:
not enough PMT pairs: 0 (fail)
median time > 6.8 ns: 0 (fail)
otherwise: 1 (pass)
This had two issues: the return value wasn't consistent with the rest of the
data cleaning cuts and it should pass if there aren't enough PMT pairs.
Now, I fixed the not enough PMT pairs case and made the return value consistent
with the rest of the data cleaning cuts:
not enough PMT pairs: 0 (pass)
median time > 6.8 ns: 1 (fail)
otherwise: 0 (pass)
|
|
|
|
This commit updates the second requirement of the neck event tag to flag events
in which either 50% of the normal PMT hits are at the bottom of the detector
*or* 50% of the ECA calibrated charge is at the bottom of the detector.
This update was added after testing the cut out on run 10058 which is not in
the golden run list and noticing that there were 4 events which were very
clearly neck events but which didn't get tagged.
|
|
|
|
|
|
This commit fixes a bug in get_shower_weights() and get_delta_ray_weights()
which was causing an inf value to propagate and cause the fitter to crash. The
problem came because due to floating point roundoff the cdf value at the end of
the loop was slightly greater than the last cdf value we wanted which was
causing it to get mapped to cos(theta) = -1 (I think?) and then subsequently
get interpolated to an infinite value for xcdf.
The fix is just to make sure that the x coordinate is always between x1 and x2.
|
|
|
|
This commit updates the charge spectrum initialization to convolve the charge
distribution over a wider range to make sure that we have a nonzero probability
of observing charges all the way down to qlo.
The reason for this is that previously for some negative charges the
probability of observing that charge was zero, which was causing the likelihood
to return nan.
|
|
This commit updates the fit program to accept a particle combo from the command
line so you can fit for a single particle combination hypothesis. For example
running:
$ ./fit ~/zdabs/mu_minus_700_1000.hdf5 -p 2020
would just fit for the 2 electron hypothesis.
The reason for adding this ability is that my grid jobs were getting evicted
when fitting muons in run 10,000 since it takes 10s of hours to fit for all the
particle hypothesis. With this change, and a small update to the
submit-grid-jobs script we now submit a single grid job per particle
combination hypothesis which should make each grid job run approximately 4
times faster.
|
|
|
|
|
|
|
|
|
|
This commit updates get_event() to flag PMT charges below qlo, which is the
minimum charge value that we compute the charge PDFs for. This is to prevent
the likelihood from returning nan.
|
|
|
|
This commit updates fast_acos() to use an algorithm I found here:
https://web.archive.org/web/20161223122122/http://http.developer.nvidia.com:80/Cg/acos.html
which is faster than using a lookup table.
|
|
|
|
After some testing, I realized that the fast_sqrt() function wasn't really
faster than the native sqrt function.
|
|
This commit updates the likelihood to use the multiphoton PCA time instead of
the usual pt time. When looking at the reconstruction of muons in run 10,000 I
noticed that the PMT hit times for the PMTs which had really high charge was
all over the place. There were PMTs that were very close to each other with hit
times differing by ~ 20 ns. I'm still not entirely sure what causes this (is
it some hardware issue with the discriminator or is it a problem with the
charge walk correction which always assumes a single PE?), but the multiphoton
PCA times looked a lot more reasonable.
Eventually I need to look into the ptms variable which is the multiphoton PCA
transit time RMS.
|
|
Previously I was accidentally passing the absolute position of the particle
instead of the distance to the PMT to get_theta0_min().
|
|
|
|
This commit fixes a bug introduced in a previous commit when I moved all the
code to add the run, gtid, etc. to the event object to get_event(). We actually
need the run number before then to load the DQXX file for the right run.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This commit fixes two small bugs in the plotting scripts. First, after the HDF5
commit I wasn't correctly computing the particle ID string which I had been
using before which was needed in order to plot things correctly. Second, I
realized that the dataframe groupby function first() actually selects the first
non-null column from each group! What I really wanted was the first row from
each group, so all instances of .first() were updated to .nth(0).
See https://stackoverflow.com/questions/20067636/pandas-dataframe-get-first-row-of-each-group.
|
|
|
|
|
|
|
|
|
|
- apply muon follower and muon cuts to atmospheric sample
- print warnings in red
- fix how events with fmin = nan are counted
|
|
Tidy up the code in the script by creating a function to plot the energy
distributions for each particle combo. Also fixed a bug which was causing the
neutron follower cut not to be applied.
|
|
This commit is a major update to the plot-energy script. The most significant
changes are:
- new prompt event selection
We now define prompt events as any event >= 100 nhit which is at least 250
ms away from the last 100 nhit event.
- add Michel electron event selection.
Michel electrons are now selected as any event between 800 ns and 20
microseconds after a muon or prompt event. Additionally they are required
to be >= 100 nhit and pass an extra set of data cleaning cuts (compared to
the prompt events).
- add an atmospheric "sideband"
I also updated the script to plot the energy distribution and particle ID
for all events that *do* have a neutron follower as a kind of sideband
which should contain only atmospheric events.
- plot muon energy spectrum and angular distribution
|
|
|