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:


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  
gemcExamplePic gemcCodeExample
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  
clas12v
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:

  • Multiple versions of a detector are organized using a single string
  • Easiness to select the desired configuration


  • 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" }