GEMC (GEant Monte-Carlo) is a program based on Geant4 to simulate the passage of particles through matter. It provides:


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:

  • Complex geometries can be built and uploaded to the databases without programming knowledge thanks to an intuitive python API
  • Models can be imported from CAD and/or GDML and mixed with the pyton API's.
  • The geometry can be modded at run time, for example by applying tilts / displacements

  • gemcArch
    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  
    gemcExamplePic gemcCodeExample
    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  
    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" }