Pema

Github page: https://github.com/XENONnT/pema

Built on top of:

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

j.angevaare@nikhef.nl

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')
_images/tutorials_Getting_started_with_Pema_20_1.png

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
%3 truth_extended truth_extended match_acceptance match_acceptance truth_extended->match_acceptance truth truth truth_extended->truth truth_id truth_id truth_extended->truth_id truth_matched truth_matched truth_extended->truth_matched match_acceptance->truth match_acceptance->truth_matched peak_basics peak_basics match_acceptance->peak_basics peak_id peak_id match_acceptance->peak_id truth_id->truth truth_matched->truth truth_matched->truth_id truth_matched->peak_basics truth_matched->peak_id peaks peaks peak_basics->peaks peak_id->peak_basics peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records
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
%3 match_acceptance match_acceptance truth truth match_acceptance->truth truth_matched truth_matched match_acceptance->truth_matched peak_basics peak_basics match_acceptance->peak_basics peak_id peak_id match_acceptance->peak_id truth_matched->truth truth_matched->peak_basics truth_matched->peak_id truth_id truth_id truth_matched->truth_id peaks peaks peak_basics->peaks peak_id->peak_basics truth_id->truth peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records
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
%3 truth_events truth_events truth truth truth_events->truth events events truth_events->events peak_basics peak_basics events->peak_basics peak_proximity peak_proximity events->peak_proximity peaks peaks peak_basics->peaks peak_proximity->peak_basics peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records
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
%3 truth_matched truth_matched truth truth truth_matched->truth truth_id truth_id truth_matched->truth_id peak_basics peak_basics truth_matched->peak_basics peak_id peak_id truth_matched->peak_id truth_id->truth peaks peaks peak_basics->peaks peak_id->peak_basics peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records
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:

  1. The triggering peak must have a certain area.

  2. 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
%3 events events peak_basics peak_basics events->peak_basics peak_proximity peak_proximity events->peak_proximity peaks peaks peak_basics->peaks peak_proximity->peak_basics peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 peak_proximity peak_proximity peak_basics peak_basics peak_proximity->peak_basics peaks peaks peak_basics->peaks peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 peak_id peak_id peak_basics peak_basics peak_id->peak_basics peaks peaks peak_basics->peaks peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 peak_basics peak_basics peaks peaks peak_basics->peaks peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 peaks peaks peaklets peaklets peaks->peaklets peaklet_classification peaklet_classification peaks->peaklet_classification merged_s2s merged_s2s peaks->merged_s2s records records peaklets->records peaklet_classification->peaklets merged_s2s->peaklets merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 merged_s2s merged_s2s peaklets peaklets merged_s2s->peaklets peaklet_classification peaklet_classification merged_s2s->peaklet_classification lone_hits lone_hits merged_s2s->lone_hits records records peaklets->records peaklet_classification->peaklets lone_hits->records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 peaklet_classification peaklet_classification peaklets peaklets peaklet_classification->peaklets records records peaklets->records raw_records raw_records records->raw_records lone_hits lone_hits lone_hits->records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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:
  1. Hit finding

  2. Peak finding

  3. Peak splitting using the natural breaks algorithm

  4. 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
%3 peaklets peaklets records records peaklets->records raw_records raw_records records->raw_records lone_hits lone_hits lone_hits->records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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:
  1. Hit finding

  2. Peak finding

  3. Peak splitting using the natural breaks algorithm

  4. 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
%3 peaklets peaklets records records peaklets->records raw_records raw_records records->raw_records lone_hits lone_hits lone_hits->records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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:
  1. Flip, baseline, and integrate the waveform

  2. Apply software HE veto after high-energy peaks.

  3. 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
%3 records records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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:
  1. Flip, baseline, and integrate the waveform

  2. Apply software HE veto after high-energy peaks.

  3. 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
%3 records records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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:
  1. Flip, baseline, and integrate the waveform

  2. Apply software HE veto after high-energy peaks.

  3. 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
%3 records records raw_records raw_records records->raw_records veto_regions veto_regions veto_regions->raw_records pulse_counts pulse_counts pulse_counts->raw_records truth truth
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
%3 truth_id truth_id truth truth truth_id->truth raw_records raw_records
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
%3 raw_records raw_records raw_records_aqmon raw_records_aqmon truth truth
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
%3 raw_records raw_records raw_records_aqmon raw_records_aqmon truth truth
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
%3 raw_records raw_records truth truth
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.axvline(v, **kwargs)[source]
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.compare_plots.plot_peak(p, t0=None, center_time=True, include_info=None, **kwargs)[source]
pema.compare_plots.rr_simple_plot(st, run_id, t_range)[source]

Plot some raw-record pulses within (touching) the t_range :param st: :param run_id: :param t_range: :param legend: :return:

pema.compare_plots.seconds_range_xaxis(seconds_range, t0=None)[source]

Make a pretty time axis given seconds_range

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).

compute(truth, peaks)[source]
config: Dict
data_kind: str | immutabledict | dict = 'truth'
depends_on: tuple = ('truth', 'truth_matched', 'peak_basics', 'peak_id')
deps: Dict
dtype: tuple | dtype | immutabledict | dict
infer_dtype()[source]

Return dtype of computed data; used only if no dtype attribute defined.

input_buffer: Dict[str, Chunk]
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.

provides: tuple = ('match_acceptance',)
run_i: int
run_id: str
setup()[source]

Hook if plugin wants to do something on initialization.

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).

compute(truth, peaks)[source]
config: Dict
data_kind: str | immutabledict | dict = 'truth'
depends_on: tuple = ('truth', 'truth_id', 'peak_basics', 'peak_id')
deps: Dict
dtype: tuple | dtype | immutabledict | dict
get_window_size()[source]

Return the required window size in nanoseconds.

infer_dtype()[source]

Return dtype of computed data; used only if no dtype attribute defined.

input_buffer: Dict[str, Chunk]
provides: tuple = ('truth_matched',)
run_i: int
run_id: str
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.

class pema.match_plugins.TruthExtended[source]

Bases: MergeOnlyPlugin

Merge the matched acceptance to the extended truth

config: Dict
data_kind: str | immutabledict | dict = 'truth'
depends_on: tuple = ('match_acceptance', 'truth', 'truth_id', 'truth_matched')
deps: Dict
dtype: tuple | dtype | immutabledict | dict
input_buffer: Dict[str, Chunk]
provides: tuple = ('truth_extended',)
run_i: int
run_id: str
save_when = 2

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

all_stored(show_key=False, return_bool=False)[source]
base_dir_requires = ('configs', 'logs', 'scripts')
exec_dali(cmd, job_name, bash_activate, mem=2000, partition='xenon1t', max_hours='04:00:00')[source]
exec_local(cmd, job_name)[source]
static extract_base_dir(st)[source]

Extract a base dir from the context (either from self or storage)

job_finished()[source]
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:

read_log()[source]
script_file = None
pema.scripts.write_dict_to_json(path: str, to_write: dict)[source]
pema.scripts.write_script(fn, script, **kwargs)[source]

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.summary_plots.peak_matching_histogram(results, histogram_key, bin_edges)[source]

Make 1D histogram of peak matching results (=peaks with extra fields) added by histogram_key

pema.summary_plots.plot_peak_matching_histogram(*args, **kwargs)[source]

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:

Module contents

Indices and tables