Settings - Uni2K/RootReader GitHub Wiki

Settings

The RootReader provides a numer of settings in order to adjust the way of how data is parsed. They can be accessed by selecting "settings" inside of the menu (by pressing 3). Here is a short glimpse of the individual settings:

Threads

Controlls the maximal number of threads. Each binary file is using a separate thread, if you provide a set of 20 binary files and set the thread number to 6, it will run 3 times with 6 threads and 2 times with only 2 threads. Choose this setting based on your system. If you run a four core CPU without HT it would not make sense to set this setting to 4+. Every thread needs aroun 1GB of RAM.

Automatic Integration Window

This is used to calculate the integrals of a waveform for multiple runs with different integration windows. In case of my thesis, each integration window was calculated by a separate script called "IntegrationWindowAnalysis.sh" inside the RootAnalysis repository. If this setting is true, it will search (based on the runName) to find a matching line inside the file: /src/IntegrationWindows.txt An entry in this text file looks like: IW_1_calib_vb58_tune86_pcbd={33.252220/178.223877,33.336121/174.905807,35.539726/178.741394,34.979118/180.074097,33.691811/178.860077,33.427940/179.402069,33.958000/178.345764,35.217720/181.381897,0.000000/0.000000,} If its set to false, it will use the hardcoded values inside the read.c script, which are 0 for all cases (see variable integrationWindowsPeakSignal, integrationWindowsEntireSignal). Default: true

Automatic Config Saving

Saves the settings once "Start" is pressed. Default: true

Compile Readscripts

Whether the read.C script should be compiled on start. Changes in the read.C code will not show up without the script getting compiled. Default: true

Binary Headersize

If the binary files are written with a specific WaveCatcher version, the header of these binary files may also vary. A wrong header size almost always ends up in a segmentation fault. The script offers an automatic headersize detection mode (set headersize on "a" -> default), which checks the header for every binary file. Using this feature, its also possible to read in different binary files from different WaveCatcher versions automatically. Default: a

Calibration/Baseline

Calibration

Calibration refers to the process of expressing integration units (mVxns) in terms of photo electrons (N_pe). This is simply done by dividing the value of the integration by a calibration value. These calibration values are getting determined using a dedicated set of scripts and experimental data. In general it is calculated by fitting a GPxGaus convolution onto a low-instensity integration spectrum, which is obtained by illuminating the SiPMs with a highly dimmed laser. The distance between the peaks of this spectrum can be used as "Gain" (the physical quantity that only holds for perfect signals and is therefore not used) and more likely, the calibration value "K". Determining the uncertainty and value is most likely not an easy task. It requires a lot of optimizing and analysing complex fit results. Additionally, the calculation of the uncertainty is not yet fully automized and was done by hand for the current values (its not difficult but not included in the script). I wrote the script to analyse data of WOM D with sensor array D. Therefore, I only calculated the calibration values for this specific sensor array at 58V set voltage. If you need the value for different SiPM arrays, you need to calculate them on your own. For the detailed steps please see the master thesis of me or the other group members linked in the front page.

Technique: Inside /src/ there is a text file called: CalibrationValues.txt Analog to the IntegrationWindow.txt file, this contains the necessary values for the hardcoded calibration run. (For me this run was: 7_calib_vb58_tune8700_pcbd -> Set Voltage: 58V, Lasertune: 87%, PCB Array: D) This value is HARDCODED into read.C at the beginning:

string calibrationRunName = "7_calib_vb58_tune8700_pcbd"; string dcIntegrationWindow = "7_calib_vb58_tune8700_pcbd";

The content of the CalibrationValues.txt is given as follows (also included in my master thesis; first value: calibration value, second: uncertainty; commas separate channels):

7_calib_vb58_tune8700_pcbd={44.035353/4.103,41.039190/3.2941,46.930968/0.819,43.742804/1.494,47.686534/3.154,47.165776/1.844,49.073306/3.150,47.876735/0.891,}

RootReader allows the following options to be made:

  • Calibrate Measurement -> Actually uses the values inside the text file, if its set to false, it will use dummies (value=1)

Baseline

Baseline is the contant voltage offset at each waveform. It increases the integral/amplitude and should be corrected. There are 2 methods of determining and correcting this baseline.

  • Dynamic: 2 constant fits at the beginning and end of a measurement frame. -> Use better one as baseline.
  • Constant: (Preferred cause better), use the distribution of dynamic baselines and select from this distribution only the fits with a chi² below a certain threshold. This is done by a separate script called "BaselineAverage.sh" inside the RootAnalysis repository. Again, this values are coming from a text file called: Baselines.txt Each entry looks like:

BL_2_calib_vb58_tune8650_pcbd={-0.312896,-0.031178,-0.263236,-0.153505,-0.604511,-0.188905,0.157628,-0.231857}

Option: Dynamic Baseline -> 1=true, 0=false (=constant baseline); Can be automated, see Tools section. Default: true

Dark Count Measurements

Measuring the light spectra without an illumination results in a DC spectrum. There used to be multiple differences in the integration windows etc. During the analysis process, this differences could be erased. The setting: "Is DC Measurement" is therefore not really changing anything. Just under special conditions something is changed. If the runName contains an "dc" this will be automatically set to true. Default: false

Use Existing Runlist

On every run, a new runlist with the name "RootRunlist.txt" is created. If you prefer to just use a hardcoded one, just replace it and set this option to true. Default: false

Runlist Naming Schema

Runnames got different naming schemes. In 2019, the schema was the following: RUNNUMNER_posPOSITION_angleANGLE_eENERGY_chCHANNELWC Example:89_pos19_angle30_e14_ch32 However, in 2017,2018 this was different, resulting in a different naming schema. Setting this to "false" will use the old version (Caution: Less tested, could be buggy). RootReader is anyway fine in using custom schemes, the only drawback is that the specific informations from the runname cannot be read in the tree if they aren't understand. Default:true

Folder Settings

At the beginning I included the choose the folder options but I never used them. This requires some libraries. By default the files are read in using a folder /data/RUNNAME/ and the results are placed inside /runs/RUNNAME/

images/baseline.png