Variant Manager Configuration

1 Introduction

The variant concept has been introduced in order to define "variable" parameters for configuration files. Basic idea is to set a number of parameters that will be used within configuration files such as vertex or genbb generator names. Then it is possible to change their respective values in the command line, for instance.

2 Manager configuration

#@config The main configuration parameters for the application variant repository

#@description The organization name
organization : string = "SuperNEMO"

#@description The application name
application  : string = "SN@ilWare"

#@description The list of configuration files for embedded registries
registries.config : string[3] as path =                                 \
  "@configuration:snvariant_core_registry.conf"       \
  "@configuration:snvariant_simulation_registry.conf" \
  "@configuration:snvariant_detector_registry.conf"

#@description The lock request
lock : boolean = true

3 Registries

3.1 Core registry

#@config The configuration for the core variant registry

#@description The name of the registry
name : string = "core"

#@description The display name of the registry
display_name : string = "Core"

#@description A short description
terse_description : string = "The core application parameters"

#@description Logging priority
logging.priority : string = @variant(core:logging_priority|"fatal")

#@description The variant model to be used as the default top variant
top_variant_name : string = "core.VM"

#@description The list of files containing the definition of variant/parameter models
configuration_items.files : string[1] as path =  \
  "@configuration:core_variants.def"

3.2 Simulation registry

#@config The configuration for the simulation variant registry

#@description The name of the registry
name : string = "simulation"

#@description The display name of the registry
display_name : string = "Simulation"

#@description A short description
terse_description : string = "The simulation application parameters"

#@description Logging priority
logging.priority : string = @variant(core:logging_priority|"fatal")

#@description The variant model to be used as the default top variant
top_variant_name : string = "simulation.VM"

#@description The list of files containing the definition of variant/parameter models
configuration_items.files : string[1] as path =  \
  "@configuration:simulation_variants.def"

3.3 Detector registry

#@config The configuration for the simulation variant registry

#@description The name of the registry
name : string = "detector"

#@description The display name of the registry
display_name : string = "Detector"

#@description A short description
terse_description : string = "The detector application parameters"

#@description Logging priority
logging.priority : string = @variant(core:logging_priority|"fatal")

#@description The variant model to be used as the default top variant
top_variant_name : string = "detector.VM"

#@description The list of files containing the definition of variant/parameter models
configuration_items.files : string[1] as path =  \
  "@configuration:detector_variants.def"

4 Variant definitions

4.1 Core variants

4.1.1 Insert preamble

#@description The definitions for generic variants
#@key_label   "name"
#@meta_label  "type"

4.1.2 Logging priority

[name="logging_priority.PM" type="parameter"]
display_name              : string = "Logging priority"
terse_description         : string = "The logging priority"
type                      : string = "string"
mutability                : string = "variable"
variable.mode             : string = "enumeration"
string.enumerated.size    : integer = 8
string.enumerated_0.value : string = "fatal"
string.enumerated_1.value : string = "critical"
string.enumerated_2.value : string = "error"
string.enumerated_3.value : string = "warning"
string.enumerated_4.value : string = "notice"
string.enumerated_5.value : string = "information"
string.enumerated_6.value : string = "debug"
string.enumerated_7.value : string = "trace"

4.1.3 Output directory

[name="output_path.PM" type="parameter"]
display_name   : string = "Output directory"
description    : string = "The output directory for the generated files"
type           : string = "string"
path           : boolean = 1
mutability     : string = "variable"
variable.mode  : string = "free"
string.default : string = "/tmp/${USER}/snemo.d/"

4.1.4 Top variant

[name="core.VM" type="variant"]

#@config A variant model describing the core parameters

#@description The display name of this variant
display_name : string = "Core setup"

#@description A short description of the variant
terse_description : string = "The configuration parameters for the core application"

parameters.logging_priority.model : string = "logging_priority.PM"
parameters.output_path.model : string = "output_path.PM"

#@description The list of variant parameters
parameters : string[2] = \
"logging_priority"  \
"output_path"

4.2 Simulation variants

4.2.1 Insert preamble

#@description The definitions for generic variants
#@key_label   "name"
#@meta_label  "type"

4.2.2 Seed manager

[name="random_seed.PM" type="parameter"]
display_name  : string = "Value for random seeds"
type          : string = "integer"
mutability    : string = "fixed"
integer.fixed : integer = 0

[name="if_random_seed.VM" type="variant"]
display_name               : string = "Random seeds"
parameters                 : string[1] = "null_seed"
parameters.null_seed.model : string = "random_seed.PM"
[name="random_seed_flag.PM" type="parameter"]
display_name                  : string = "Seed flag"
description                   : string = "A flag to make random seeds"
type                          : string = "boolean"
mutability                    : string = "variable"
boolean.default               : boolean = 0
variants                      : string[1] = "if_random_seed"
variants.if_random_seed.model : string = "if_random_seed.VM"
boolean.variant.true          : string = "if_random_seed"

4.2.3 Total number of simulated events

[name="total_number_of_event.PM" type="parameter"]
display_name  : string = "Total number of event"
description   : string = "The total number of event simulated"
type          : string = "real"
mutability    : string = "variable"
variable.mode : string = "free"

4.2.4 Vertex generators

[name="vertex_generator_name.PM" type="parameter"]
display_name  : string = "Vertex generator name"
description   : string = "The name of the vertex generator"
type          : string = "string"
mutability    : string = "variable"
variable.mode : string = "enumeration"
string.enumerated_0.value : string = "calo_wrapper_bulk"
string.enumerated_1.value : string = "xcalo_wrapper_bulk"
string.enumerated_2.value : string = "gveto_wrapper_bulk"
string.enumerated_3.value : string = "calo_wrapper_surface"
string.enumerated_4.value : string = "xcalo_wrapper_surface"
string.enumerated_5.value : string = "gveto_wrapper_surface"
string.enumerated_6.value : string = "pmt_glass_bulk"
string.enumerated_7.value : string = "anode_wire_bulk"
string.enumerated_8.value : string = "anode_wire_surface"
string.enumerated_9.value : string = "field_wire_surface"
string.enumerated_10.value : string = "field_wire_bulk"
string.enumerated_11.value : string = "tracker_drift_cell_bulk"
string.enumerated_12.value : string = "tracker_volume_box"
string.enumerated_13.value : string = "tracker_front_volume_bulk"
string.enumerated_14.value : string = "tracker_back_volume_bulk"
string.enumerated_15.value : string = "tracker_volume_bulk"
string.enumerated_16.value : string = "tracker_gas_bulk"
string.enumerated_17.value : string = "source_strips_internal_bulk"
string.enumerated_18.value : string = "source_strips_internal_surface"
string.enumerated_19.value : string = "source_strips_external_bulk"
string.enumerated_20.value : string = "source_strips_external_surface"
string.enumerated_21.value : string = "source_strips_bulk"
string.enumerated_22.value : string = "source_strips_surface"
string.enumerated_23.value : string = "experimental_hall_surface"
string.enumerated_24.value : string = "experimental_hall_bulk"
string.enumerated.size : integer = 25

4.2.5 Event generators

[name="event_generator_name.PM" type="parameter"]
display_name  : string = "Event generator name"
description   : string = "The name of the genbb event generator"
type          : string = "string"
mutability    : string = "variable"
variable.mode : string = "enumeration"
string.enumerated_0.value : string = "Tl208"
string.enumerated_1.value : string = "Bi214_Po214"
string.enumerated_2.value : string = "Bi212_Po212"
string.enumerated_3.value : string = "Pa234m"
string.enumerated_4.value : string = "K40"
string.enumerated_5.value : string = "Y90"
string.enumerated_6.value : string = "Sr90"
string.enumerated_7.value : string = "Ra226"
string.enumerated_8.value : string = "Pa231"
string.enumerated_9.value : string = "Co60"
string.enumerated_10.value : string = "Bi207"
string.enumerated_11.value : string = "Am241"
string.enumerated_12.value : string = "Na22"
string.enumerated_13.value : string = "Mn54"
string.enumerated_14.value : string = "Ca48.0nubb"
string.enumerated_15.value : string = "Ca48.0nubb_rhc_lambda_0"
string.enumerated_16.value : string = "Ca48.0nubb_rhc_lambda_0_2"
string.enumerated_17.value : string = "Ca48.2nubb"
string.enumerated_18.value : string = "Ca48.0nubbM1"
string.enumerated_19.value : string = "Ca48.0nubbM2"
string.enumerated_20.value : string = "Se82.0nubb"
string.enumerated_21.value : string = "Se82.0nubb_rhc_lambda_0"
string.enumerated_22.value : string = "Se82.0nubb_rhc_lambda_0_2"
string.enumerated_23.value : string = "Se82.2nubb"
string.enumerated_24.value : string = "Se82.0nubbM1"
string.enumerated_25.value : string = "Se82.0nubbM2"
string.enumerated_26.value : string = "Mo100.0nubb"
string.enumerated_27.value : string = "Mo100.0nubb_rhc_lambda_0"
string.enumerated_28.value : string = "Mo100.0nubb_rhc_lambda_0_2"
string.enumerated_29.value : string = "Mo100.2nubb"
string.enumerated_30.value : string = "Mo100.0nubbM1"
string.enumerated_31.value : string = "Mo100.0nubbM2"
string.enumerated_32.value : string = "Nd150.0nubb"
string.enumerated_33.value : string = "Nd150.0nubb_rhc_lambda_0"
string.enumerated_34.value : string = "Nd150.0nubb_rhc_lambda_0_2"
string.enumerated_35.value : string = "Nd150.2nubb"
string.enumerated_36.value : string = "Nd150.0nubbM1"
string.enumerated_37.value : string = "Nd150.0nubbM2"
string.enumerated_38.value : string = "electron.20keV"
string.enumerated_39.value : string = "electron.50keV"
string.enumerated_40.value : string = "electron.100keV"
string.enumerated_41.value : string = "electron.200keV"
string.enumerated_42.value : string = "electron.500keV"
string.enumerated_43.value : string = "electron.1MeV"
string.enumerated_44.value : string = "electron.2MeV"
string.enumerated_45.value : string = "electron.3MeV"
string.enumerated_46.value : string = "electron.50-2000keV_flat"
string.enumerated_47.value : string = "gamma.20keV"
string.enumerated_48.value : string = "gamma.50keV"
string.enumerated_49.value : string = "gamma.100keV"
string.enumerated_50.value : string = "gamma.500keV"
string.enumerated_51.value : string = "gamma.1MeV"
string.enumerated_52.value : string = "gamma.2MeV"
string.enumerated_53.value : string = "gamma.2615keV"
string.enumerated.size : integer = 54

4.2.6 Top variant

[name="simulation.VM" type="variant"]

#@config A variant model describing the simulation parameters

#@description The display name of this variant
display_name : string = "Simulation setup"

#@description A short description of the variant
terse_description : string = "The configuration parameters for the simulation setup"

parameters.random_seed.model : string = "random_seed.PM"
parameters.random_seed_flag.model : string = "random_seed_flag.PM"
parameters.total_number_of_event.model : string = "total_number_of_event.PM"
parameters.vertex_generator_name.model : string = "vertex_generator_name.PM"
parameters.event_generator_name.model : string = "event_generator_name.PM"

#@description The list of variant parameters
parameters : string[5] = \
"random_seed"  \
"random_seed_flag"  \
"total_number_of_event"  \
"vertex_generator_name"  \
"event_generator_name"

4.3 Detector variants

4.3.1 Insert preamble

#@description The definitions for generic variants
#@key_label   "name"
#@meta_label  "type"

4.3.2 Calorimeter parameters

  • Energy resolutions
    [name="calo_energy_resolution.PM" type="parameter"]
    display_name        : string = "Main wall energy resolution"
    description         : string = "Energy resolution of main wall calorimeter"
    type                : string = "real"
    real.unit_label     : string = "fraction"
    real.preferred_unit : string = "%"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 %, 100 %]"
    real.default        : real as fraction = 8 %
    
    [name="xcalo_energy_resolution.PM" type="parameter"]
    display_name        : string = "X-wall energy resolution"
    description         : string = "Energy resolution of X-wall calorimeter"
    type                : string = "real"
    real.unit_label     : string = "fraction"
    real.preferred_unit : string = "%"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 %, 100 %]"
    real.default        : real as fraction = 12 %
    
    [name="gveto_energy_resolution.PM" type="parameter"]
    display_name        : string = "Gamma veto energy resolution"
    description         : string = "Energy resolution of gamma veto calorimeter"
    type                : string = "real"
    real.unit_label     : string = "fraction"
    real.preferred_unit : string = "%"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 %, 100 %]"
    real.default        : real as fraction = 15 %
    
  • Energy thresholds
    [name="calo_high_energy_threshold.PM" type="parameter"]
    display_name        : string = "Main wall high energy threshold"
    description         : string = "High energy threshold of main wall calorimeter"
    type                : string = "real"
    real.unit_label     : string = "energy"
    real.preferred_unit : string = "keV"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 keV, 3 MeV]"
    real.default        : real as energy = 150 keV
    [name="calo_low_energy_threshold.PM" type="parameter"]
    display_name        : string = "Main wall low energy threshold"
    description         : string = "Low energy threshold of main wall calorimeter"
    type                : string = "real"
    real.unit_label     : string = "energy"
    real.preferred_unit : string = "keV"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 keV, 3 MeV]"
    real.default        : real as energy = 50 keV
    
    [name="xcalo_high_energy_threshold.PM" type="parameter"]
    display_name        : string = "X-wall high energy threshold"
    description         : string = "High energy threshold of x-wall calorimeter"
    type                : string = "real"
    real.unit_label     : string = "energy"
    real.preferred_unit : string = "keV"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 keV, 3 MeV]"
    real.default        : real as energy = 150 keV
    [name="xcalo_low_energy_threshold.PM" type="parameter"]
    display_name        : string = "X-wall low energy threshold"
    description         : string = "Low energy threshold of x-wall calorimeter"
    type                : string = "real"
    real.unit_label     : string = "energy"
    real.preferred_unit : string = "keV"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 keV, 3 MeV]"
    real.default        : real as energy = 50 keV
    
    [name="gveto_high_energy_threshold.PM" type="parameter"]
    display_name        : string = "Gamma veto high energy threshold"
    description         : string = "High energy threshold of gamma veto calorimeter"
    type                : string = "real"
    real.unit_label     : string = "energy"
    real.preferred_unit : string = "keV"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 keV, 3 MeV]"
    real.default        : real as energy = 150 keV
    [name="gveto_low_energy_threshold.PM" type="parameter"]
    display_name        : string = "Gamma veto low energy threshold"
    description         : string = "Low energy threshold of gamma veto calorimeter"
    type                : string = "real"
    real.unit_label     : string = "energy"
    real.preferred_unit : string = "keV"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 keV, 3 MeV]"
    real.default        : real as energy = 50 keV
    

4.3.3 Magnetic field

  • Magnitude of z-component magnetic field
    [name="bz_magnitude.PM" type="parameter"]
    display_name        : string = "Bz field magnitude"
    description         : string = "Magnitude of z-component of magnetic field"
    type                : string = "real"
    real.unit_label     : string = "magnetic_flux_density"
    real.preferred_unit : string = "gauss"
    mutability          : string = "variable"
    variable.mode       : string = "interval"
    real.domain         : string = "[0 G, 100 G]"
    real.default        : real as magnetic_flux_density = 25 G
    

4.3.4 Source material

[name="bb_source_material.PM" type="parameter"]
display_name  : string = "Source material"
description   : string = "The material of the source foil"
type          : string = "string"
mutability    : string = "variable"
variable.mode : string = "enumeration"
string.enumerated.size : integer = 4
string.enumerated_0.value : string = "snemo::se82_source_material"
string.enumerated_1.value : string = "snemo::ca48_source_material"
string.enumerated_2.value : string = "snemo::nd150_source_material"
string.enumerated_3.value : string = "snemo::copper"

4.3.5 Top variant

[name="detector.VM" type="variant"]

#@config A variant model describing the detector parameters

#@description The display name of this variant
display_name : string = "Detector setup"

#@description A short description of the variant
terse_description : string = "The configuration parameters for the detector setup"

parameters.calo_energy_resolution.model : string = "calo_energy_resolution.PM"
parameters.xcalo_energy_resolution.model : string = "xcalo_energy_resolution.PM"
parameters.gveto_energy_resolution.model : string = "gveto_energy_resolution.PM"
parameters.calo_high_energy_threshold.model : string = "calo_high_energy_threshold.PM"
parameters.calo_low_energy_threshold.model : string = "calo_low_energy_threshold.PM"
parameters.xcalo_high_energy_threshold.model : string = "xcalo_high_energy_threshold.PM"
parameters.xcalo_low_energy_threshold.model : string = "xcalo_low_energy_threshold.PM"
parameters.gveto_high_energy_threshold.model : string = "gveto_high_energy_threshold.PM"
parameters.gveto_low_energy_threshold.model : string = "gveto_low_energy_threshold.PM"
parameters.bz_magnitude.model : string = "bz_magnitude.PM"
parameters.bb_source_material.model : string = "bb_source_material.PM"

#@description The list of variant parameters
parameters : string[11] = \
"calo_energy_resolution"  \
"xcalo_energy_resolution"  \
"gveto_energy_resolution"  \
"calo_high_energy_threshold"  \
"calo_low_energy_threshold"  \
"xcalo_high_energy_threshold"  \
"xcalo_low_energy_threshold"  \
"gveto_high_energy_threshold"  \
"gveto_low_energy_threshold"  \
"bz_magnitude"  \
"bb_source_material"
File under version control - commit 17f7cf0 - 2015-10-24