GEMC (GEant Monte-Carlo) is a simulation program built on Geant4
designed to leverage databases for modeling 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 sources: no-code simulations |
---|
GEMC utilizes databases (ASCII, SQLite, MySQL) to dynamically create Geant4 simulation objects, including geometry, materials, and more. Systems can be created or modified without requiring code recompilation. Additionally, geometry can be imported from CAD or GDML files and seamlessly integrated with native Geant4 volumes. |
Typical usage: detector geometries and materials are loaded from various databases sources. Particles are transported through materials by Geant4, hits are collected and digitized, and output(s) are created. Notice that GEMC users do not have to code the Geant4 simulation, but only the detector geometry and materials. |
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 shifts components, changes of materials, addition or removal of certain volumes. GEMC can manage this with a string variable called variation . This has the advantages: |
|
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. |
In the JSON steering card the two variations of clas12CD are loaded by specifying the variation name: { "system": "clas12CD", "variation": "nominal" } { "system": "clas12CD", "variation": "targetShift" } |