Pema
Github page: https://github.com/XENONnT/pema
Content
Setting up Pema
Install using: pip install pema
For the true power of pema, database access is assumed. This can be achieved by setting up a utilix file with the proper passwords. Please follow the installation guide as from straxen: https://straxen.readthedocs.io/en/latest/setup.html
Basic examples
Imagine you want to load peaks from wfsim
and check the properly matched peaks. We assume one is familiar with You can do so as follows:
import pema
import numpy as np
# Setup a simulation, see e.g. pema/tests or wfsim documentation
st_wfsim = pema.contexts.pema_context(..)
# Load peaks and truth information
peaks = st_wfsim.get_array(run_id, ('peak_basics', 'peak_id')) # Same dtype
truths = st_wfsim.get_array(run_id, 'truth_extended') # Super type of truth
truth_are_matched = truths['outcome']=='found' # This means that the peak as in the truth was correctly found
peaks_are_machted = np.in1d(peaks['id'], truths[truth_are_matched]['matched_to'])
assert len(peaks_are_matched) == len(peaks)
peaks_with_good_match = peaks[peaks_are_machted]
truths_with_good_match = truths[truth_are_matched]
Similar selections can easily be extended by setting e.q. truth_are_matched = truths['outcome']=='missed'
etc.
Getting started with Pema
2/11/2021
Basic examples of how to use pema easily
below we will explain - how to run pema - What types of outputs we can get to match peaks and events
Starting a context
Just as in wfsim
or straxen
we need a context. In this example, we use a context from straxen
but pema
also has it’s own context if you want to have some more expert experience of of the fine details of the package
[1]:
import pema
import straxen
import wfsim
import pandas as pd
import logging
import matplotlib.pyplot as plt
import numpy as np
# WFSim can be quite verboose, let's increase the loggers verbosity
logging.getLogger().setLevel(logging.ERROR)
[2]:
straxen.print_versions('strax straxen wfsim pema'.split())
Working on dali013.rcc.local with the following versions and installation paths:
python v3.8.5 (default, Sep 4 2020, 07:30:14) [GCC 7.3.0]
strax v1.1.2 /home/angevaare/software/strax/strax git branch:master | 9b79ca7
straxen v1.1.3 /home/angevaare/software/straxen/straxen git branch:master | e7d3d02
wfsim v0.5.12 /home/angevaare/software/wfsim/wfsim git branch:master | 0d74d97
pema v0.3.5 /home/angevaare/software/pema/pema git branch:master | 5b54328
[3]:
run_id = '026000'
st = wfsim.contexts.xenonnt_simulation(cmt_run_id_sim=run_id)
Write some instruction file for WFSim
This is just to make a CSV file with ~100 events so that we don’t simulate for a long time
[4]:
instructions = dict(
event_rate=50,
chunk_size=1,
n_chunk=2,
tpc_radius=straxen.tpc_r,
tpc_length=straxen.tpc_z,
drift_field=10,
energy_range=[1, 10], # keV
nest_inst_types=wfsim.NestId.ER,
)
instructions_path = './inst.csv'
[ ]:
# Write these instructions to the instructions_path
pema.inst_to_csv(
instructions_path,
get_inst_from=pema.rand_instructions,
**instructions)
if we now look at the instructions, we see that the instructions are in the format WFSim needs
[6]:
pd.read_csv(instructions_path).head(5)
[6]:
event_number | type | time | x | y | z | amp | recoil | e_dep | g4id | vol_id | local_field | n_excitons | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 10000000 | 0.213643 | -50.968160 | -66.82086 | 570 | 7 | 8.762822 | -1 | -1 | 10.0 | 46 |
1 | 0 | 2 | 10000000 | 0.213643 | -50.968160 | -66.82086 | 78 | 7 | 8.762822 | -1 | -1 | 10.0 | 0 |
2 | 0 | 1 | 30000000 | 18.600367 | 37.217890 | -54.83090 | 263 | 8 | 5.303098 | -1 | -1 | 10.0 | 18 |
3 | 0 | 2 | 30000000 | 18.600367 | 37.217890 | -54.83090 | 121 | 8 | 5.303098 | -1 | -1 | 10.0 | 0 |
4 | 0 | 1 | 50000000 | -20.259249 | -10.839966 | -92.56312 | 1001 | 11 | 7.181198 | -1 | -1 | 10.0 | 72 |
Running wfsim
Nothing fancy, just make some data
[ ]:
st.set_config({'fax_file': instructions_path})
st.make('026000', 'raw_records')
Why we need pema?
So after running the simulator, we can now have a look at the truth data and the reconstructed data. You will notice that these are not very trivial to match, the size etc. of the data is different making it hard to compare directly
[8]:
st.get_df(run_id, 'truth').head(5)
[8]:
event_number | type | time | x | y | z | amp | recoil | e_dep | g4id | ... | t_first_photon | t_last_photon | t_mean_photon | t_sigma_photon | x_mean_electron | y_mean_electron | t_first_electron | t_last_electron | t_mean_electron | t_sigma_electron | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 1 | 10000037 | 0.213643 | -50.968159 | -66.820862 | 570 | 7 | 8.762822 | -1 | ... | 10000037.0 | 10000310.0 | 1.000010e+07 | 51.623532 | NaN | NaN | NaN | NaN | NaN | NaN |
1 | 0 | 2 | 10982323 | 0.213643 | -50.968159 | -66.820862 | 78 | 7 | 8.762822 | -1 | ... | 10982323.0 | 10999426.0 | 1.099032e+07 | 3323.948834 | NaN | NaN | 10982770.0 | 10998267.0 | 1.099008e+07 | 3305.199797 |
2 | 0 | 1 | 30000025 | 18.600367 | 37.217892 | -54.830898 | 263 | 8 | 5.303098 | -1 | ... | 30000025.0 | 30000280.0 | 3.000010e+07 | 63.100088 | NaN | NaN | NaN | NaN | NaN | NaN |
3 | 0 | 2 | 30805117 | 18.600367 | 37.217892 | -54.830898 | 121 | 8 | 5.303098 | -1 | ... | 30805117.0 | 30821781.0 | 3.081305e+07 | 3013.418322 | NaN | NaN | 30805767.0 | 30820812.0 | 3.081293e+07 | 3084.207357 |
4 | 0 | 1 | 50000030 | -20.259249 | -10.839966 | -92.563118 | 1001 | 11 | 7.181198 | -1 | ... | 50000030.0 | 50000354.0 | 5.000010e+07 | 54.821558 | NaN | NaN | NaN | NaN | NaN | NaN |
5 rows × 37 columns
[9]:
st.get_df(run_id, 'peak_basics').head(5)
[9]:
time | endtime | center_time | area | n_channels | max_pmt | max_pmt_area | n_saturated_channels | range_50p_area | range_90p_area | area_fraction_top | length | dt | rise_time | tight_coincidence | tight_coincidence_channel | type | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 10000020 | 10000550 | 10000143 | 90.596260 | 56 | 253 | 4.146482 | 0 | 79.069336 | 223.482574 | 0.190108 | 53 | 10 | 48.225266 | 49 | 48 | 1 |
1 | 10982310 | 10999590 | 10990290 | 2977.601807 | 407 | 30 | 328.906281 | 0 | 4870.469238 | 11093.649414 | 0.705678 | 192 | 90 | 4130.819336 | 27 | 23 | 2 |
2 | 30000010 | 30000520 | 30000141 | 38.071171 | 26 | 460 | 3.673802 | 0 | 90.643417 | 243.026779 | 0.138739 | 51 | 10 | 62.914806 | 15 | 14 | 1 |
3 | 30805100 | 30821930 | 30813033 | 4511.850586 | 451 | 219 | 485.288208 | 0 | 4094.857422 | 9902.229492 | 0.680726 | 187 | 90 | 3647.358887 | 63 | 60 | 2 |
4 | 50000010 | 50000590 | 50000151 | 135.912338 | 88 | 325 | 5.080719 | 0 | 83.577980 | 241.828125 | 0.242879 | 58 | 10 | 56.064529 | 84 | 80 | 1 |
Using pema we can easily match events
and peaks
First, let’s register pema to the context
[10]:
st.register_all(pema.match_plugins)
[11]:
df = st.get_df(run_id, 'match_acceptance_extended')
df.head(10)
[11]:
time | endtime | is_found | acceptance_fraction | rec_bias | event_number | type | x | y | z | ... | t_sigma_photon | x_mean_electron | y_mean_electron | t_first_electron | t_last_electron | t_mean_electron | t_sigma_electron | id | outcome | matched_to | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 10000037 | 10000310 | True | 1.0 | 1.352183 | 0 | 1 | 0.213643 | -50.968159 | -66.820862 | ... | 51.623532 | NaN | NaN | NaN | NaN | NaN | NaN | 0 | found | 0 |
1 | 10982323 | 10999426 | True | 1.0 | 1.250043 | 0 | 2 | 0.213643 | -50.968159 | -66.820862 | ... | 3323.948834 | NaN | NaN | 10982770.0 | 10998267.0 | 1.099008e+07 | 3305.199797 | 1 | found | 1 |
2 | 30000025 | 30000280 | True | 1.0 | 1.189724 | 0 | 1 | 18.600367 | 37.217892 | -54.830898 | ... | 63.100088 | NaN | NaN | NaN | NaN | NaN | NaN | 2 | found | 2 |
3 | 30805117 | 30821781 | True | 1.0 | 1.232409 | 0 | 2 | 18.600367 | 37.217892 | -54.830898 | ... | 3013.418322 | NaN | NaN | 30805767.0 | 30820812.0 | 3.081293e+07 | 3084.207357 | 3 | found | 3 |
4 | 50000030 | 50000354 | True | 1.0 | 1.192213 | 0 | 1 | -20.259249 | -10.839966 | -92.563118 | ... | 54.821558 | NaN | NaN | NaN | NaN | NaN | NaN | 4 | found | 4 |
5 | 51358856 | 51381325 | True | 1.0 | 1.255800 | 0 | 2 | -20.259249 | -10.839966 | -92.563118 | ... | 3764.153809 | NaN | NaN | 51359296.0 | 51380713.0 | 5.137001e+07 | 3786.530135 | 5 | found | 5 |
6 | 70000016 | 70000382 | True | 1.0 | 1.187851 | 0 | 1 | -47.578213 | 0.588989 | -137.323624 | ... | 83.635968 | NaN | NaN | NaN | NaN | NaN | NaN | 6 | found | 6 |
7 | 72020959 | 72040738 | True | 1.0 | 1.205682 | 0 | 2 | -47.578213 | 0.588989 | -137.323624 | ... | 3683.165652 | NaN | NaN | 72021418.0 | 72040323.0 | 7.203114e+07 | 3681.208360 | 7 | found | 7 |
8 | 90000036 | 90000390 | True | 1.0 | 1.297663 | 0 | 1 | -55.136837 | -7.310527 | -145.262833 | ... | 66.397138 | NaN | NaN | NaN | NaN | NaN | NaN | 8 | found | 8 |
9 | 92137377 | 92161298 | True | 1.0 | 1.254083 | 0 | 2 | -55.136837 | -7.310527 | -145.262833 | ... | 4783.696419 | NaN | NaN | 92137889.0 | 92160617.0 | 9.214823e+07 | 4747.782437 | 9 | found | 9 |
10 rows × 43 columns
We see that we have many more colums to choose from, like is_found
, rec_bias
, matched_to
etc. You can have a look at all the fields here:
[12]:
st.data_info('truth_extended')
[12]:
Field name | Data type | Comment | |
---|---|---|---|
0 | time | int64 | Start time since unix epoch [ns] |
1 | endtime | int64 | Exclusive end time since unix epoch [ns] |
2 | is_found | bool | Is the peak tagged "found" in the reconstructe... |
3 | acceptance_fraction | float64 | Acceptance of the peak can be negative for pen... |
4 | rec_bias | float64 | Reconstruction bias 1 is perfect, 0.1 means in... |
5 | event_number | int32 | Waveform simulator event number. |
6 | type | int8 | Quanta type (S1 photons or S2 electrons) |
7 | x | float32 | X position of the cluster [cm] |
8 | y | float32 | Y position of the cluster [cm] |
9 | z | float32 | Z position of the cluster [cm] |
10 | amp | int32 | Number of quanta |
11 | recoil | int8 | Recoil type of interaction. |
12 | e_dep | float32 | Energy deposit of interaction |
13 | g4id | int32 | Eventid like in geant4 output rootfile |
14 | vol_id | int32 | Volume id giving the detector subvolume |
15 | local_field | float64 | Local field [ V / cm ] |
16 | n_excitons | int32 | Number of excitons |
17 | n_electron | int32 | Number of simulated electrons |
18 | n_photon | int32 | Number of photons reaching PMT |
19 | n_pe | int32 | Number of photons + dpe passing |
20 | n_photon_trigger | int32 | Number of photons passing trigger |
21 | n_pe_trigger | int32 | Number of photons + dpe passing trigger |
22 | raw_area | float64 | Raw area in pe |
23 | raw_area_trigger | float64 | Raw area in pe passing trigger |
24 | n_photon_bottom | int32 | Number of photons reaching PMT (bottom) |
25 | n_pe_bottom | int32 | Number of photons + dpe passing (bottom) |
26 | n_photon_trigger_bottom | int32 | Number of photons passing trigger (bottom) |
27 | n_pe_trigger_bottom | int32 | Number of photons + dpe passing trigger (bottom) |
28 | raw_area_bottom | float64 | Raw area in pe (bottom) |
29 | raw_area_trigger_bottom | float64 | Raw area in pe passing trigger (bottom) |
30 | t_first_photon | float64 | Arrival time of the first photon [ns] |
31 | t_last_photon | float64 | Arrival time of the last photon [ns] |
32 | t_mean_photon | float64 | Mean time of the photons [ns] |
33 | t_sigma_photon | float64 | Standard deviation of photon arrival times [ns] |
34 | x_mean_electron | float32 | X field-distorted mean position of the electro... |
35 | y_mean_electron | float32 | Y field-distorted mean position of the electro... |
36 | t_first_electron | float64 | Arrival time of the first electron [ns] |
37 | t_last_electron | float64 | Arrival time of the last electron [ns] |
38 | t_mean_electron | float64 | Mean time of the electrons [ns] |
39 | t_sigma_electron | float64 | Standard deviation of electron arrival times [ns] |
40 | id | int64 | Id of element in truth |
41 | outcome | <U32 | Outcome of matching to peaks |
42 | matched_to | int64 | Id of matching element in peaks |
For example, we can now look at the outcome of the matching. We look at what each of the peaks in truth results to in peaks in the data. For example, one instruction can be split into multiple peaks (split
) or completely missed by the reconstruction software (missed
)
[13]:
plt.hist(df['outcome'])
plt.yscale('log')
plt.title('Reconstructed peaks vs truth')
[13]:
Text(0.5, 1.0, 'Reconstructed peaks vs truth')

For events, we can do something similar
[14]:
st.data_info('truth_events')
[14]:
Field name | Data type | Comment | |
---|---|---|---|
0 | time | int64 | Start time since unix epoch [ns] |
1 | endtime | int64 | Exclusive end time since unix epoch [ns] |
2 | start_match | int64 | First event number in event datatype within th... |
3 | end_match | int64 | Last (inclusive!) event number in event dataty... |
4 | outcome | <U32 | Outcome of matching to events |
5 | truth_number | int64 | Truth event number |
[15]:
st.show_config('truth_events')
[15]:
option | default | current | applies_to | help | |
---|---|---|---|---|---|
0 | penalty_s2_by | ((misid_as_s1, -1.0), (split_and_misid, -1.0)) | <OMITTED> | (match_acceptance,) | Add a penalty to the acceptance fraction if th... |
1 | min_s2_bias_rec | 0.85 | <OMITTED> | (match_acceptance,) | If the S2 fraction is greater or equal than th... |
2 | detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmo... | |
3 | event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmo... | Average number of events per second |
4 | chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmo... | Duration of each chunk in seconds |
... | ... | ... | ... | ... | ... |
71 | max_drift_length | 148.6515 | <OMITTED> | (events,) | Total length of the TPC from the bottom of gat... |
72 | exclude_s1_as_triggering_peaks | True | <OMITTED> | (events,) | If true exclude S1s as triggering peaks. |
73 | min_area_fraction | 0.5 | <OMITTED> | (peak_proximity,) | The area of competing peaks must be at least t... |
74 | nearby_window | 10000000 | <OMITTED> | (peak_proximity,) | Peaks starting within this time window (on eit... |
75 | peak_max_proximity_time | 100000000 | <OMITTED> | (peak_proximity,) | Maximum value for proximity values such as t_t... |
76 rows × 5 columns
In fact we see that we did not do this very intelligently, the random instructions just specified 2 events, each with broad spacing and ~50 peaks/event. As such these two “events” are split into 50 events
[16]:
df_truth_events = st.get_df(run_id, 'truth_events')
df_truth_events.head()
[16]:
time | endtime | start_match | end_match | outcome | truth_number | |
---|---|---|---|---|---|---|
0 | 10000037 | 990930702 | 0 | 49 | split | 0 |
1 | 1010000044 | 1990220979 | 50 | 103 | split | 1 |
Now you might want to open each of the events in according to a grouping one had in the truth file. Let’s for example open event 0 from the truth file
[17]:
events = st.get_df(run_id, ('events', 'event_basics'))
[18]:
truth_selection = df_truth_events['truth_number'] == 0
[19]:
event_selection = [
((ev['start_match'] <= events['event_number']) &
(events['event_number'] <= ev['end_match']))
for i, ev in
df_truth_events[truth_selection].iterrows()
]
event_selection = np.any(event_selection, axis=0)
[20]:
events[event_selection].head()
[20]:
time | endtime | n_peaks | drift_time | event_number | s1_index | alt_s1_index | s1_time | alt_s1_time | s1_center_time | ... | alt_s2_x_cnn | alt_s2_y_cnn | s2_x_gcn | s2_y_gcn | alt_s2_x_gcn | alt_s2_y_gcn | s2_x_mlp | s2_y_mlp | alt_s2_x_mlp | alt_s2_y_mlp | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 9900000 | 11249590 | 2 | 990147.0 | 0 | 0 | -1 | 10000020 | -1 | 10000143 | ... | NaN | NaN | 0.367014 | -50.836010 | NaN | NaN | 0.301356 | -51.021992 | NaN | NaN |
1 | 28359362 | 31071930 | 2 | 812892.0 | 1 | 0 | -1 | 30000010 | -1 | 30000141 | ... | NaN | NaN | 18.742008 | 37.128674 | NaN | NaN | 18.763103 | 37.098461 | NaN | NaN |
2 | 48913102 | 51631400 | 2 | 1369899.0 | 2 | 0 | -1 | 50000010 | -1 | 50000151 | ... | NaN | NaN | -19.878204 | -10.981473 | NaN | NaN | -19.933523 | -10.953871 | NaN | NaN |
3 | 69575202 | 72290960 | 2 | 2030929.0 | 3 | 0 | -1 | 70000000 | -1 | 70000165 | ... | NaN | NaN | -47.723724 | 0.776461 | NaN | NaN | -47.679546 | 0.850672 | NaN | NaN |
4 | 89691622 | 92411410 | 2 | 2148194.0 | 4 | 0 | -1 | 90000020 | -1 | 90000172 | ... | NaN | NaN | -55.278717 | -7.305344 | NaN | NaN | -55.405975 | -7.268640 | NaN | NaN |
5 rows × 91 columns
Pema datastructure
This page is an autogenerated reference for all the plugins in straxen’s xenonnt_online context.
Colors indicate data kinds. To load tables with different data kinds, you currently need more than one get_df (or get_array) commands.
truth_extended
Description
Provided by plugin: TruthExtended
Data kind: truth
Merge the matched acceptance to the extended truth
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
is_found | bool | Is the peak tagged "found" in the reconstructed data |
acceptance_fraction | float64 | Acceptance of the peak can be negative for penalized reconstruction |
rec_bias | float64 | Reconstruction bias 1 is perfect, 0.1 means incorrect |
rec_area | float32 | Peak integral in PE |
rec_range_50p_area | float32 | Width (in ns) of the central 50% area of the peak |
rec_area_fraction_top | float32 | Fraction of area seen by the top array (NaN for peaks with non-positive area) |
rec_rise_time | float32 | Time between 10% and 50% area quantiles [ns] |
rec_tight_coincidence | int16 | Number of PMTs with hits within tight range of mean |
event_number | int32 | Waveform simulator event number. |
type | int8 | Quanta type (S1 photons or S2 electrons) |
x | float32 | X position of the cluster [cm] |
y | float32 | Y position of the cluster [cm] |
z | float32 | Z position of the cluster [cm] |
amp | int32 | Number of quanta |
recoil | int8 | Recoil type of interaction. |
e_dep | float32 | Energy deposit of interaction |
tot_e | float32 | Total energy deposit in the sensitive volume |
g4id | int32 | Eventid like in geant4 output rootfile |
vol_id | int32 | Volume id giving the detector subvolume |
local_field | float64 | Local field [ V / cm ] |
n_excitons | int32 | Number of excitons |
x_pri | float32 | X position of the primary particle [cm] |
y_pri | float32 | Y position of the primary particle [cm] |
z_pri | float32 | Z position of the primary particle [cm] |
n_electron | int32 | Number of simulated electrons |
n_photon | int32 | Number of photons reaching PMT |
n_pe | int32 | Number of photons + dpe passing |
n_photon_trigger | int32 | Number of photons passing trigger |
n_pe_trigger | int32 | Number of photons + dpe passing trigger |
raw_area | float64 | Raw area in pe |
raw_area_trigger | float64 | Raw area in pe passing trigger |
n_photon_bottom | int32 | Number of photons reaching PMT (bottom) |
n_pe_bottom | int32 | Number of photons + dpe passing (bottom) |
n_photon_trigger_bottom | int32 | Number of photons passing trigger (bottom) |
n_pe_trigger_bottom | int32 | Number of photons + dpe passing trigger (bottom) |
raw_area_bottom | float64 | Raw area in pe (bottom) |
raw_area_trigger_bottom | float64 | Raw area in pe passing trigger (bottom) |
t_first_photon | float64 | Arrival time of the first photon [ns] |
t_last_photon | float64 | Arrival time of the last photon [ns] |
t_mean_photon | float64 | Mean time of the photons [ns] |
t_sigma_photon | float64 | Standard deviation of photon arrival times [ns] |
x_mean_electron | float32 | X field-distorted mean position of the electrons [cm] |
y_mean_electron | float32 | Y field-distorted mean position of the electrons [cm] |
t_first_electron | float64 | Arrival time of the first electron [ns] |
t_last_electron | float64 | Arrival time of the last electron [ns] |
t_mean_electron | float64 | Mean time of the electrons [ns] |
t_sigma_electron | float64 | Standard deviation of electron arrival times [ns] |
id | int64 | Id of element in truth |
outcome | <U32 | Outcome of matching to peaks |
matched_to | int64 | Id of matching element in peaks |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
keep_peak_fields | (area, range_50p_area, area_fraction_top, rise_time, tight_coincidence) | <OMITTED> | (match_acceptance,) | Add the reconstructed value of these variables |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
min_s2_bias_rec | 0.85 | <OMITTED> | (match_acceptance,) | If the S2 fraction is greater or equal than this, consider a peak successfully found even if it is split or chopped. |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
penalty_s2_by | ((misid_as_s1, -1.0), (split_and_misid, -1.0)) | <OMITTED> | (match_acceptance,) | Add a penalty to the acceptance fraction if the peak has the outcome. Should be tuple of tuples where each tuple should have the format of (outcome, penalty_factor) |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
truth_lookup_window | 1000000000 | <OMITTED> | (truth_matched,) | Look back and forth this many ns in the truth info |
match_acceptance
Description
Provided by plugin: AcceptanceComputer
Data kind: truth
Compute the acceptance of the matched peaks. This is done on the basis of arbitrary settings to allow better to disentangle possible scenarios that might be undesirable (like splitting an S2 into small S1 signals that could affect event reconstruction).
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
is_found | bool | Is the peak tagged "found" in the reconstructed data |
acceptance_fraction | float64 | Acceptance of the peak can be negative for penalized reconstruction |
rec_bias | float64 | Reconstruction bias 1 is perfect, 0.1 means incorrect |
rec_area | float32 | Peak integral in PE |
rec_range_50p_area | float32 | Width (in ns) of the central 50% area of the peak |
rec_area_fraction_top | float32 | Fraction of area seen by the top array (NaN for peaks with non-positive area) |
rec_rise_time | float32 | Time between 10% and 50% area quantiles [ns] |
rec_tight_coincidence | int16 | Number of PMTs with hits within tight range of mean |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
keep_peak_fields | (area, range_50p_area, area_fraction_top, rise_time, tight_coincidence) | <OMITTED> | (match_acceptance,) | Add the reconstructed value of these variables |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
min_s2_bias_rec | 0.85 | <OMITTED> | (match_acceptance,) | If the S2 fraction is greater or equal than this, consider a peak successfully found even if it is split or chopped. |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
penalty_s2_by | ((misid_as_s1, -1.0), (split_and_misid, -1.0)) | <OMITTED> | (match_acceptance,) | Add a penalty to the acceptance fraction if the peak has the outcome. Should be tuple of tuples where each tuple should have the format of (outcome, penalty_factor) |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
truth_lookup_window | 1000000000 | <OMITTED> | (truth_matched,) | Look back and forth this many ns in the truth info |
truth_events
Description
Provided by plugin: MatchEvents
Data kind: truth_events
- Match WFSim truth to the outcome peaks. To this end use the
matching algorithm of pema. Assign a peak-id to both the truth and the reconstructed peaks to be able to match the two. Also define the outcome of the matching (see pema.matching for possible outcomes).
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
start_match | int64 | First event number in event datatype within the truth event |
end_match | int64 | Last (inclusive!) event number in event datatype within the truth event |
outcome | <U32 | Outcome of matching to events |
truth_number | int64 | Truth event number |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
check_event_endtime | True | <OMITTED> | (truth_events,) | Check that all events have a non-zero duration. |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_overlapping | True | <OMITTED> | (events,) | Enable runtime checks for disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
electron_drift_velocity | cmt://elec...gin.run_id | cmt://electron_drift_velocity?run_id=0&version=ONLINE | (events,) | Vertical electron drift velocity in cm/ns (1e4 m/ms) |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
event_s1_min_coincidence | 2 | <OMITTED> | (events,) | Event level S1 min coincidence. Should be >= s1_min_coincidence in the peaklet classification |
exclude_s1_as_triggering_peaks | True | <OMITTED> | (events,) | If true exclude S1s as triggering peaks. |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
left_event_extension | 250000 | <OMITTED> | (events,) | Extend events this many ns to the left from each triggering peak. This extension is added to the maximum drift time. |
max_drift_length | 148.6515 | <OMITTED> | (events,) | Total length of the TPC from the bottom of gate to the top of cathode wires [cm] |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
min_area_fraction | 0.5 | <OMITTED> | (peak_proximity,) | The area of competing peaks must be at least this fraction of that of the considered peak |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
nearby_window | 10000000 | <OMITTED> | (peak_proximity,) | Peaks starting within this time window (on either side) in ns count as nearby. |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_max_proximity_time | 100000000 | <OMITTED> | (peak_proximity,) | Maximum value for proximity values such as t_to_next_peak [ns] |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_event_extension | 250000 | <OMITTED> | (events,) | Extend events this many ns to the right from each triggering peak. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (events,) | Minimum tight coincidence necessary to make an S1 |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sim_id_field | event_number | <OMITTED> | (truth_events,) | Group the truth info by this field. Options: ["event_number", "g4id"] |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
trigger_max_competing | 7 | <OMITTED> | (events,) | Peaks must have FEWER nearby larger or slightly smaller peaks to cause events |
trigger_min_area | 100 | <OMITTED> | (events,) | Peaks must have more area (PE) than this to cause events |
truth_lookup_window | 1000000000 | <OMITTED> | (truth_events,) | Look back and forth this many ns in the truth info |
truth_matched
Description
Provided by plugin: MatchPeaks
Data kind: truth
- Match WFSim truth to the outcome peaks. To this end use the
matching algorithm of pema. Assign a peak-id to both the truth and the reconstructed peaks to be able to match the two. Also define the outcome of the matching (see pema.matching for possible outcomes).
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
id | int64 | Id of element in truth |
outcome | <U32 | Outcome of matching to peaks |
matched_to | int64 | Id of matching element in peaks |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
truth_lookup_window | 1000000000 | <OMITTED> | (truth_matched,) | Look back and forth this many ns in the truth info |
events
Description
Provided by plugin: Events
Data kind: events
Plugin which defines an “event” in our TPC.
An event is defined by peak(s) in fixed range of time around a peak which satisfies certain conditions:
The triggering peak must have a certain area.
The triggering peak must have less than “trigger_max_competing” peaks. (A competing peak must have a certain area fraction of the triggering peak and must be in a window close to the main peak)
- Note:
The time range which defines an event gets chopped at the chunk boundaries. This happens at invalid boundaries of the
Columns provided
Field name | Data type | Comment |
---|---|---|
event_number | int64 | Event number in this dataset |
time | int64 | Event start time in ns since the unix epoch |
endtime | int64 | Event end time in ns since the unix epoch |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_overlapping | True | <OMITTED> | (events,) | Enable runtime checks for disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
electron_drift_velocity | cmt://elec...gin.run_id | cmt://electron_drift_velocity?run_id=0&version=ONLINE | (events,) | Vertical electron drift velocity in cm/ns (1e4 m/ms) |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
event_s1_min_coincidence | 2 | <OMITTED> | (events,) | Event level S1 min coincidence. Should be >= s1_min_coincidence in the peaklet classification |
exclude_s1_as_triggering_peaks | True | <OMITTED> | (events,) | If true exclude S1s as triggering peaks. |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
left_event_extension | 250000 | <OMITTED> | (events,) | Extend events this many ns to the left from each triggering peak. This extension is added to the maximum drift time. |
max_drift_length | 148.6515 | <OMITTED> | (events,) | Total length of the TPC from the bottom of gate to the top of cathode wires [cm] |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
min_area_fraction | 0.5 | <OMITTED> | (peak_proximity,) | The area of competing peaks must be at least this fraction of that of the considered peak |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
nearby_window | 10000000 | <OMITTED> | (peak_proximity,) | Peaks starting within this time window (on either side) in ns count as nearby. |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_max_proximity_time | 100000000 | <OMITTED> | (peak_proximity,) | Maximum value for proximity values such as t_to_next_peak [ns] |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_event_extension | 250000 | <OMITTED> | (events,) | Extend events this many ns to the right from each triggering peak. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_min_coincidence | 2 | <OMITTED> | (events,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
trigger_max_competing | 7 | <OMITTED> | (events,) | Peaks must have FEWER nearby larger or slightly smaller peaks to cause events |
trigger_min_area | 100 | <OMITTED> | (events,) | Peaks must have more area (PE) than this to cause events |
peak_proximity
Description
Provided by plugin: PeakProximity
Data kind: peaks
- Look for peaks around a peak to determine how many peaks are in proximity (in time) of a
peak.
Columns provided
Field name | Data type | Comment |
---|---|---|
n_competing | int32 | Number of nearby larger or slightly smaller peaks |
n_competing_left | int32 | Number of larger or slightly smaller peaks left of the main peak |
t_to_prev_peak | int64 | Time between end of previous peak and start of this peak [ns] |
t_to_next_peak | int64 | Time between end of this peak and start of next peak [ns] |
t_to_nearest_peak | int64 | Smaller of t_to_prev_peak and t_to_next_peak [ns] |
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
min_area_fraction | 0.5 | <OMITTED> | (peak_proximity,) | The area of competing peaks must be at least this fraction of that of the considered peak |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
nearby_window | 10000000 | <OMITTED> | (peak_proximity,) | Peaks starting within this time window (on either side) in ns count as nearby. |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_max_proximity_time | 100000000 | <OMITTED> | (peak_proximity,) | Maximum value for proximity values such as t_to_next_peak [ns] |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
peak_id
Description
Provided by plugin: PeakId
Data kind: peaks
Add id field to datakind
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
id | int64 | Id of element in peaks |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
peak_basics
Description
Provided by plugin: PeakBasics
Data kind: peaks
Compute the basic peak-properties, thereby dropping structured arrays.
NB: This plugin can therefore be loaded as a pandas DataFrame.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time of the peak (ns since unix epoch) |
endtime | int64 | End time of the peak (ns since unix epoch) |
center_time | int64 | Weighted center time of the peak (ns since unix epoch) |
area | float32 | Peak integral in PE |
n_hits | int32 | Number of hits contributing at least one sample to the peak |
n_channels | int16 | Number of PMTs contributing to the peak |
max_pmt | int16 | PMT number which contributes the most PE |
max_pmt_area | float32 | Area of signal in the largest-contributing PMT (PE) |
n_saturated_channels | int16 | Total number of saturated channels |
range_50p_area | float32 | Width (in ns) of the central 50% area of the peak |
range_90p_area | float32 | Width (in ns) of the central 90% area of the peak |
area_fraction_top | float32 | Fraction of area seen by the top array (NaN for peaks with non-positive area) |
length | int32 | Length of the peak waveform in samples |
dt | int16 | Time resolution of the peak waveform in ns |
rise_time | float32 | Time between 10% and 50% area quantiles [ns] |
tight_coincidence | int16 | Number of PMTs with hits within tight range of mean |
type | int8 | Classification of the peak(let) |
max_diff | int32 | Largest time difference between apexes of hits inside peak [ns] |
min_diff | int32 | Smallest time difference between apexes of hits inside peak [ns] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_peak_sum_area_rtol | None | <OMITTED> | (peak_basics,) | Check if the sum area and the sum of area per channel are the same. If None, don't do the check. To perform the check, set to the desired rtol value used e.g. '1e-4' (see np.isclose). |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peak_basics,) | Number of top PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
peaks
Description
Provided by plugin: Peaks
Data kind: peaks
- Merge peaklets and merged S2s such that we obtain our peaks (replacing all peaklets that were
later re-merged as S2s).
As this step is computationally trivial, never save this plugin.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int32 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
type | int8 | Classification of the peak(let) |
area | float32 | Integral across channels [PE] |
area_per_channel | ('<f4', (494,)) | Integral per channel [PE] |
n_hits | int32 | Number of hits contributing at least one sample to the peak |
data | ('<f4', (200,)) | Waveform data in PE/sample (not PE/ns!) |
data_top | ('<f4', (200,)) | Waveform data in PE/sample (not PE/ns!), top array |
width | ('<f4', (11,)) | Peak widths in range of central area fraction [ns] |
area_decile_from_midpoint | ('<f4', (11,)) | Peak widths: time between nth and 5th area decile [ns] |
saturated_channel | ('i1', (494,)) | Does the channel reach ADC saturation? |
n_saturated_channels | int16 | Total number of saturated channels |
tight_coincidence | int16 | Channel within tight range of mean |
max_gap | int32 | Largest gap between hits inside peak [ns] |
max_goodness_of_split | float32 | Maximum interior goodness of split |
max_diff | int32 | Largest time difference between apexes of hits inside peak [ns] |
min_diff | int32 | Smallest time difference between apexes of hits inside peak [ns] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
diagnose_sorting | False | <OMITTED> | (peaks,) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merge_without_s1 | True | <OMITTED> | (peaks,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
merged_s2s
Description
Provided by plugin: MergedS2s
Data kind: merged_s2s
- Merge together peaklets if peak finding favours that they would form a single peak
instead.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int32 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
type | int8 | Classification of the peak(let) |
area | float32 | Integral across channels [PE] |
area_per_channel | ('<f4', (494,)) | Integral per channel [PE] |
n_hits | int32 | Number of hits contributing at least one sample to the peak |
data | ('<f4', (200,)) | Waveform data in PE/sample (not PE/ns!) |
data_top | ('<f4', (200,)) | Waveform data in PE/sample (not PE/ns!), top array |
width | ('<f4', (11,)) | Peak widths in range of central area fraction [ns] |
area_decile_from_midpoint | ('<f4', (11,)) | Peak widths: time between nth and 5th area decile [ns] |
saturated_channel | ('i1', (494,)) | Does the channel reach ADC saturation? |
n_saturated_channels | int16 | Total number of saturated channels |
tight_coincidence | int16 | Channel within tight range of mean |
max_gap | int32 | Largest gap between hits inside peak [ns] |
max_goodness_of_split | float32 | Maximum interior goodness of split |
max_diff | int32 | Largest time difference between apexes of hits inside peak [ns] |
min_diff | int32 | Smallest time difference between apexes of hits inside peak [ns] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (merged_s2s,) | PMT gain model. Specify as (str(model_config), str(version), nT-->boolean |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
merge_without_s1 | True | <OMITTED> | (merged_s2s,) | If true, S1s will be igored during the merging. It's now possible for a S1 to be inside a S2 post merging |
merged_s2s_get_window_size_factor | 5 | <OMITTED> | (merged_s2s,) | Factor of the window size for the merged_s2s plugin |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (merged_s2s,) | Number of top TPC array PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (merged_s2s,) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_merge_gap_thresholds | ((1.7, 26500.0), (4.0, 2600.0), (5.0, 0.0)) | <OMITTED> | (merged_s2s,) | Points to define maximum separation between peaklets to allow merging [ns] depending on log10 area of the merged peak\nwhere the gap size of the first point is the maximum gap to allow mergingand the area of the last point is the maximum area to allow merging. The format is ((log10(area), max_gap), (..., ...), (..., ...)) |
s2_merge_max_duration | 50000 | <OMITTED> | (merged_s2s,) | Do not merge peaklets at all if the result would be a peak longer than this [ns] |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
sum_waveform_top_array | True | <OMITTED> | (merged_s2s,) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
peaklet_classification
Description
Provided by plugin: PeakletClassification
Data kind: peaklets
Classify peaklets as unknown, S1, or S2.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int32 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
type | int8 | Classification of the peak(let) |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | 253 | 253 | (peaklet_classification,) | Number of top PMTs |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
s1_flatten_threshold_aft | (0.6, 100) | <OMITTED> | (peaklet_classification,) | Threshold for AFT, above which we use a flatted boundary for rise timeSpecified values: (AFT boundary, constant rise time). |
s1_max_rise_time_post100 | 200 | <OMITTED> | (peaklet_classification,) | Maximum S1 rise time for > 100 PE [ns] |
s1_min_coincidence | 2 | <OMITTED> | (peaklet_classification,) | Minimum tight coincidence necessary to make an S1 |
s1_risetime_aft_parameters | (-1, 2.6) | <OMITTED> | (peaklet_classification,) | Slope and offset in exponential of emperical boundary in the rise time-AFT plot. Specified as (slope, offset) |
s1_risetime_area_parameters | (50, 80, 12) | <OMITTED> | (peaklet_classification,) | norm, const, tau in the empirical boundary in the risetime-area plot |
s2_min_pmts | 4 | <OMITTED> | (peaklet_classification,) | Minimum number of PMTs contributing to an S2 |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
peaklets
Description
Provided by plugin: Peaklets
Data kind: peaklets
- Split records into:
peaklets
lone_hits
Peaklets are very aggressively split peaks such that we are able to find S1-S2s even if they are close to each other. (S2) Peaks that are split into too many peaklets will be merged later on.
- To get Peaklets from records apply/do:
Hit finding
Peak finding
Peak splitting using the natural breaks algorithm
Compute the digital sum waveform
Lone hits are all hits which are outside of any peak. The area of lone_hits includes the left and right hit extension, except the extension overlaps with any peaks or other hits.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int32 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
type | int8 | Classification of the peak(let) |
area | float32 | Integral across channels [PE] |
area_per_channel | ('<f4', (494,)) | Integral per channel [PE] |
n_hits | int32 | Number of hits contributing at least one sample to the peak |
data | ('<f4', (200,)) | Waveform data in PE/sample (not PE/ns!) |
data_top | ('<f4', (200,)) | Waveform data in PE/sample (not PE/ns!), top array |
width | ('<f4', (11,)) | Peak widths in range of central area fraction [ns] |
area_decile_from_midpoint | ('<f4', (11,)) | Peak widths: time between nth and 5th area decile [ns] |
saturated_channel | ('i1', (494,)) | Does the channel reach ADC saturation? |
n_saturated_channels | int16 | Total number of saturated channels |
tight_coincidence | int16 | Channel within tight range of mean |
max_gap | int32 | Largest gap between hits inside peak [ns] |
max_goodness_of_split | float32 | Maximum interior goodness of split |
max_diff | int32 | Largest time difference between apexes of hits inside peak [ns] |
min_diff | int32 | Smallest time difference between apexes of hits inside peak [ns] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
lone_hits
Description
Provided by plugin: Peaklets
Data kind: lone_hits
- Split records into:
peaklets
lone_hits
Peaklets are very aggressively split peaks such that we are able to find S1-S2s even if they are close to each other. (S2) Peaks that are split into too many peaklets will be merged later on.
- To get Peaklets from records apply/do:
Hit finding
Peak finding
Peak splitting using the natural breaks algorithm
Compute the digital sum waveform
Lone hits are all hits which are outside of any peak. The area of lone_hits includes the left and right hit extension, except the extension overlaps with any peaks or other hits.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int16 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
area | float32 | Integral [ADC x samples] |
left | int16 | Index of sample in record in which hit starts |
right | int16 | Index of first sample in record just beyond hit (exclusive bound) |
left_integration | int16 | For lone hits, index of sample in record where integration starts |
right_integration | int16 | For lone hits, index of first sample beyond integration region |
record_i | int32 | Internal (temporary) index of fragment in which hit was found |
threshold | float32 | ADC threshold applied in order to find hits |
height | float32 | Maximum amplitude above baseline [ADC counts] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (peaklets, lone_hits) | immutabledict mapping subdetector to (min, max) channel number. |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
diagnose_sorting | False | <OMITTED> | (peaklets, lone_hits) | Enable runtime checks for sorting and disjointness |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model | <OMITTED> | cmt://to_pe_model?run_id=0&version=ONLINE | (peaklets, lone_hits) | PMT gain model. Specify as URL or explicit value |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (peaklets, lone_hits) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_top_pmts | <OMITTED> | 253 | (peaklets, lone_hits) | Number of top TPC array PMTs |
n_tpc_pmts | <OMITTED> | 494 | (peaklets, lone_hits) | Number of TPC PMTs |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
peak_left_extension | 30 | <OMITTED> | (peaklets, lone_hits) | Include this many ns left of hits in peaks |
peak_min_pmts | 2 | <OMITTED> | (peaklets, lone_hits) | Minimum number of contributing PMTs needed to define a peak |
peak_right_extension | 200 | <OMITTED> | (peaklets, lone_hits) | Include this many ns right of hits in peaks |
peak_split_filter_wing_width | 70 | <OMITTED> | (peaklets, lone_hits) | Wing width of moving average filter for low-split natural breaks |
peak_split_gof_threshold | (None, ((0.5, 1.0), (6.0, 0.4)), ((2.5, 1.0), (5.625, 0.4))) | <OMITTED> | (peaklets, lone_hits) | Natural breaks goodness of fit/split threshold to split a peak. Specify as tuples of (log10(area), threshold). |
peak_split_iterations | 20 | <OMITTED> | (peaklets, lone_hits) | Maximum number of recursive peak splits to do. |
peak_split_min_area | 40.0 | <OMITTED> | (peaklets, lone_hits) | Minimum area to evaluate natural breaks criterion. Smaller peaks are not split. |
peaklet_gap_threshold | 700 | <OMITTED> | (peaklets, lone_hits) | No hits for this many ns triggers a new peak |
peaklet_max_duration | 10000000 | <OMITTED> | (peaklets, lone_hits) | Maximum duration [ns] of a peaklet |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
saturation_correction_on | True | <OMITTED> | (peaklets, lone_hits) | On off switch for saturation correction |
saturation_min_reference_length | 20 | <OMITTED> | (peaklets, lone_hits) | Minimum number of reference sample used to correct saturated samples |
saturation_reference_length | 100 | <OMITTED> | (peaklets, lone_hits) | Maximum number of reference sample used to correct saturated samples |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
sum_waveform_top_array | True | <OMITTED> | (peaklets, lone_hits) | Digitize the sum waveform of the top array separately |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
tight_coincidence_window_left | 50 | <OMITTED> | (peaklets, lone_hits) | Time range left of peak center to call a hit a tight coincidence (ns) |
tight_coincidence_window_right | 50 | <OMITTED> | (peaklets, lone_hits) | Time range right of peak center to call a hit a tight coincidence (ns) |
records
Description
Provided by plugin: PulseProcessing
Data kind: records
- Split raw_records into:
(tpc) records
aqmon_records
pulse_counts
- For TPC records, apply basic processing:
Flip, baseline, and integrate the waveform
Apply software HE veto after high-energy peaks.
Find hits, apply linear filter, and zero outside hits.
pulse_counts holds some average information for the individual PMT channels for each chunk of raw_records. This includes e.g. number of recorded pulses, lone_pulses (pulses which do not overlap with any other pulse), or mean values of baseline and baseline rms channel.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int16 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
pulse_length | int32 | Length of pulse to which the record belongs (without zero-padding) |
record_i | int16 | Fragment number in the pulse |
area | int32 | Integral in ADC counts x samples |
reduction_level | uint8 | Level of data reduction applied (strax.ReductionLevel enum) |
baseline | float32 | Baseline in ADC counts. data = int(baseline) - data_orig |
baseline_rms | float32 | Baseline RMS in ADC counts. data = baseline - data_orig |
amplitude_bit_shift | int16 | Multiply data by 2**(this number). Baseline is unaffected. |
data | ('<i2', (110,)) | Waveform data in raw counts above integer part of baseline |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
veto_regions
Description
Provided by plugin: PulseProcessing
Data kind: veto_regions
- Split raw_records into:
(tpc) records
aqmon_records
pulse_counts
- For TPC records, apply basic processing:
Flip, baseline, and integrate the waveform
Apply software HE veto after high-energy peaks.
Find hits, apply linear filter, and zero outside hits.
pulse_counts holds some average information for the individual PMT channels for each chunk of raw_records. This includes e.g. number of recorded pulses, lone_pulses (pulses which do not overlap with any other pulse), or mean values of baseline and baseline rms channel.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int16 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
area | float32 | Integral [ADC x samples] |
left | int16 | Index of sample in record in which hit starts |
right | int16 | Index of first sample in record just beyond hit (exclusive bound) |
left_integration | int16 | For lone hits, index of sample in record where integration starts |
right_integration | int16 | For lone hits, index of first sample beyond integration region |
record_i | int32 | Internal (temporary) index of fragment in which hit was found |
threshold | float32 | ADC threshold applied in order to find hits |
height | float32 | Maximum amplitude above baseline [ADC counts] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
pulse_counts
Description
Provided by plugin: PulseProcessing
Data kind: pulse_counts
- Split raw_records into:
(tpc) records
aqmon_records
pulse_counts
- For TPC records, apply basic processing:
Flip, baseline, and integrate the waveform
Apply software HE veto after high-energy peaks.
Find hits, apply linear filter, and zero outside hits.
pulse_counts holds some average information for the individual PMT channels for each chunk of raw_records. This includes e.g. number of recorded pulses, lone_pulses (pulses which do not overlap with any other pulse), or mean values of baseline and baseline rms channel.
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time of the chunk |
endtime | int64 | End time of the chunk |
pulse_count | ('<i8', (494,)) | Number of pulses |
lone_pulse_count | ('<i8', (494,)) | Number of lone pulses |
pulse_area | ('<i8', (494,)) | Integral of all pulses in ADC_count x samples |
lone_pulse_area | ('<i8', (494,)) | Integral of lone pulses in ADC_count x samples |
baseline_mean | ('<i2', (494,)) | Average baseline |
baseline_rms_mean | ('<f4', (494,)) | Average baseline rms |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
allow_sloppy_chunking | False | <OMITTED> | (records, veto_regions, pulse_counts) | Use a default baseline for incorrectly chunked fragments. This is a kludge for improperly converted XENON1T data. |
baseline_samples | 40 | <OMITTED> | (records, veto_regions, pulse_counts) | Number of samples to use at the start of the pulse to determine the baseline |
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
check_raw_record_overlaps | True | False | (records, veto_regions, pulse_counts) | Crash if any of the pulses in raw_records overlap with others in the same channel |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
hev_gain_model | None | <OMITTED> | (records, veto_regions, pulse_counts) | PMT gain model used in the software high-energy veto. |
hit_min_amplitude | cmt://hit_...gin.run_id | cmt://hit_thresholds_tpc?run_id=0&version=ONLINE | (records, veto_regions, pulse_counts) | Minimum hit amplitude in ADC counts above baseline. Specify as a tuple of length n_tpc_pmts, or a number,or a string like "pmt_commissioning_initial" which means callinghitfinder_thresholds.pyor a tuple like (correction=str, version=str, nT=boolean),which means we are using cmt. |
max_veto_value | None | <OMITTED> | (records, veto_regions, pulse_counts) | Optionally pass a HE peak that exceeds this absolute area. (if performing a hard veto, can keep a few statistics.) |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (records, veto_regions, pulse_counts) | Number of TPC PMTs |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
pmt_pulse_filter | None | <OMITTED> | (records, veto_regions, pulse_counts) | Linear filter to apply to pulses, will be normalized. |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
save_outside_hits | (3, 20) | <OMITTED> | (records, veto_regions, pulse_counts) | Save (left, right) samples besides hits; cut the rest |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
tail_veto_duration | 3000000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time in ns to veto after large peaks |
tail_veto_pass_extend | 3 | <OMITTED> | (records, veto_regions, pulse_counts) | Extend pass veto by this many samples (tail_veto_resolution!) |
tail_veto_pass_fraction | 0.05 | <OMITTED> | (records, veto_regions, pulse_counts) | Pass veto if maximum amplitude above max * fraction |
tail_veto_resolution | 1000 | <OMITTED> | (records, veto_regions, pulse_counts) | Time resolution in ns for pass-veto waveform summation |
tail_veto_threshold | 0 | <OMITTED> | (records, veto_regions, pulse_counts) | Minimum peakarea in PE to trigger tail veto.Set to None, 0 or False to disable veto. |
truth_id
Description
Provided by plugin: TruthId
Data kind: truth
(no plugin description)
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
endtime | int64 | Exclusive end time since unix epoch [ns] |
id | int64 | Id of element in truth |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
raw_records
Description
Provided by plugin: RawRecordsFromFaxNT
Data kind: raw_records
(no plugin description)
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int16 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
pulse_length | int32 | Length of pulse to which the record belongs (without zero-padding) |
record_i | int16 | Fragment number in the pulse |
baseline | int16 | Baseline determined by the digitizer (if this is supported) |
data | ('<i2', (110,)) | Waveform data in raw ADC counts |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
raw_records_aqmon
Description
Provided by plugin: RawRecordsFromFaxNT
Data kind: raw_records_aqmon
(no plugin description)
Columns provided
Field name | Data type | Comment |
---|---|---|
time | int64 | Start time since unix epoch [ns] |
length | int32 | Length of the interval in samples |
dt | int16 | Width of one sample [ns] |
channel | int16 | Channel/PMT number |
pulse_length | int32 | Length of pulse to which the record belongs (without zero-padding) |
record_i | int16 | Fragment number in the pulse |
baseline | int16 | Baseline determined by the digitizer (if this is supported) |
data | ('<i2', (110,)) | Waveform data in raw ADC counts |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
truth
Description
Provided by plugin: RawRecordsFromFaxNT
Data kind: truth
(no plugin description)
Columns provided
Field name | Data type | Comment |
---|---|---|
event_number | int32 | Waveform simulator event number. |
type | int8 | Quanta type (S1 photons or S2 electrons) |
time | int64 | Time of the interaction [ns] |
x | float32 | X position of the cluster [cm] |
y | float32 | Y position of the cluster [cm] |
z | float32 | Z position of the cluster [cm] |
amp | int32 | Number of quanta |
recoil | int8 | Recoil type of interaction. |
e_dep | float32 | Energy deposit of interaction |
tot_e | float32 | Total energy deposit in the sensitive volume |
g4id | int32 | Eventid like in geant4 output rootfile |
vol_id | int32 | Volume id giving the detector subvolume |
local_field | float64 | Local field [ V / cm ] |
n_excitons | int32 | Number of excitons |
x_pri | float32 | X position of the primary particle [cm] |
y_pri | float32 | Y position of the primary particle [cm] |
z_pri | float32 | Z position of the primary particle [cm] |
endtime | int64 | End time of the interaction [ns] |
n_electron | int32 | Number of simulated electrons |
n_photon | int32 | Number of photons reaching PMT |
n_pe | int32 | Number of photons + dpe passing |
n_photon_trigger | int32 | Number of photons passing trigger |
n_pe_trigger | int32 | Number of photons + dpe passing trigger |
raw_area | float64 | Raw area in pe |
raw_area_trigger | float64 | Raw area in pe passing trigger |
n_photon_bottom | int32 | Number of photons reaching PMT (bottom) |
n_pe_bottom | int32 | Number of photons + dpe passing (bottom) |
n_photon_trigger_bottom | int32 | Number of photons passing trigger (bottom) |
n_pe_trigger_bottom | int32 | Number of photons + dpe passing trigger (bottom) |
raw_area_bottom | float64 | Raw area in pe (bottom) |
raw_area_trigger_bottom | float64 | Raw area in pe passing trigger (bottom) |
t_first_photon | float64 | Arrival time of the first photon [ns] |
t_last_photon | float64 | Arrival time of the last photon [ns] |
t_mean_photon | float64 | Mean time of the photons [ns] |
t_sigma_photon | float64 | Standard deviation of photon arrival times [ns] |
x_mean_electron | float32 | X field-distorted mean position of the electrons [cm] |
y_mean_electron | float32 | Y field-distorted mean position of the electrons [cm] |
t_first_electron | float64 | Arrival time of the first electron [ns] |
t_last_electron | float64 | Arrival time of the last electron [ns] |
t_mean_electron | float64 | Mean time of the electrons [ns] |
t_sigma_electron | float64 | Standard deviation of electron arrival times [ns] |
Dependencies
Configuration options
These are all options that affect this data type. This also includes options taken by dependencies of this datatype, because changing any of those options affect this data indirectly.
option | default | current | applies_to | help |
---|---|---|---|---|
channel_map | <OMITTED> | (tpc, he, aqmon, aqmon_nv, tpc_blank, mv, aux_mv, mv_blank, nveto, nveto_blank) | (raw_records, raw_records_he, raw_records_aqmon, truth) | immutabledict mapping subdetector to (min, max) channel number. Provided by context |
chunk_size | 100 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Duration of each chunk in seconds |
detector | XENONnT | XENONnT | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
event_rate | 1000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Average number of events per second |
fax_config | fax_config_nt_design.json | fax_config_nt_design.json | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
fax_config_override | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary with configuration option overrides |
fax_config_override_from_cmt | None | {'drift_time_gate': ('cmt_run_id', '0', 'electron_drift_time_gate', 'ONLINE', True), 'drift_velocity_liquid': ('cmt_run_id', '0', 'electron_drift_velocity', 'ONLINE', True), 'electron_lifetime_liquid': ('cmt_run_id', '0', 'elife', 'ONLINE', True)} | (raw_records, raw_records_he, raw_records_aqmon, truth) | Dictionary of fax parameter names (key) mapped to CMT config names (value)where the fax parameter values will be replaced by CMT |
fax_file | None | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Directory with fax instructions |
gain_model_mc | cmt://to_p...gin.run_id | cmt://to_pe_model?run_id=0&version=ONLINE | (raw_records, raw_records_he, raw_records_aqmon, truth) | PMT gain model. Specify as (model_type, model_config). |
n_chunk | 10 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of chunks to simulate |
n_top_pmts | <OMITTED> | 253 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in top array. Provided by context |
n_tpc_pmts | <OMITTED> | 494 | (raw_records, raw_records_he, raw_records_aqmon, truth) | Number of pmts in tpc. Provided by context |
per_pmt_truth | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Store the info per channel in the truth file |
right_raw_extension | 100000 | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | |
seed | False | <OMITTED> | (raw_records, raw_records_he, raw_records_aqmon, truth) | Option for setting the seed of the random number generator used forgeneration of the instructions |
pema package
Submodules
pema.compare_plots module
- pema.compare_plots.compare_outcomes(st: Context, data: ndarray, st_alt: Context | None = None, data_alt: ndarray | None = None, match_fuzz: int = 500, plot_fuzz: int = 500, max_peaks: int = 10, default_label: str = 'default', custom_label: str = 'custom', fig_dir: None | str = None, show: bool = True, randomize: bool = True, different_by: bool | str | None = 'acceptance_fraction', run_id: None | str = None, raw: bool = False, pulse: bool = True) None [source]
Compare the outcomes of two contexts with one another. In order to allow for selections, we need to pass the data as second and third argument respectively.
- Parameters:
st – the context of the current master, to compare with st_custom
data – the data consistent with the default context, can be cut to select certain data
st_alt – context wherewith to compare st_default
data_alt – the data with the custom context, should be same length as truth_vs_default
match_fuzz – Extend loading peaks this many ns to allow for small shifts in reconstruction. Will extend the time range left and right
plot_fuzz – Make the plot slightly larger with this many ns for readability
max_peaks – max number of peaks to be shown. Set to 1 for plotting a singe peak.
default_label – How to label the default reconstruction
:param custom_label:How to label the custom reconstruction :param fig_dir: Where to save figures (if None, don’t save) :param show: show the figures or not. :param randomize: randomly order peaks to get a random sample of
<max_peaks> every time
- Parameters:
different_by – Field to filter waveforms by. Only show waveforms where this field is different in data. If False, plot any waveforms from the two data sets.
run_id – Optional argument in case run_id is not a field in the data.
raw – include raw-records-trace
pulse – plot raw-record traces.
- Returns:
None
- pema.compare_plots.compare_truth_and_outcome(st: Context, data: ndarray, **kwargs) None [source]
Compare the outcomes of the truth and the reconstructed peaks
- Parameters:
st – the context of the current master, to compare with
data – the data consistent with the default context, can be cut to select certain data
match_fuzz – Extend loading peaks this many ns to allow for small shifts in reconstruction. Will extend the time range left and right
plot_fuzz – Make the plot slightly larger with this many ns for readability
max_peaks – max number of peaks to be shown. Set to 1 for plotting a singe peak.
label – How to label the default reconstruction
fig_dir – Where to save figures (if None, don’t save)
show – show the figures or not.
randomize – randomly order peaks to get a random sample of <max_peaks> every time
run_id – Optional argument in case run_id is not a field in the data.
raw – include raw-records-trace
pulse – plot raw-record traces.
- Returns:
None
pema.contexts module
- pema.contexts.pema_context(base_dir: str, fax_config: str, cmt_run_id_sim: str, config_update: dict | None = None, cmt_version='global_v8', raw_dir=None, data_dir=None, raw_types=None, **kwargs) Context [source]
Central context for pema, allows to init from a config. :param base_dir: Where store instructions, :param fax_config: fax configuration file :param cmt_run_id_sim: run_id for CMT (see wfsim.contexts.xenonnt_simulation) :param cmt_version: the global correction version applied to the data :param config_update: Setup the config of the context :param raw_dir: Where to store the low level datatypes :param data_dir: Where to store the high level datatypes :param raw_types: Low level datatypes, stored separately from
high level datatypes
- Kwargs:
any kwargs are directly passed to the context
- Returns:
context
pema.match_plugins module
- class pema.match_plugins.AcceptanceComputer[source]
Bases:
Plugin
Compute the acceptance of the matched peaks. This is done on the basis of arbitrary settings to allow better to disentangle possible scenarios that might be undesirable (like splitting an S2 into small S1 signals that could affect event reconstruction).
- keep_peak_fields
Dispatch on URL protocol.
unrecognized protocol returns identity inspired by dasks Dispatch and fsspec fs protocols.
- min_s2_bias_rec
Dispatch on URL protocol.
unrecognized protocol returns identity inspired by dasks Dispatch and fsspec fs protocols.
- penalty_s2_by
Dispatch on URL protocol.
unrecognized protocol returns identity inspired by dasks Dispatch and fsspec fs protocols.
- takes_config = immutabledict({'keep_peak_fields': <straxen.url_config.URLConfig object>, 'penalty_s2_by': <straxen.url_config.URLConfig object>, 'min_s2_bias_rec': <straxen.url_config.URLConfig object>})
- class pema.match_plugins.MatchPeaks[source]
Bases:
OverlapWindowPlugin
- Match WFSim truth to the outcome peaks. To this end use the
matching algorithm of pema. Assign a peak-id to both the truth and the reconstructed peaks to be able to match the two. Also define the outcome of the matching (see pema.matching for possible outcomes).
- takes_config = immutabledict({'truth_lookup_window': <straxen.url_config.URLConfig object>})
- truth_lookup_window
Dispatch on URL protocol.
unrecognized protocol returns identity inspired by dasks Dispatch and fsspec fs protocols.
pema.matching module
Utility to match peaks from results of different processor versions / processor and simulator
- pema.matching.append_fields(base, names, data, dtypes=None, fill_value=-1, usemask=False, asrecarray=False)[source]
Append fields to numpy structured array Does nothing if array already has fields with the same name.
- pema.matching.match_peaks(allpeaks1, allpeaks2, matching_fuzz=0, unknown_types=(0,))[source]
- Perform peak matching between two numpy record arrays with fields:
time, endtime (or dt and length), id, type, area
If a peak is split into many fragments (e.g. two close peaks split into three peaks), the results are unreliable and depend on which peak set is peaks1 and which is peaks2.
Returns (allpeaks1, allpeaks2), each with two extra fields: outcome, matched_to:
- outcome: Can be one of:
- found: Peak was matched 1-1 between peaks1 and peaks2 (type agrees,
- no other peaks in range).
Note that area, widths, etc. can still be quite different!
missed: Peak is not present in the other list misid_as_XX: Peak is present in the other list, but has type XX merged: Peak is merged with another peak in the other list, the new
‘super-peak’ has the same type
merged_to_XX: As above, but ‘super-peak’ has type XX split: Peak is split in the other list, but more than one fragment
has the same type as the parent.
- chopped: As split, but one or several fragments are unclassified,
exactly one has the correct type.
- split_and_unclassified: As split, but all fragments are unclassified
in the other list.
- split_and_misid: As split, but at least one fragment has a different
peak type.
- matched_to: id of matching in peak in the other list if outcome is found
or misid_as_XX, INT_NAN otherwise.
pema.misc module
- pema.misc.save_canvas(name: str, save_dir: str = './figures', dpi: int = 200, tight_layout: bool = False, pickle_dump: bool = False, other_formats: List[str] | None = None) None [source]
Wrapper for saving current figure. Saves to PNG by default and also adds pdf and svg formats
- Parameters:
name – How to name the figure (no extension required)
save_dir – Base where to store figures
dpi – dots per inch for saving the option
tight_layout – if true use plt.tight_layout
pickle_dump – DEPRECATED option
other_formats – other formats to save in (by default svg and pdf)
- Returns:
None
pema.scripts module
Helpers for doing processing on dali
- exception pema.scripts.JobFailedError[source]
Bases:
ValueError
If a script job failes, raise this error
- class pema.scripts.ProcessRun(st: <module 'strax.context' from '/home/docs/checkouts/readthedocs.org/user_builds/pema/envs/latest/lib/python3.9/site-packages/strax/context.py'>, run_id: str | tuple | list, target: str | tuple, config: dict | ~immutabledict.immutabledict | None = None)[source]
Bases:
object
Class that allows for bookkeeping of runs of simulations
- base_dir_requires = ('configs', 'logs', 'scripts')
- exec_dali(cmd, job_name, bash_activate, mem=2000, partition='xenon1t', max_hours='04:00:00')[source]
- static extract_base_dir(st)[source]
Extract a base dir from the context (either from self or storage)
- log_file = None
- make_cmd(debug=True, not_lazy=True)[source]
return_command = just return the command, don’t do the actual file stuf
- process = None
- purge_below(delete_below='peaklets', exclude=('raw_records', 'records'))[source]
Delete all the data below the given peaklet :param delete_below: target where below all the data :param exclude: :return:
- script_file = None
pema.summary_plots module
- pema.summary_plots.binom_interval(success, total, conf_level=0.95)[source]
Confidence interval on binomial - using Jeffreys interval Code stolen from https://gist.github.com/paulgb/6627336 Agrees with http://statpages.info/confint.html for binom_interval(1, 10)
pema.wfsim_utils module
- pema.wfsim_utils.inst_to_csv(csv_file: str, get_inst_from=<function rand_instructions>, **kwargs)[source]
Write instructions to csv file :param csv_file: path to the csv file :param get_inst_from: function to modify instructions and generate S1 S2 instructions from :param kwargs: key word arguments to give to the get_inst_from-function
- pema.wfsim_utils.rand_instructions(event_rate: int, chunk_size: int, n_chunk: int, drift_field: float, energy_range: tuple | list | ndarray, tpc_length: float = 148.6515, tpc_radius: float = 66.4, nest_inst_types: List[int] | Tuple[List] | ndarray | None = None) dict [source]
Generate instructions to run WFSim :param event_rate: # events per second :param chunk_size: the size of each chunk :param n_chunk: the number of chunks :param energy_range: the energy range (in keV) of the recoil type :param tpc_length: the max depth of the detector :param tpc_radius: the max radius of the detector :param nest_inst_types: the :param drift_field: :return: