GEMC Logo gemc GEANT4 SIMULATION FRAMEWORK

Ce site documente GEMC à partir de la version 3. Pour les simulations CLAS12, utilisez le dépôt GEMC2 clas12Tags.


Simulations Geant4 pilotées par des bases de données avec une API Python

GEMC est une application Geant4 pilotée par des bases de données et destinée aux simulations de détecteurs et de transport des rayonnements. Son API Python permet de définir des configurations de détecteurs complexes sans écrire de code Geant4.

Les descriptions de détecteurs restent séparées de l’exécutable : vous les créez en Python, les stockez dans des bases de données ASCII ou SQLite, et GEMC les charge à l’exécution pour lancer la simulation Geant4.


Points forts

L’objectif est d’aider les utilisateurs à prototyper des systèmes de détecteurs sans écrire une application Geant4 personnalisée, tandis que les plugins C++ permettent de personnaliser la réponse des détecteurs, les champs magnétiques, les générateurs d’événements et les formats de sortie.


Essayez GEMC

Aucune installation nécessaire. Cliquez sur un badge pour lancer une session JupyterLab en direct dans votre navigateur :

Démarrage rapide Crée un système avec un détecteur simple et une cible
geant4 basic/b2 Reproduit l'exemple basic B2 de Geant4
CAD Importe des maillages STL d'organes avec la fabrique CAD et enregistre la dose par organe
Manipulations du générateur 11 configurations de vertex et d'angles vérifiées avec des graphiques Analyzer
Solides booléens Construit des solides par soustraction, union et intersection à partir de volumes composants réutilisables
Matériaux Illustre les matériaux intégrés de Geant4, les compositions personnalisées et les propriétés optiques
Tonneau de scintillateurs 48 lattes scintillantes trapézoïdales recouvrant un tonneau cylindrique à l'aide de distribute_on_circle
Cherenkov Présente l'activation du rayonnement Cherenkov dans un détecteur GEMC
Miroirs Présente des miroirs optiques polis, rugueux et semi-transparents dans des conditions identiques
Miroir parabolique Focalise les photons optiques avec une fine coque de miroir G4Paraboloid


Image de conteneur

Pour une session JupyterLab locale ou sur une infrastructure HPC, utilisez l’image multiarchitecture préconstruite :

# Docker
docker run --rm -p 8888:8888 ghcr.io/gemc/binder-tutorials:latest

# Apptainer
apptainer pull gemc-binder-tutorials.sif docker://ghcr.io/gemc/binder-tutorials:latest
apptainer exec gemc-binder-tutorials.sif jupyter lab --ip=0.0.0.0 --no-browser



Galerie 3D interactive

Faites pivoter la caméra avec la molette de la souris ou utilisez les touches fléchées dans chaque vignette. Cliquez sur le lien du titre pour accéder à la documentation.



pygemc : l’API Python

L’API Python de GEMC, pygemc, fournit des outils de création de bases de données de géométrie et de matériaux, la visualisation des géométries avec pyvista, ainsi que gemc-system-template et gemc-analyzer. L’analyseur peut lire les sorties CSV et ROOT de GEMC et tracer des histogrammes à partir de variables sélectionnées.

Python API example
The code fills the database with the world volume, a liquid hydrogen target, and a flux plane.
The `pyvista` option gives immediate geometry visualization.
In the GEMC simulation, hits are created from particles generated by a beam of protons impinging on the liquid hydrogen target.
The total deposited energy is plotted with the `analyzer` module.

L’extrait ci-dessous définit le plan de flux sensible en aval de la cible. GEMC enregistre un hit flux chaque fois qu’une trajectoire générée traverse ce volume.

# Place a thin scoring plane downstream of the target.
flux_z = 50
flux_dx = 1
flux_dim = world_size * 0.8

# Define the plane as an air box inside the world volume.
gvolume = GVolume("FluxPlane")
gvolume.mother = "root"
gvolume.description = "Flux Scoring Plane"
gvolume.make_box(flux_dim * 0.5, flux_dim * 0.5, flux_dx * 0.5)
gvolume.material = "G4_AIR"
gvolume.color = "FAFAD2"
gvolume.set_position(0, 0, flux_z)

# Turn the volume into a GEMC flux detector and tag its output column.
gvolume.digitization = "flux"
gvolume.set_identifier("flux_plane", 1)
gvolume.publish(cfg)



Bases de données

Les définitions de détecteurs sont stockées dans des bases de données. Un déroulement typique comporte une seule étape à réaliser par l’utilisateur :

Database-driven architecture
Users define detector databases through the Python API (Step 1). GEMC then builds Geant4 objects, transports particles to create hits, applies digitization and electronics emulation, and streams the output data (Steps 2–5).


Note

L’exécution de simulations ne requiert aucune connaissance préalable du C++ ou de Geant4. Des connaissances de base en Python aident à organiser les configurations complexes. Les utilisateurs peuvent également définir leurs propres routines d’émulation matérielle. Dans ce cas, des connaissances de base en C++ sont utiles pour les numérisations complexes.



Variations de géométrie

Un détecteur peut être réutilisé d’une expérience à l’autre, avec des changements de configuration tels que des déplacements de composants, des changements de matériaux ou l’ajout et la suppression de volumes. GEMC prend en charge ces versions de géométrie à l’aide de chaînes variation et/ou de numéros de run pour s’adapter aux différentes configurations de simulation.

Python API example
The animation shows two variations of the CLAS12 Central Detector. The geometries are identical except for the target position. Users select them with a variation string or run number in the configuration file or command-line options.



Dernières actualités

Roadmap

Roadmap to GEMC 0.6

This roadmap tracks the new features, improvements, and issue resolutions planned for GEMC 0.6.

Release

GEMC 0.5

GEMC 0.5 adds streaming readout, Geant4 macro execution, and more reliable geometry and multithreaded simulation. The coordinated release also includes pygemc 0.5.0 and CLAS12 systems 0.3.

Roadmap

Roadmap to GEMC 0.5

This roadmap tracks the new features, improvements, and issue resolutions planned for GEMC 0.5.



Intégration continue

GEMC est compilé, testé et déployé sous forme d’images Docker par l’intégration continue de GitHub sur plusieurs plateformes et sur les architectures ARM64 et AMD64.

gemc

Tests tests
Sanitizer Sanitize
CodeQL CodeQL
Déploiement d’images déploiement
Archives binaires Archives binaires
Archive macOS Archive macOS
Version nocturne Version nocturne
Page d’accueil Site
Téléchargements Docker Téléchargements Docker
Doxygen Documentation
Archives de version Archives de version

pygemc

Version de développement nocturne Version de développement nocturne
Publication sur PyPI Publication sur PyPI
Tests tests pygemc
PyPI pygemc PyPI



Référence

Veuillez citer l’article suivant si vous utilisez GEMC :

M. Ungaro et la collaboration CLAS, “The CLAS12 Geant4 simulation,” Nuclear Instruments and Methods in Physics Research Section A: Accelerators, Spectrometers, Detectors and Associated Equipment 959, 163422 (2020). https://doi.org/10.1016/j.nima.2020.163422

BibTeX :

@article{UNGARO2020163422,
  title = {The CLAS12 Geant4 simulation},
  journal = {Nuclear Instruments and Methods in Physics Research Section A: Accelerators,
             Spectrometers, Detectors and Associated Equipment},
  volume = {959},
  pages = {163422},
  year = {2020},
  issn = {0168-9002},
  doi = {https://doi.org/10.1016/j.nima.2020.163422},
  url = {https://www.sciencedirect.com/science/article/pii/S0168900220300279},
  author = {M. Ungaro and {CLAS Collaboration}},
  keywords = {Geant4, GEMC, Simulation, Software, Database, Monte Carlo, CAD, STL, GDML, MYSQL, C++}
}

Bibitem :

\bibitem{UNGARO2020163422}
M. Ungaro and the CLAS Collaboration,
\newblock The CLAS12 Geant4 simulation.
\newblock Nuclear Instruments and Methods in Physics Research Section A \textbf{959}, 163422 (2020).
\newblock \doi{10.1016/j.nima.2020.163422}



Code source et licence

Le code source de GEMC est distribué sous la licence Apache, version 2.0 ; voir NOTICE pour les mentions d’attribution et les remerciements aux tiers. Le logiciel dépend également de composants tiers sous licences distinctes, notamment Geant4, CLHEP, Qt, ROOT, SQLite et Assimp.