SuperNEMO - ββ studies
This repository holds a SN@ilWare configuration + source code to calculate ββ0ν
sensitivity for SuperNEMO experiment. Given 2β simulations (maybe data one day)
from 0ν double decay and background simulations (2ν, 208Tl, 214Bi…), the
module snemo_bb0nu_halflife_limit_module
calculates signal/background
efficiencies and then determines the best sensitivity.
The current version is hosted at
https://github.com/xgarrido/snemo_simulation_modules/snemo_bb0nu_studies under
git
version control.
The code itself is implemented in the source
directory which holds the
snemo_bb0nu_halflife_limit_module.*
source code as well as a CMakeLists.txt
file in order to compile, build and install the module following cmake
rules.
SuperNEMO ββ0ν module declaration
The next item holds the configuration for the SuperNEMO ββ modules. The second item is related to histogram declarations.
Module declaration
The module name is bb0nu_halflife_limit_module
which is needed when using
bxdpp_processing
as explained in the top README file.
File preamble
#@description A sample list of setups #@key_label "name" #@meta_label "type"
Declaration & description
[name="bb0nu_halflife_limit_module" type="analysis::snemo_bb0nu_halflife_limit_module"] #@description A SuperNEMO module to calculate the 0nu sensitivity
Logging priority
#@description Logging priority logging.priority : string = "notice"
Histogram service label
Set the same histogram service label as defined here
#@description The Histogram Service label Histo_label : string = "Histo"
Histogram storage
All histograms generated by snemo_bb0nu_studies
module can be stored inside
ROOT files or XML archives.
#@description The ouput file where to store the histograms Histo_output_files : string[2] as path = \ "/tmp/${USER}/snemo.d/snemo_bb0nu_halflife_limit_histos.root" \ "/tmp/${USER}/snemo.d/snemo_bb0nu_halflife_limit_histos.xml"
Histograms done from a previous run of the module can be load at startup. This
is useful when processing a huge collection of files has been done and energy
distribution as well as efficiency have been computed : then the output
histograms can be set as new input for the histogram_service
in such way, the
processing does not to be redo for these peculiar files.
# #@description The input file from where to load the histograms # Histo_input_file : string as path = \ # "/tmp/${USER}/snemo.d/snemo_bb0nu_halflife_limit_histos.saved.xml"
Histogram templates
Templates for histogram may be provided to reduce the amount of configuration of individual histogram. For instance, plotting the energy distributions of several channels may only need one general histogram definition which gives the x-axis boundaries and x-binning (see below).
#@description The ouput file where to store the histograms Histo_template_files : string[1] as path = \ "@SNEMO_SIMULATION_MODULES_DIR@/snemo_bb0nu_histogram_templates.conf"
Building histogram keys
The key fields are used to build different identifiants for histogram
dictionnary. The basic idea is to have this information inside event_header
and use it to build a string
key. The program is then quite dynamic in the
sense that 0ν halflife calculation can be done for different study purpose (just
change the key_fields
).
#@description The key fields from 'Event Header' bank to build a unique key for histogram key_fields : string[1] = \ "event.genbb_label"
Experimental setup
Here we define the experimental conditions basically which isotope, mass, 2β halflife, exposure are used.
- Isotope values
#@description The atomic mass number of the isotope experiment.isotope_mass_number : real = 82 #@description The total mass of the isotope experiment.isotope_mass : real as mass = 7 kg #@description The bb2nu halflife of the isotope experiment.isotope_bb2nu_halflife : real = 9.0e19 #year
- Experiment exposure
#@description The exposure time of the experiment experiment.exposure_time : real = 2.5 #year
- Tracking chamber volume
#@description The total gas volume of the tracking chamber experiment.tracker_volume : real as volume = 15.2 m3
- Background activities
#@description The list of background element experiment.background_list : string[3] = "Tl208" "Bi214" "Rn222"
- 208Tl activity
#@description The mass activity for internal Thallium-208 contamination experiment.Tl208.activity : real as mass_activity = 2 uBq/kg
- 214Bi activity
#@description The mass activity for internal Bismuth-214 contamination experiment.Bi214.activity : real as mass_activity = 10 uBq/kg
- 222Rn activity
#@description The volume activity for Radon inside tracking chamber experiment.Rn222.activity : real as volume_activity = 100 uBq/m3
- 208Tl activity
Histogram declarations
The histogram declarations i.e. name, boundaries, binning… are set in this section. There are mostly template histogram in such way, their declarations may be used as templates for several histograms. For instance, the Energy template defines an histogram that can be mimic by different analysis channels i.e. 0ν energy distribution to background energy distribution. Table 1 defines the number of bins, the minimal energy and the maximal energy to compute neutrinoless double bet decay sensitivity.
Number of bins | 25 |
Minimal energy | 2000.0 keV |
Maximal energy | 3100.0 keV |
Mandatory preamble
#@description A sample list of setups #@key_label "name" #@meta_label "type"
Energy template
[name="energy_template" type="mygsl::histogram_1d"] #@config The histogram template of the energy distribution #@description The group of the histogram (optional) group : string = "__template" #@description The build mode (default : "regular", "table", "mimic"); mode : string = "regular" #@description The linear mode (default) linear : boolean = 1 #@description The X axis label display.xaxis.label : string = "\Upsigma_\text{\tiny 1,2}$E$_\text{calibrated}" #@description The Y axis label display.yaxis.label : string = "dN/dE [A.U.]" #@description The number of bins number_of_bins : integer = 25 #@description The unit of the bins' bounds (a standard unit, typically SI or CLHEP) unit : string = "keV" #@description The lower bound of the histogram min : real as energy = 2000.0 keV #@description The upper bound of the histogram max : real as energy = 3100.0 keV
Efficiency template
[name="efficiency_template" type="mygsl::histogram_1d"] #@config The histogram template of the energy selection efficiency #@description The group of the histogram (optional) group : string = "__template" #@description The build mode (default : "regular", "table", "mimic"); mode : string = "regular" #@description The linear mode (default) linear : boolean = 1 #@description The X axis label display.xaxis.label : string = "\Upsigma_\text{\tiny 1,2}\text{E}_\text{calibrated}\geq\text{E}_\text{cut}" #@description The X axis unit for display (a standard unit, typically SI or CLHEP) display.xaxis.unit : string = "keV" #@description The Y axis label display.yaxis.label : string = "efficiency" #@description The number of bins number_of_bins : integer = 25 #@description The lower bound of the histogram min : real as energy = 2000.0 keV #@description The upper bound of the histogram max : real as energy = 3100.0 keV
Halflife limit template
[name="halflife_template" type="mygsl::histogram_1d"] #@config The histogram template of the halflife limit values #@description The group of the histogram (optional) group : string = "__template" #@description The build mode (default : "regular", "table", "mimic"); mode : string = "regular" #@description The linear mode (default) linear : boolean = 1 #@description The X axis label display.xaxis.label : string = "\Upsigma_\text{\tiny 1,2}\text{E}_\text{calibrated}\geq\text{E}_\text{cut}" #@description The X axis unit for display (a standard unit, typically SI or CLHEP) display.xaxis.unit : string = "keV" #@description The Y axis label display.yaxis.label : string = "halflife limit" #@description The number of bins number_of_bins : integer = 25 #@description The lower bound of the histogram min : real as energy = 2000.0 keV #@description The upper bound of the histogram max : real as energy = 3100.0 keV