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
- Logging priority
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"