diff options
author | tlatorre <tlatorre@uchicago.edu> | 2019-06-23 17:11:21 -0500 |
---|---|---|
committer | tlatorre <tlatorre@uchicago.edu> | 2019-06-23 17:11:21 -0500 |
commit | df9cb671a0828bd2182aaabf4be9203f0592b4f9 (patch) | |
tree | 6c1aef7494e2c832ae5981c308d26e71626219f0 /src | |
parent | f3336bbeed4258d4b6e009d361329d4518aadc86 (diff) | |
download | sddm-df9cb671a0828bd2182aaabf4be9203f0592b4f9.tar.gz sddm-df9cb671a0828bd2182aaabf4be9203f0592b4f9.tar.bz2 sddm-df9cb671a0828bd2182aaabf4be9203f0592b4f9.zip |
update how neck events are flagged
This commit updates the is_neck_event() function to include the requirement
that 50% of the normal PMTs in the event must have z <= -425.0.
Diffstat (limited to 'src')
-rw-r--r-- | src/dc.c | 30 | ||||
-rw-r--r-- | src/dc.h | 6 |
2 files changed, 30 insertions, 6 deletions
@@ -454,7 +454,7 @@ int qvnhit(event *ev) } /* Returns 1 if the event is classified as a neck event. The definition of - * a neck event comes from the SNOMAN companion: + * a neck event is a combination of the neck flag in the DAMN word: * * This cuts events containing neck tubes. It requires that either both * tubes in the neck fire, or that one of those tubes fires and it has a @@ -464,6 +464,14 @@ int qvnhit(event *ev) * average ECA time of the PSUP PMTS with z les than 0. After the cable * changes to the neck tubes this time difference changes to 15ns. * + * and the SNOOP definition of a neck event which requires that 50% of the + * normal PMTs have z <= -425.0. + * + * I added the requirement that 50% of the normal PMTs be near the bottom since + * for the high energy events I'm interested in, it's entirely possible that a + * high energy electron or muon travelling upwards could cause multiple neck + * PMTs to fire. + * */ int is_neck_event(event *ev) { @@ -471,7 +479,7 @@ int is_neck_event(event *ev) int n; int high_charge; double avg_ept_psup; - int nhit; + int nhit, nhit_bottom; /* First, we compute the average ECA time for all the PSUP PMTs with z <= 0. */ @@ -498,11 +506,16 @@ int is_neck_event(event *ev) * PMTs. */ n = 0; high_charge = 0; + nhit = 0; + nhit_bottom = 0; for (i = 0; i < MAX_PMTS; i++) { - /* Require good calibrations. */ - if (!ev->pmt_hits[i].hit || ev->pmt_hits[i].ept <= -100) continue; + if (!ev->pmt_hits[i].hit) continue; + + switch (pmts[i].pmt_type) { + case PMT_NECK: + /* Require good calibrations. */ + if (ev->pmt_hits[i].ept <= -100) break; - if (pmts[i].pmt_type == PMT_NECK) { n += 1; /* FIXME: The SNOMAN companion says "Early if defined by the neck @@ -511,10 +524,15 @@ int is_neck_event(event *ev) * place? */ if ((ev->pmt_hits[i].ehs > 70 || ev->pmt_hits[i].ehs < -110) && (ev->pmt_hits[i].ept < avg_ept_psup - 70.0)) high_charge = 1; + break; + case PMT_NORMAL: + nhit += 1; + if (pmts[i].pos[2] < NECK_BOTTOM_HEIGHT) nhit_bottom += 1; + break; } } - if (n >= 2 || high_charge) return 1; + if ((n >= 2 || high_charge) && nhit_bottom >= nhit*NECK_BOTTOM_FRACTION) return 1; return 0; } @@ -33,6 +33,12 @@ #define DC_OWL_TRIGGER 0x100 #define DC_FTS 0x200 +/* Height of PMTs which are considered to be at the "bottom" of the detector + * for the neck cut. Comes from the SNOOP definition of a neck event in SNO. */ +#define NECK_BOTTOM_HEIGHT -425.0 +/* Fraction of normal PMT hits which must be below NECK_BOTTOM_HEIGHT. */ +#define NECK_BOTTOM_FRACTION 0.5 + /* Delta-t threshold for PMT pairs in the FTS cut (ns). */ #define FTS_DT_THRESH 25.0 /* Distance threshold for PMT pairs in the FTS cut (cm). */ |