SNG4 Manager Configuration

1 Introduction

The mctools/g4 library provides a Geant4 standard interface to generate simulated data. A dedicated manager class addresses all the resources needed to :

  • describe the geometry (through a geometry manager from the sngeometry library, a geometry service is also usable)
  • randomize the primary events to be tracked by Geant4 in the virtual geometry model (using the genbb_help library)
  • randomize the primary vertex from which the primary events originate (using the genvtx library)
  • setup Geant4 embeded utilities to handle the production of true hits

More details concerning the use of mctools binaries and Monte-Carlo production can be found in SN@ilWare wiki.

2 Manager configuration

This section describe almost entirely the whole set of options to setup sng4 manager. Each relevant part is split into a unique item which ease the navigation as well as the configuration. The most important code block is the next one which allows the reading of this file by datatools::properties object.

#@description A sample list of setups for Geant4
#@key_label   "name"
#@meta_label  ""

2.1 Main configuration level

Here, general options such as verbosity, debug flags are passed to sng4 manager. By the way, some of these options can be overloaded by the sng4_module which configuration can be changed in the main simulation file.

[name="manager"]

#@description Logging priority
logging.priority      : string = "warning"

#@description Geant4 tracking verbosity flag (from 0 to 10):
g4_tracking_verbosity : integer = 0

#@description Geant4 visualization activation flag:
g4_visualization      : boolean = false

2.2 Event generator

The following code holds the genbb manager to give access to several primary generators from neutrinoless double beta decay, to 214Bi/208Tl contamination or cosmic muon generator. See sngenbb manager file.

[name="event_generator"]

#@description Configuration file for the embedded '::genbb::manager'
manager.config : string as path = \
    "@configuration:sngenbb_manager.conf"

2.3 Vertex generation

This part basically provides the location of vertex generator implemented by genvtx. See sngenvertex manager file.

[name="vertex_generator"]

#@description Main configuration file for the vertex generator manager
manager.config : string as path = \
    "@configuration:sngenvertex_manager.conf"

2.4 Detector construction

Main configuration file for the detector construction user object.

[name="detector_construction"]

2.4.1 Logging priority

#@description Logging priority
logging.priority : string = "fatal"

2.4.2 GDML scheme and options

The Geometry Description Markup Language is an application-indepedent geometry description format based on XML1. It is used as Geant4 toolkit bindings through gemotools converters.

#@description Temporary directory for GDML file generation:
gdml.tmp_dir         : string as path = "/tmp/${USER}/snemo_demo_g4.d"

#@description Access mode to the GDML schema ("local" or "remote")
gdml.schema_location : string = "local" # "remote"

#@description Flag to skip GDML validation
gdml.no_validation   : boolean = false

2.4.3 Step hit processors

Step hit processors are used to convert Geant4 steps into detector hits for SuperNEMO physics.

#@description Logging support for step hit processor factory
hit_processor_factory.logging.priority : string = "warning"

#@description Configuration file for the step hit processor factory:
hit_processor_factory.config : string as path = \
    "@configuration:step_hit_processor_manager.conf"

2.4.4 Sensitive detectors

This category defines sensitive detectors where special treatments of Geant4 steps must be applied. This can be in direct relation with step hit processors defined above.

#@description Parameters for the generation of 'sensitive hits' through 'sensitive detectors' :
sensitive.detectors : string[4] = "calorimeter_SD" "xcalorimeter_SD" "gveto_SD" "tracker_SD"

sensitive.calorimeter_SD.logging.priority                : string  = @variant(core:logging_priority|"warning")
sensitive.calorimeter_SD.hits_buffer_capacity            : integer = 100
sensitive.calorimeter_SD.record_alpha_quenching          : boolean = true
sensitive.calorimeter_SD.record_track_id                 : boolean = true
sensitive.calorimeter_SD.record_primary_particle         : boolean = true
sensitive.calorimeter_SD.drop_zero_energy_deposit_steps  : boolean = false
sensitive.calorimeter_SD.track_gamma                     : boolean = true

sensitive.xcalorimeter_SD.logging.priority               : string  = @variant(core:logging_priority|"warning")
sensitive.xcalorimeter_SD.hits_buffer_capacity           : integer = 100
sensitive.xcalorimeter_SD.record_alpha_quenching         : boolean = true
sensitive.xcalorimeter_SD.record_track_id                : boolean = true
sensitive.xcalorimeter_SD.record_primary_particle        : boolean = true
sensitive.xcalorimeter_SD.drop_zero_energy_deposit_steps : boolean = false
sensitive.xcalorimeter_SD.track_gamma                    : boolean = true

sensitive.gveto_SD.logging.priority                      : string  = @variant(core:logging_priority|"warning")
sensitive.gveto_SD.hits_buffer_capacity                  : integer = 100
sensitive.gveto_SD.record_alpha_quenching                : boolean = true
sensitive.gveto_SD.record_track_id                       : boolean = true
sensitive.gveto_SD.record_primary_particle               : boolean = true
sensitive.gveto_SD.drop_zero_energy_deposit_steps        : boolean = false
sensitive.gveto_SD.track_gamma                           : boolean = true

sensitive.tracker_SD.logging.priority                    : string  = @variant(core:logging_priority|"warning")
sensitive.tracker_SD.hits_buffer_capacity                : integer = 1000
sensitive.tracker_SD.record_alpha_quenching              : boolean = true
sensitive.tracker_SD.record_track_id                     : boolean = true
sensitive.tracker_SD.record_primary_particle             : boolean = true
sensitive.tracker_SD.drop_zero_energy_deposit_steps      : boolean = false
sensitive.tracker_SD.track_gamma                         : boolean = true

2.4.5 Geant4 step hit limits

The following code defines geometry models where Geant4 steps are size limited.

#@description List of geometry models with max steps:
limits.list_of_volumes : string[7] =         \
    "source_external_strip.model.log"        \
    "source_internal_strip.model.log"        \
    "calorimeter_scin_block_front.model.log" \
    "calorimeter_scin_block_back.model.log"  \
    "xwall_scin_block.model.log"             \
    "gveto_scin_block.model.log"             \
    "drift_cell_core.model.log"

#@description Max step length inside source strip:
limits.max_step.source_external_strip.model.log : real as length = 10 um

#@description Max step length inside source strip:
limits.max_step.source_internal_strip.model.log : real as length = 10 um

#@description Max step length inside front calorimeter scin block:
limits.max_step.calorimeter_scin_block_front.model.log : real as length = 500 um

#@description Max step length inside back calorimeter scin block:
limits.max_step.calorimeter_scin_block_back.model.log  : real as length = 500 um

#@description Max step length inside X-calorimeter scin block:
limits.max_step.xwall_scin_block.model.log : real as length = 500 um

#@description Max step length inside gamma veto scin block:
limits.max_step.gveto_scin_block.model.log : real as length = 500 um

#@description Max step length inside the drift cell volume
limits.max_step.drift_cell_core.model.log  : real as length = 5 mm

2.4.6 Geant4 regions

Definition of Geant4 regions.

#@description Flag to use G4 regions
using_regions : boolean = true

#@description List of regions
regions : string[3] = "calorimeter" "tracker" "source"

#@description List of attached volumes/models for 'calorimeter' region
regions.calorimeter.volumes : string[4] =    \
    "calorimeter_scin_block_front.model.log" \
    "calorimeter_scin_block_back.model.log"  \
    "gveto_scin_block.model.log"             \
    "xwall_scin_block.model.log"

#@description List of attached volumes/models for 'tracker' region
regions.tracker.volumes : string[1] = "drift_cell_core.model.log"

#@description List of attached volumes/models for 'source' region
regions.source.volumes : string[2] =  \
    "source_external_strip.model.log" \
    "source_internal_strip.model.log"

2.4.7 Magnetic field

#@description Flag to use magnetic field
using_electromagnetic_field : boolean = true

#@description Name of the magnetic field geometry plugin
electromagnetic_field.plugin_name : string = "fields_driver"

#@description SetDeltaChord miss distance (mm):
electromagnetic_field.miss_distance : real as length = 0.5 mm

#@description Logging priority threshold of the embedded Geant4 magnetic fields
magnetic_field.logging.priority : string = "warning"

#@description Name of the associated fields
magnetic_field.associations : string[1] = "module"

2.5 Physics list

In the development of a Geant4-based application, it is the user's responsibility to decide which physics processes are required, and then to include them in the physics list. The next lines are just aliases to relevant phycical processes for SuperNEMO.

[name="physics_list"]

2.5.1 Logging priority

#@description Logging priority
logging.priority : string = "warning"

2.5.2 SuperNEMO physics plugins

#@description List of physics constructors
physics_constructors.names : string[2] = "particles" "em"

#@description Class ID of the physics constructors named 'particles'
physics_constructors.particles.id     : string = "mctools::g4::particles_physics_constructor"

#@description Configuration file of the physics constructors named 'particles'
physics_constructors.particles.config : string as path = \
    "@configuration:snparticles.conf"

#@description Class ID of the physics constructors named 'em'
physics_constructors.em.id            : string = "mctools::g4::em_physics_constructor"

#@description Configuration file of the physics constructors named 'em'
physics_constructors.em.config        : string as path = \
    "@configuration:snem_processes.conf"
  • Particle physics constructor

    Quite experimental try to set particles used within SuperNEMO "framework".

    #@config Configuration parameters for the particles Geant4 physics constructor
    
    #@description The activation flag for geantinos (neutral and charged, default: 0)
    #use_geantinos               : boolean = false
    
    #@description The activation flag for optical photons (default: 0)
    #use_optical_photons         : boolean = false
    
    #@description The activation flag for muon leptons (default: 0)
    #use_muon_leptons         : boolean = false
    
    #@description The activation flag for tau leptons (default: 0)
    #use_tau_leptons          : boolean = false
    
    #@description The activation flag for light mesons (default: 0)
    #use_light_mesons         : boolean = false
    
    #@description The activation flag for charm mesons (default: 0)
    #use_charm_mesons         : boolean = false
    
    #@description The activation flag for bottom mesons (default: 0)
    #use_bottom_mesons        : boolean = false
    
    #@description The activation flag for nucleons (default: 1)
    use_nucleons             : boolean = true
    
    #@description The activation flag for strange baryons (default: 0)
    #use_strange_baryons      : boolean = false
    
    #@description The activation flag for charm baryons (default: 0)
    #use_charm_baryons        : boolean = false
    
    #@description The activation flag for bottom baryons (default: 0)
    #use_bottom_baryons       : boolean = false
    
    #@description The activation flag for light nuclei (default: 1)
    use_light_nuclei         : boolean = true
    
    #@description The activation flag for light anti-nuclei (default: 0)
    #use_light_anti_nuclei    : boolean = false
    
    #@description The activation flag for generic ion (default: 0)
    use_generic_ion          : boolean = true
    
  • EM physics process
    • Logging priority
      #@description Logging priority
      logging.priority : string = "warning"
      
    • General settings
      #@config Configuration parameters for the electro-magnetic Geant4 physics constructor
      
      #@description Electro-magntox interaction model (value in: "standard", "low_energy", "penelope")
      em.model : string = "standard"
      
    • Electrons/positrons
      #@description The activation flag for electron/positron ionisation (energy loss/delta ray production)
      em.electron.ionisation           : boolean = true
      
      #@description The activation flag for electron/positron multiple scatterring process
      em.electron.multiple_scatterring : boolean = true
      
      #@description The activation flag for electron/positron multiple scatterring process
      em.electron.multiple_scatterring.use_distance_to_boundary: boolean = true
      
      #@description The range factor for electron/positron multiple scatterring process
      em.electron.multiple_scatterring.range_factor: real = 0.005
      
      #@description The activation flag for electron/positron bremsstrahlung process
      em.electron.bremsstrahlung       : boolean = true
      
      #@description The activation flag for electron/positron step limiter process
      em.electron.step_limiter         : boolean = true
      
      #@description The activation flag for positron pannihilation
      em.positron.annihilation         : boolean = true
      
    • Gammas
      #@description The activation flag for Rayleigh scattering
      em.gamma.rayleigh_scattering  : boolean = false
      
      #@description The activation flag for photoelectric effect
      em.gamma.photo_electric       : boolean = true
      
      #@description The activation flag for Compton scattering
      em.gamma.compton_scattering   : boolean = true
      
      #@description The activation flag for gamma conversion
      em.gamma.conversion           : boolean = true
      
      #@description The activation flag for gamma conversion to muons
      em.gamma.conversion_to_muons  : boolean = false
      
    • Muons
      #@description The activation flag for muon ionisation
      em.muon.ionisation           : boolean = false
      
      #@description The activation flag for muon multiple scatterring process
      em.muon.multiple_scatterring : boolean = false
      
      #@description The activation flag for muon pair production
      em.muon.pair_production      : boolean = false
      
      #@description The activation flag for muon bremsstrahlung process
      em.muon.bremsstrahlung       : boolean = false
      
      #@description The activation flag for muon step limiter process
      em.muon.step_limiter         : boolean = false
      
    • Ions
      #@description The activation flag for ion ionisation
      em.ion.ionisation           : boolean = true
      
      #@description The activation flag for ion multiple scatterring process
      em.ion.multiple_scatterring : boolean = true
      
      #@description The activation flag for ion step limiter process
      em.ion.step_limiter         : boolean = true
      
    • Deexcitation
      #@description The activation flag for deexcitation fluorescence process
      #em.deexcitation.fluo         : boolean = false
      
      #@description The activation flag for Auger process
      #em.deexcitation.auger        : boolean = false
      
      #@description The activation flag for PIXE
      #em.deexcitation.pixe         : boolean = false
      
      #@description The activation model for PIXE cross-sections
      #em.deexcitation.pixe.model   : string = "Empirical"
      
      #@description The regions where to apply some deexcitation process
      #em.deexcitation.regions : string[2] = "A" "B"
      
      #@description The activation flag for deexcitation fluorescence process in region "A"
      #em.deexcitation.regions.A.fluo  : boolean = true
      
      #@description The activation flag for Auger process in region "A"
      #em.deexcitation.regions.A.auger : boolean = true
      
      #@description The activation flag for PIXE in region "A"
      #em.deexcitation.regions.A.pixe  : boolean = true
      
      #@description The activation flag for deexcitation fluorescence process in region "B"
      #em.deexcitation.regions.B.fluo  : boolean = true
      
      #@description The activation flag for Auger process in region "B"
      #em.deexcitation.regions.B.auger : boolean = true
      
      #@description The activation flag for PIXE in region "B"
      #em.deexcitation.regions.B.pixe  : boolean = true
      

2.5.3 Using Geant4 region cuts

These cuts are related to some production processes and then, define some minimal step hit size given the detector region.

#@description Activate the use of specific cuts
using_production_cuts : boolean = true

#@description The energy low edge for cuts
production_cuts.low_energy    : real as energy  = 1 keV

#@description The energy high edge for cuts
production_cuts.high_energy   : real as energy = 100 MeV

#@description The production cut default value
production_cuts.default_value : real as length = 1.0 mm

#@description The production cut for gamma
production_cuts.gamma : real as length = 1.0 mm

#@description The production cut for electron
production_cuts.electron : real as length = 1.0 mm

#@description The production cut for positron
production_cuts.positron : real as length = 1.0 mm

#@description The production cut for proton
production_cuts.proton : real as length = 1.0 mm

#@description List of region with production cut
production_cuts.regions : string[3] = "calorimeter" "tracker" "source"

#@description Production cut value for region "calorimeter"
production_cuts.regions.calorimeter.gamma : real as length = 1.0 mm

#@description Production cut value for region "calorimeter"
production_cuts.regions.calorimeter.electron : real as length = 1.0 mm

#@description Production cut value for region "tracker"
production_cuts.regions.tracker.gamma : real as length = 0.5 mm

#@description Production cut value for region "tracker"
production_cuts.regions.tracker.electron : real as length = 0.5 mm

#@description Production cut value for region "source"
production_cuts.regions.source.gamma : real as length = 0.05 mm

#@description Production cut value for region "source"
production_cuts.regions.source.electron : real as length = 0.05 mm

2.6 Geant4 related action

The last part of the configuration concerned Geant4 actions but do not hold a lot of options.

2.6.1 Run action

[name="run_action"]

#@description Logging priority :
logging.priority : string = "warning"

#@description Run action event number print modulo :
#number_events_modulo : integer = 100

#@description If set, this flag forbids the generation of output files :
file.no_save : boolean = true

2.6.2 Event action

[name="event_action"]

#@description Logging priority :
logging.priority : string = "warning"

2.6.3 Primary generator action

[name="primary_generator_action"]

#@config Configuration of the primary generator action

#@description Primary generator action logging priority
logging.priority : string = "warning"

2.6.4 Tracking action

[name="tracking_action"]

#@description Logging priority :
logging.priority : string = "warning"

2.6.5 Stepping action

[name="stepping_action"]

#@description Logging priority :
logging.priority : string = "warning"

2.6.6 Stacking action

[name="stacking_action"]

#@description Logging priority :
logging.priority : string = "warning"

#@description Kill secondary particles within some volumes :
# kill_particles : boolean = false

#@description Kill secondary particles within some volumes :
#kill_particles.volumes : string[1] = "drift_cell_core"

#@description Kill secondary particles within some materials :
#kill_particles.materials : string[1] = "tracking_gas"

File under version control - commit 17f7cf0 - 2015-10-24