GEMC (GEant Monte-Carlo)
is a program based on Geant4
to simulate the passage of particles through matter.
It provides:
- MYSQL / Text Databases for geometry, materials, calibration constants, digitization
- Detector variations
- Emulation of hardware electronics, time windows
- Pre-defined digitizations such as flux and dosimeter
- Plugins mechanism for generators, fields, digitization, inefficiencies, output
- Built-in text and ROOT output
Database sources: code-independent experiment description |
---|
GEMC databases (txt, mysql) to store simulation parameters like geometry, materials, etc. No quantity is hard-coded: systems can be created w/o re-compiling the code. In addition: |
![]() |
A typical GEMC usage: detector geometries and materials are loaded from various databases and the world is formed. Particles are swam through materials by Geant4, hits are digitized, and output(s) are created. |
Python API | |
---|---|
![]() |
![]() |
Geant4 volumes are built using the sci-g 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" } |