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
      

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.

Table 1: Histogram binning values.
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
File under version control - commit 72acd54 - 2014-12-28