A GWorld assembles multiple systems, applies modifiers, and assigns final names.
A GSystemFactory loads a system from a concrete source (sqlite, ASCII, CAD, ...).
Ownership and lifecycle
The world owns the system map container, and stores systems as shared pointers.
Each system owns its collections of volumes and materials.
Factories are temporary objects used during load; they may keep transient state such as open DB handles or search paths and should release them in closeSystem().
Factories
Factory selection is driven by system configuration:
sqlite : loads geometry/materials from a sqlite database.
ascii : loads geometry/materials from text files with positional fields.
CAD : imports volumes from CAD assets (e.g. STL).
GDML : placeholder for future GDML support.
Available Options and their usage
This module reads the following option keys from the runtime option provider:
isPresent (bool): if false, remove volume from world (default: true)
sql
Type: string
Meaning: sqlite file path (or SQL host, depending on factory) used as the default geometry source
Behavior:
used as the base database/location when creating systems
overridden by ascii_db when factory == "ascii"
ascii_db
Type: string
Meaning: alternative search path/root used by the ASCII factory
Behavior:
when a system entry selects the ASCII factory, this value replaces sql as the source root
experiment
Type: string
Meaning: experiment selection shared by all systems
Behavior:
passed into each created GSystem as the experiment context
runno
Type: integer
Meaning: conditions/run number shared by all systems
Behavior:
passed into each created GSystem as the run context used for variation/run-dependent selection
Note: this module’s option schema is composed by gsystem::defineOptions(), and it also aggregates options from gfactory::defineOptions(). Any additional plugin-loader options are documented there.
Verbosity and logging
Most classes in this module derive from GBase and therefore use a GLogger.
Typical verbosity behavior (convention for classes derived from GBase / using GLogger):
Level 0: high-level milestones and key warnings (e.g. missing optional files, major fallbacks).
Level 1: normal informational messages (e.g. which systems/factories are loading).