Skip to content

BatRoot Overview

After the BatNoise program is successfully run and the appropriate filter file is produced, the user can execute BatRoot to obtain Reduced Quantities (RQs). BatRoot’s primary purpose is to take the data outputted from BatNoise and process them into RQs (although some analysis algorithms do not require this filter file). The reduced quantities produced here are physical quantities such as energy, current, voltage or event time. The RQ product is then saved in the form of a ROOT file. BatRoot applies analysis algorithms to distinguish between background noise and essential data, then produces RQs from said data. There are multiple algorithms to choose from. Here is a small list of some of the algorithms and what they do:

OptimalFilterPhonon: BatRoot starts by using the PSD constructed by BatNoise to figure out what the background noise is. Afterwards, it applies a Fast-Fourier Transform (FFT) to deconstruct the superposition of frequencies that make up the pulse from the detector file. The FFT makes it easier for the software to subtract out the background noise from the signal pulse, which we would like to keep for analysis. Each phonon pulse is fit separately using the filters produced by the Fast-Fourier transform and the noise PSD, allowing us to discard background noise effectively. Utilizing the chi-squared function with respect to amplitude, the optimal filter algorithm takes in raw data, applies goodness of fit, then finds the ideal estimation for the amplitude pulse. The optimal filter phonon is the simplest algorithm available to use in the CDMSBats architecture.

OptimalFilterCharge: This is similar to the prior algorithm, but this routine is applied only to charge pulses. This algorithm fits a single charge channel at a time.

RTFTWalk Routines: This routine starts by applying a second-order Butterworth filter to smooth the pulse. The algorithm then locates the highest point of the filtered pulse (this is defined as the 100% point). Afterwards, it then walks down the rising edge to find the rise time points of interest and similarly down the falling edge for fall time points.

Pulse Integral: This routine starts by identifying the integral, which is found by first subtracting the pre-pulse baseline, then rolling off the trace with a low-pass filter and integrating. The integration provides a more linear energy estimator, less strongly affected by position dependence and saturation effects than the optimal filter routine before application of the position correction. The drawback is that the integral routine is more sensitive to noise and has inferior energy resolution for small pulses. The integral energy estimator is often used to study high-energy, saturating events.

There are also other algorithms available to use in BatRoot. We can pick which algorithm to use by editing the processing files and selecting the required item.

Installation and compilation instructions for CDMSBats can be found here.

To run BatRoot (just like BatNoise), we must specify the series number, dump number, the number of events we want to process (max events), the processing file and the configuration file. Details on how to run BatRoot can be found here.

BatRoot Output File

The BatRoot output is in ROOT binary format. The ROOT File produced by BatRoot has a similar structure to the filter file generated after executing BatNoise. The ROOT File contains the directories “infoDir”, “detectorConfigDir” and "rqDir" just as before. Data within these directories are referred to as trees. The individual data fields corresponding to the RQs are called “leaves” in ROOT nomenclature. BatRoot stores information relevant to the reconstruction of the processing session in the infoDir. Within infoDir we can find the “processingTree” which contains only 2 fields, each with one entry - the date the file was created and the cvsTag. Also, we can find the “userSettingsTree” which records all the values of the processing and analysis configuration parameters for the BatRoot session. Additionally, in the infoDir, there is one filterTree per processed detector. These contain the optimal filter resolutions (uncalibrated) and information relevant for reconstructing which filter files were used to generate the RQs. The second similar folder is the detectorConfigDir; this holds information specific to the hardware settings for the detectors and their readout. Parameters specific to the experimental configuration such as the position within the tower and the tower number are also recorded in the detectorConfigDir. Lastly, there is the rqDir, in this directory, you will find one RQ tree per zip detector that was processed. These trees contain RQ's specific to that detector. The number in the name of the tree corresponds to the sequential detector number. In addition to these “zip” trees, there is an eventTree. It stores event-level information that is not detector-specific. Occasionally, one may encounter the value -999999 in the RQ data; this is a default “null” value that BatRoot assigns when there is no valid data for that field. For example, in the case of selective readout, all the RQ's in a zipTree are assigned the null value for that particular event when the detector was not one that was readout.

BatRoot flowchart

The following flowchart summarizes the overall BatRoot processing algorithm.

-