scripts for making and analyzing DL Gen2 ntuples
- ROOT is needed for all scripts
- pytorch is needed for the LArPID network
- The ubdl software environment must be setup to run the ntuple maker (
make_dlgen2_flat_ntuples.py
). See the quick start section of the readme in the ubdl repository for instructions
ROOT, pytorch, and all of the dependencies needed to compile the ubdl repository are available in a singularity container Taritree has prepared, which you can find on the Tufts cluster at /cluster/tufts/wongjiradlabnu/larbys/larbys-container/singularity_minkowskiengine_u20.04.cu111.torch1.9.0_comput8.sif
. To load the container at Tufts, do:
module load singularity/3.5.3
singularity shell --bind /cluster/tufts/wongjiradlabnu:/cluster/tufts/wongjiradlabnu,/cluster/tufts/wongjiradlab:/cluster/tufts/wongjiradlab /cluster/tufts/wongjiradlabnu/larbys/larbys-container/singularity_minkowskiengine_u20.04.cu111.torch1.9.0_comput8.sif
Then enter bash
when prompted to select a bash shell for the container.
Before running the ntuple maker, you need to compile a C++ script in the helpers
directory (this creates a shared C++ library used for the fiducial volume calculation). To do this, simply run:
cd helpers/
source compile_wirecell_fiducial_volume.sh
This only needs to be done once after first downloading the repository.
The make_dlgen2_flat_ntuples.py
script produces ntuple files from input larflowreco files and merged_dlreco files. It allows or requires the following options:
- -f / --files: The input larflowreco files that will be processed (required). You can either provide a text file where each line in the file is the full path to a larflowreco file, the path to a single larflowreco file, or a space separated list of larflowreco files.
- -t / --truth: The merged_dlreco files matching the input larflowreco files (required). This must be a text file where each line is the full path to a merged_dlreco file. This text file can include a full list of all merged_dlreco files in some sample, it does not need to be restricted to the merged_dlreco files that match the larflowreco files supplied with --files. The script will go through the input merged_dlreco files and find the ones with the same hash identifier as the input larflowreco files.
- -w / --weightfile: The path to the file (a pickled python dictionary) containing the cross section weights (required for MC inputs). Check the
event_weighting
directory to see if there is a weights file there that matches your sample. If not, there are instructions in that directory on how to create one. This should not be supplied for data input but must be supplied for MC input. - -m / --model_path: The path to the pytorch checkpoint file containing the weights to run the LArPID network. The path to the most recent weights file on the Tufts cluster is
/cluster/tufts/wongjiradlabnu/mrosen25/prongCNN/models/checkpoints/run3bOverlays_quadTask_plAll_2inChan_5ClassHard_minHit10_b64_oneCycleLR_v2me05_noPCTrainOrVal/ResNet34_recoProng_5class_epoch20.pt
- -d / --device: The device to run the LArPID network on ("cpu" or "gpu"). Default: "cpu"
- -mc / --isMC: A flag that must be supplied when running over MC input
- -ana / --dlana_input: A flag that must be supplied when running over dlana input (truth files that begin with "merged_dlana" instead of "merged_dlreco"
- -o / --outfile: The name of the output ntuple file (default: "dlgen2_flat_ntuple.root")
- -nkp / --noKeypoints: A flag, when supplied the keypoint variables will not be saved in the output ntuple. Required when running over larflowreco files with version < v2_me_06. (Older larflowreco files don't have the keypoint info.)
- --ignoreWeights: A flag, if supplied don't look up xsec weights for MC events. Set weights to 1 and process all events. (Default: attempt to lookup xsec weights and exit with error if not found)
- --skipNoWeightEvts: A flag, if supplied: print a warning, skip the event, and continue processing when we can't find an xsec weight for an MC event. (Default: attempt to lookup xsec weights and exit with error if not found)
- --multiGPU: A flag, supply to run LArPID network on multiple gpus. (This really isn't necessary, the network runs pretty quickly on just a cpu.)
There are two scripts included in this repository to provide an example of how to submit ntuple maker jobs on the Tufts cluster using slurm:
- tufts_submit_ntuple_job_example.sh
- tufts_run_ntuple_maker.sh
We produce ntuple files as part of the standard processing, but if you want to add a variable or two and reprocess the ntuples from existing larflowreco files, then you can take a look at these scripts for an example on how that can be done. If you'd like to use them, then first copy both scripts and then edit the following lines:
- tufts_submit_ntuple_job_example.sh
- line 18: supply the full file path to a text file containing all the larflowreco files you'd like to process. Each line should be the full path to one larflowreco file
- line 19: supply the full file path to a text file containing all the merged_dlreco or merged_dlana files that match the larflowreco files. Each line should be the full path to one merged_dlreco or merged_dlana file. The file on a particular line of this list need not match the larflowreco file on the same line of the larflowreco list. The scripts select larflowreco files to process, then searches through the supplied merged_dlreco/dlana list to find the matching files.
- line 13: change this NFILES variable to the number of files you want to process per job. I usually do 100
- lines 3-11: edit the slurm sbatch options as necessary. You'll want to at least change the
--array
option, which dictates how many jobs are submitted. This option works with the NFILES variable on line 13 to determine which larflowreco files from the line 18 list are processed in which job. For example, using--array=0-3,6
andNFILES=100
will submit five jobs (with arrayIDs 0, 1, 2, 3, and 6), each of which will process 100 files given by those specified on lines arrayID*NFILES + 1 to arrayID*NFILES + NFILES. - line 17: provide the full file path to the
tufts_run_ntuple_maker.sh
script - line 20: the filename (not path!) of the weight file in the event_weighting directory that will get passed to
make_dlgen2_flat_ntuples.py
with the-w
option (see above). - line 21: supply an output tag that will be included in output file names
- line 26: edit, as necessary, the end of this line where you see
-mc
. In this example,-mc
(and any other options you might add to the end of the source command after it) is passed to themake_dlgen2_flat_ntuples.py
script as a flag. So, for example, if you were running over data, you would remove-mc
. If you were running over data with merged_dlana input and you didn't want to save keypoint information, you would change-mc
to-ana -nkp
. Note thattufts_run_ntuple_maker.sh
is currently only configured to accept up to two flags supplied in this way. You'll have to edit lines 59-68 oftufts_run_ntuple_maker.sh
to get it to accept more.
- tufts_run_ntuple_maker.sh
- line 5: supply the path to your copy of this gen2ntuple repository
- line 22: supply the path to your compiled and installed copy of the ubdl repository
- line 41: supply the directory you would like output files copied to
- line 42: supply the directory you would like log files copied to
To submit the jobs after the above editing, just do:
sbatch modified_tufts_submit_ntuple_job_example.sh
All of the files processed in a single job will, at the end, get merged together before being copied over to the specified output directory. So each job will produce one output file named make_dlgen2_flat_ntuples_OUTTAG_output_ARRAYID.root and one log file (in addition to the usual slurm .out file) named make_dlgen2_flat_ntuples_OUTTAG_ARRAYID.log, where OUTTAG is the output tag (specified on line 21 of tufts_submit_ntuple_job_example.sh
) and ARRAYID is the slurm array ID (all specified on line 8 of tufts_submit_ntuple_job_example.sh
will be run) of the job. You can use the root hadd
command to merge the output root files
See the following section for full documentation of all ntuple variables.
The ntuples are flat ROOT files containing information about reconstructed neutrino interactions and (for Monte Carlo samples) truth information about the simulated neutrino interactions. If you are new to ROOT, this ROOT Guide For Beginners provides a nice, detailed introduction.
For Monte Carlo samples, the ntuples also contain information about the number of protons on target (POT) that would produce the full sample contained in the ntuple.
I have provided an example script, example_ntuple_analysis_script.py
, that you can take a look at to see how to use the POT data and how to pull some basic information out of the ntuple files using ROOT in python (PyROOT). This script takes as input an ntuple file made from an MC bnb nu overlay sample, applies an inclusive CCnumu selection, makes histograms of true and reconstructed neutrino and primary muon energies, scales the output histograms to the number of events expected for 6.67e+20 POT, and writes these histograms to an output root file. You can supply the flags --fullyContained
to filter out events that are not fully contained inside the fiducial volume and --noCosmicCuts
to skip the cosmic rejection cuts in the CCnumu selection.
To run:
python example_ntuple_analysis_script.py -i input_ntuple_file.root -o output_histogram_file.root
You can then view the histograms in output_histogram_file.root
in e.g. a ROOT TBrowser:
root -l output_histogram_file.root
root [0] new TBrowser
Please update this readme if you add new variables!
- MC: Monte Carlo simulation
- CC: charged current
- NC: neutral current
- QE: quasi-elastic
- Res: resonance production
- DIS: deep inelastic scattering
- Coh: coherent
- MEC: meson exchange current
- POT: protons on target
- PDG code: particle data group code, an integer unique to every type of particle
- SCE: space charge effect
- True: refers to simulated quantities from MC
- Reco / reconstructed: refers to quantities calculated from detector measurements (or simulated detector measurements in the case of MC events)
- Detsim tracked: simulated particle tracked by the detector simulation
- trackID: a unique integer associated with a simulated particle. Used to identify a particular simulated particle in an event
- Prong: a reconstructed track or shower
- Truth-matched particle: the simulated particle that deposits the most energy in a reconstructed prong
- Prong purity: the fraction of a reco prong produced by it’s truth-matched particle. (Calculated by summing pixel charges for pixels associated with the prong’s reco 3D hits.)
- Prong completeness: the fraction of a reco prong’s truth-matched particle that is included in the reco prong. (Calculated by summing pixel charges for pixels associated with the prong’s reco 3D hits.)
- LArPID: a convolutional neural network used for particle identification, particle production process classification, and purity and completeness predictions for reconstructed prongs
- Prong charge: the sum of all pixel values for pixels associated with prong’s reco 3D hits
- Hit: a reconstructed 3D point created from measured/simulated wire plane signals
- Fiducial Volume: the region of the detector where we select vertices / events for analyses
- Wire Cell Fiducial Volume: the fiducial volume defined in the wire-cell analysis (> 3cm from SCE corrected detector edge)
- An entry will appear in the flat ntuple files for every input data event
- For MC simulation, events that meet the following criteria are excluded and will not appear in these file:
- SCE corrected neutrino interaction vertex is outside the wire cell fiducial volume
- The event’s cross-section weight is unknown or infinite
The potTree (present only in ntuples produced from MC samples) provide information about the number of protons on target (POT) that would produce the full sample contained in the ntuple. There is one entry for each merged_dlreco file used to create the ntuple file. To get the full POT count, add up all the entries in the tree.
Variables:
- totPOT: total POT for the file represented by this entry
- totGoodPOT: total good POT for the file represented by this entry
I am not entirely sure what the distinction is between the "total POT" and "total good POT" reported in merged_dlreco files, but the two are always the same in every sample I've looked at. I would recomment using totGoodPOT
and ignoring the totPOT
entries.
- fileid: File ID number for larflowreco file that this event was from. Can be used to locate the larflowreco and merged_dlreco files for a particular event
- run: run number for event
- subrun: subrun number for event
- event: event number for event
These variables are not included for data.
- xsecWeight: cross section weight for MC events, use to weight events for POT scaling.
- trueNuE: true energy in GeV of simulated neutrino.
- trueNuPDG: PDG code of simulated neutrino.
- trueNuCCNC: integer indicating if simulated neutrino interaction is CC or NC. 0 for CC, 1 for NC.
- trueNuMode: integer indicating the simulated neutrino interaction mode: 0 for QE, 1 for Res, 2 for DIS, 3 for Coh, 10 for MEC.
- trueNuIntrxnType: integer indicating the simulated neutrino interaction type. A list of categories corresponding to values can be found here.
- trueVtx{X,Y,Z}: SCE corrected X,Y,Z coordinates (in cm) of simulated neutrino interaction vertex.
- trueLepE: true energy in GeV of primary lepton.
- trueLepPDG: PDG code of simulated primary lepton.
- nTruePrimParts: number of true primary particles (number of stable final state particles from the neutrino interaction that are passed to the detector simulation)
- truePrimPartPDG: PDG code of true primary particle. Array of length nTruePrimParts
- truePrimPart{X,Y,Z}: SCE corrected X,Y,Z coordinates (in cm) of true primary particle start position. Array of length nTruePrimParts
- truePrimPart{Px,Py,Pz,E}: initial 4-momentum of true primary particle in GeV/c for 3-momentum coordinates and GeV for total energy. Array of length nTruePrimParts
- truePrimPartContained: integer indicating if true primary particle was contained inside the detector. 1 if SCE corrected true end position is inside wire cell fiducial volume, 0 otherwise
- nTrueSimParts: number of simulated detsim-tracked particles (particles tracked by the detector simulation)
- trueSimPartPDG: PDG code of detsim-tracked particle. Array of length nTrueSimParts
- trueSimPartTID: trackID of detsim-tracked particle. Array of length nTrueSimParts
- trueSimPartMID: trackID of detsim-tracked particle’s “mother” (ancestor particle that e.g. decayed, producing this particle). Array of length nTrueSimParts
- trueSimPartProcess: Integer indicating the process by which a detsim-tracked particle was created. 0 for primary particles from neutrino interaction, 1 for particles produced in a decay, 2 for all other processes
- trueSimPart{X,Y,Z}: SCE corrected X,Y,Z coordinates (in cm) of true detsim-tracked particle start position. Array of length nTrueSimParts
- trueSimPartEDep{X,Y,Z}: SCE corrected X,Y,Z coordinates (in cm) of point at which detsim-tracked particle begins depositing energy. Point of first photo-conversion for photons, identical to trueSimPart{X,Y,Z} for all other particles. Array of length nTrueSimParts
- trueSimPart{Px,Py,Pz,E}: initial 4-momentum of true primary particle in MeV/c for 3-momentum coordinates and MeV for total energy. Array of length nTrueSimParts
- trueSimPartContained: integer indicating if detsim-tracked particle was contained inside the detector. 1 if SCE corrected true end position is inside wire cell fiducial volume, 0 otherwise
- foundVertex: 1 if a neutrino interaction vertex was reconstructed, 0 otherwise. (Technical details: a neutrino interaction vertex was considered to be reconstructed if there was at least one LArMatch keypoint with a neutrino keypoint type. If there are multiple neutrino keypoints, the one with the highest keypoint score is selected as the reconstructed neutrino vertex.)
- vtx{X,Y,Z}: X,Y,Z coordinates (in cm) of reco neutrino vertex. Defaults to -999 if foundVertex = 0
- vtxIsFiducial: 1 if the reco neutrino vertex is inside the wire cell fiducial volume, 0 otherwise. Defaults to -1 if foundVertex = 0
- vtxContainment: 2 if all hits in all prongs associated with the reco neutrino vertex are inside the wire cell fiducial volume. 1 if at least one hit in a neutrino-vertex-associated prong is outside the wire cell fiducial volume, but the reco neutrino vertex is inside. 0 if the reco neutrino vertex is outside the wire cell fiducial volume. Defaults to -1 if foundVertex = 0
- vtxScore: keypoint score of reco neutrino vertex. Defaults to -1 if foundVertex = 0
- vtxFracHitsOnCosmic: fraction of all hits associated with the reco neutrino vertex that match cosmic-tagged pixels
- vtxDistToTrue: distance (in cm) between reco and SCE-corrected true neutrino interaction vertex. Not present for data
- recoNuE: reconstructed neutrino energy in MeV. Calculated by summing the reconstructed energies of all tracks and showers attached to the reco neutrino vertex
- eventPCAxis{0,1,2}: 3-vectors indicating the direction of the first, second, and third principal component axes in a PCA analysis using the coordinates of all hits in all prongs associated with the reconstructed neutrino vertex
- eventPCEigenVals: array of three numbers: the eigenvalues assocated with the PCA analysis described above (e.g. eventPCEigenVals[1] gives the eigenvalue associated with eventPCAxis1)
- eventPCAxis0TSlope: diagnostic variable verifying that the first PCA axis (eventPCAxis0) is pointing in direction of increasing hit times (1 if yes, -1 if not)
- eventPCProjMaxGap: array of five numbers indicating the largest gap (in cm) of hit projections onto the first PCA axis (eventPCAxis0). All hits in all prongs associated with the reco nuetrino vertex are used for the 0th element (eventPCProjMaxGap[0]). In the 1st, 2nd, 3rd, and 4th elements, the 10%, 20%, 30%, and 40%, respectively, of hits furthest from the vertex are excluded. All elements default to -9 if foundVertex = 0
- eventPCProjMaxDist: array of five numbers indicating the largest distance between hit projections onto the first PCA axis (eventPCAxis0) without a gap of distance greater than X, where X = 2cm, 4cm, 6cm, 8cm, or 10cm for the 0th (eventPCProjMaxDist[0]), 1st, 2nd, 3rd, and 4th elements, respectively. All hits in all prongs associated with the reco neutrino vertex are used. All elements default to -9 if foundVertex = 0
- nKeypoints: number of LArMatch keypoint clusters for this event
- kpClusterType: keypoint cluster type (0: kNuVertex, 1: kTrackStart, 2: kTrackEnd, 3: kShowerStart, 4: kShowerMichel, 5: kShowerDelta, 6: kVertexActivity, 7: kStopMuVtx, 8: kNumKeyPoints). Array of length nKeypoints
- kpFilterType: 0 if neutrino activity keypoint cluster, 1 if cosmic keypoint cluster. Array of length nKeypoints
- kpMaxScore: Maximum score of any keypoint in cluster. Array of length nKeypoints
- kpMaxPos{X,Y,Z}: X,Y,Z coordinates (in cm) of the keypoint in cluster with the highest score. Array of length nKeypoints
- nTracks: number of reco tracks attached to reco neutrino vertex. Defaults to 0 if foundVertex = 0
- trackIsSecondary: 1 if track was attached to reco neutrino vertex as a secondary particle (a particle produced downstream from the interaction vertex as a result of e.g. the decay of a primary particle produced in the neutrino interaction itself). Array of length nTracks
- trackNHits: number of reco 3D hits in track. Array of length nTracks
- trackHitFrac: trackNHits divided by total number of hits associated with reco neutrino vertex. Array of length nTracks
- trackCharge: Sum of pixel values for all above-noise-threshold pixels associated with track hits (noise threshold: 10). Array of length nTracks
- trackChargeFrac: trackCharge divided by sum of all above-noise-threshold pixels associated with reco neutrino vertex. Array of length nTracks
- trackCosTheta: cosine of angle between track start direction and beam (z-axis). Track start direction calculated as unit vector pointing from track start position to point on track 5cm from start position (or end of track if length < 5cm). Defaults to -9 if track has fewer than two trajectory points or a length of < 1e-6 cm. Array of length nTracks
- trackCosThetaY: cosine of angle between track start direction and gravity (y-axis). Track start direction calculated as unit vector pointing from track start position to point on track 5cm from start position (or end of track if length < 5cm). Defaults to -9 if track has fewer than two trajectory points or a length of < 1e-6 cm. Array of length nTracks
- trackDistToVtx: distance (in cm) between track start point and reco neutrino vertex. Defaults to -9 if track has fewer than two trajectory points or a length of < 1e-6 cm. Array of length nTracks
- trackStartPos{X,Y,Z}: X,Y,Z coordinates (in cm) of track start position. Defaults to -9 if track has fewer than two trajectory points or a length of < 1e-6 cm. Array of length nTracks
- trackStartDir{X,Y,Z}: Coordinates of unit vector pointing in initial track direction, calculated as the vector pointing from the beginning of the track to the first trajectory point at least 5cm from track start (or end of track if track length is less than 5cm). Defaults to -9 if track has fewer than two trajectory points or a length of < 1e-6 cm. Array of length nTracks
- trackEndPos{X,Y,Z}: X,Y,Z coordinates (in cm) of track end position. Defaults to -9 if track has fewer than two trajectory points or a length of < 1e-6 cm. Array of length nTracks
- trackClassified: 1 if track was classified, 0 otherwise. Track is “classified” if it was processed by LArPID, which will happen if the track has at least 2 trajectory points, a length of >1e-6 cm, and at least 10 above-noise-threshold pixels in all three wire planes (noise threshold: 10). Array of length nTracks
- trackPID: Predicted PDG code of track, from LArPID. Defaults to 0 if trackClassified = 0. Array of length nTracks
- trackElScore: Track’s electron score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackPhScore: Track’s photon score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackMuScore: Track’s muon score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackPiScore: Track’s pion score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackPrScore: Track’s proton score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackComp: Track’s predicted completeness from LArPID. Defaults to -1 if trackClassified = 0. Array of length nTracks
- trackPurity: Track’s predicted purity from LArPID. Defaults to -1 if trackClassified = 0. Array of length nTracks
- trackProcess: Track's predicted particle production process from LArPID (0: primary particle from neutrino interaction, 1: secondary particle with a neutral parent, 2: secondary particle with a charged parent). Defaults to -1 if trackClassified = 0. Array of length nTracks
- trackPrimaryScore: Track's primary particle score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackFromNeutralScore: Track's secondary particle with neutral parent score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackFromChargedScore: Track's secondary particle with charged parent score from LArPID. Defaults to -99 if trackClassified = 0. Array of length nTracks
- trackRecoE: reconstructed energy of track in MeV, calculated from range assuming it is a muon, proton, or pion: whichever has the highest LArPID score. Defaults to -1 if trackClassified = 0. Array of length nTracks
- trackTruePID: The PDG code of the track’s truth-matched particle. Defaults to 0 if no simulated particle deposited energy in track's pixels. Not filled for data events. Array of length nTracks
- trackTrueTID: The trackID of the track’s truth-matched particle. Defaults to -1 if no simulated particle deposited energy in track's pixels. Not filled for data events. Array of length nTracks
- trackTrueE: The true energy (in MeV) of the track’s truth-matched particle. Defaults to -1 if no simulated particle deposited energy in track's pixels. Not filled for data events. Array of length nTracks
- trackTruePurity: The true purity of the reco track, calculated from its truth-matched particle. Defaults to 0 if no simulated particle deposited energy in track's pixels. Not filled for data events. Array of length nTracks
- trackTrueComp: The true completeness of the reco track, calculated from its truth-matched particle. Defaults to 0 if no simulated particle deposited energy in track's pixels. Not filled for data events. Array of length nTracks
- trackTrueElPurity: The fraction of the charge in the reco track produced by simulated electrons. Not filled for data events. Array of length nTracks
- trackTruePhPurity: The fraction of the charge in the reco track produced by simulated photons. Not filled for data events. Array of length nTracks
- trackTrueMuPurity: The fraction of the charge in the reco track produced by simulated muons. Not filled for data events. Array of length nTracks
- trackTruePiPurity: The fraction of the charge in the reco track produced by simulated pions. Not filled for data events. Array of length nTracks
- trackTruePrPurity: The fraction of the charge in the reco track produced by simulated protons. Not filled for data events. Array of length nTracks
- nShowers: number of reco showers attached to reco neutrino vertex. Defaults to 0 if foundVertex = 0
- showerIsSecondary: 1 if shower was attached to reco neutrino vertex as a secondary particle (a particle produced downstream from the interaction vertex as a result of e.g. the decay of a primary particle produced in the neutrino interaction itself). Array of length nShowers
- showerNHits: number of reco 3D hits in shower. Array of length nShowers
- showerHitFrac: showerNHits divided by total number of hits associated with reco neutrino vertex. Array of length nShowers
- showerCharge: Sum of pixel values for all above-noise-threshold pixels associated with shower hits (noise threshold: 10). Array of length nShowers
- showerChargeFrac: showerCharge divided by sum of all above-noise-threshold pixels associated with reco neutrino vertex. Array of length nShowers
- showerCosTheta: cosine of angle between shower start direction and beam (z-axis). Shower start direction calculated as unit vector pointing from shower trunk start position to shower trunk end position. Array of length nShowers
- showerCosThetaY: cosine of angle between shower start direction and gravity (y-axis). Shower start direction calculated as unit vector pointing from shower trunk start position to shower trunk end position. Array of length nShowers
- showerDistToVtx: distance (in cm) between shower start point and reco neutrino vertex. Array of length nShowers
- showerStartPos{X,Y,Z}: X,Y,Z coordinates (in cm) of shower start position. Array of length nShowers
- showerStartDir{X,Y,Z}: Coordinates of unit vector pointing in initial shower direction, calculated as the vector pointing from the beginning to the end of the shower trunk. Array of length nShowers
- showerClassified: 1 if shower was classified, 0 otherwise. Shower is “classified” if it has at least 10 above-noise-threshold pixels in all three wire planes (noise threshold: 10). Array of length nShowers
- showerPID: Predicted PDG code of shower, from LArPID. Defaults to 0 if showerClassified = 0. Array of length nShowers
- showerElScore: Shower’s electron score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerPhScore: Shower’s photon score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerMuScore: Shower’s muon score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerPiScore: Shower’s pion score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerPrScore: Shower’s proton score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerComp: Shower’s predicted completeness from LArPID. Defaults to -1 if showerClassified = 0. Array of length nShowers
- showerPurity: Shower’s predicted purity from LArPID. Defaults to -1 if showerClassified = 0. Array of length nShowers
- showerProcess: Shower's predicted particle production process from LArPID (0: primary particle from neutrino interaction, 1: secondary particle with a neutral parent, 2: secondary particle with a charged parent). Defaults to -1 if showerClassified = 0. Array of length nShowers
- showerPrimaryScore: Shower's primary particle score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerFromNeutralScore: Shower's secondary particle with neutral parent score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerFromChargedScore: Shower's secondary particle with charged parent score from LArPID. Defaults to -99 if showerClassified = 0. Array of length nShowers
- showerRecoE: reconstructed energy of shower in MeV, calculated from calibrated collection plane charge. Defaults to -1 if showerClassified = 0. Array of length nShowers
- showerTruePID: The PDG code of the shower’s truth-matched particle. Defaults to 0 if no simulated particle deposited energy in shower's pixels. Not filled for data events. Array of length nShowers
- showerTrueTID: The trackID of the shower’s truth-matched particle. Defaults to -1 if no simulated particle deposited energy in shower's pixels. Not filled for data events. Array of length nShowers
- showerTrueE: The true energy (in MeV) of the shower’s truth-matched particle. Defaults to -1 if no simulated particle deposited energy in shower's pixels. Not filled for data events. Array of length nShowers
- showerTruePurity: The true purity of the reco shower, calculated from its truth-matched particle. Defaults to 0 if no simulated particle deposited energy in shower's pixels. Not filled for data events. Array of length nShowers
- showerTrueComp: The true completeness of the reco shower, calculated from its truth-matched particle. Defaults to 0 if no simulated particle deposited energy in shower's pixels. Not filled for data events. Array of length nShowers
- showerTrueElPurity: The fraction of the charge in the reco shower produced by simulated electrons. Not filled for data events. Array of length nShowers
- showerTruePhPurity: The fraction of the charge in the reco shower produced by simulated photons. Not filled for data events. Array of length nShowers
- showerTrueMuPurity: The fraction of the charge in the reco shower produced by simulated muons. Not filled for data events. Array of length nShowers
- showerTruePiPurity: The fraction of the charge in the reco shower produced by simulated pions. Not filled for data events. Array of length nShowers
- showerTruePrPurity: The fraction of the charge in the reco shower produced by simulated protons. Not filled for data events. Array of length nShowers