GEMC (GEant Monte-Carlo) leverages databases to create
Geant4 systems to simulate
the passage of particles through matter. Key features include:
- Python API
- Support for geometry variations to adapt to different simulation setups
- Pre-packaged signal digitization tools, such as flux and dosimeter simulations
- Plugins mechanism to extend functionality, including custom user generators and digitization
- Emulation of hardware electronics
- Built-in ASCII and ROOT output formats
Database and simulations |
---|
GEMC utilizes ASCII, SQLite, MySQL, GDML, CAD databases to dynamically create Geant4 simulation objects, including geometry, materials, and more. Systems can be created without requiring code recompilation and without C++ or Geant4 knowledge, ![]() |
Typical gemc usage: detectors are loaded from various databases sources. Particles are transported through materials by Geant4, hits are collected and digitized, and output(s) are created. |
Python API | |
---|---|
![]() |
![]() |
Geant4 volumes are built using the python API. An example geometry: a flux scintillator paddle collects hits from protons impinging on a liquid hydrogen target | The above snippet is the only code needed to build the geometry and record all tracks hitting the paddle. |
Detector Variations | |
---|---|
![]() |
A detector can be re-used in multiple experiments, with configuration changes such as components shifts, changes of materials, addition or removal of certain volumes. GEMC can manage these changes by using variations . This has the advantages:In the YAML steering card the two variations of clas12CD are loaded by specifying the variation name: { "system": "clas12CD", "variation": "nominal" } { "system": "clas12CD", "variation": "targetShift" } |
In the above animation two variations of the CLAS12 Central Detector (clas12CD) are shown. The geometries are identical except for the position of the target. |