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
- Définition des détecteurs principalement en Python
- Aperçu de la géométrie et export VTK avec
pyvista - Bases de données ASCII et SQLite
- Import de géométries à partir de fichiers GDML et CAO
- Visualisation interactive Geant4/Qt et génération d’images hors écran
- Détecteurs sensibles intégrés : flux, dosimeter, particle_counter et gPhotonDetector
- Sortie de simulation en ASCII, CSV, JSON et ROOT
- Génération d’événements depuis l’interface graphique, la ligne de commande et les fichiers YAML et LUND
- Prise en charge des champs magnétiques, notamment des champs multipolaires et des cartes au format ASCII
- Un module Python
analyzerpour lire les résultats de simulation et les représenter graphiquement (CSV, ROOT) - Variations de géométrie et configurations dépendant du numéro de run
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 :
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.
geant4 basic/b2
CAD
Manipulations du générateur
Solides booléens
Matériaux
Tonneau de scintillateurs
Cherenkov
Miroirs
Miroir parabolique
DC
EC
PCAL
FTOF
LTCC
HTCC
FT
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.
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 :
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.
Dernières actualités
Roadmap to GEMC 0.6
This roadmap tracks the new features, improvements, and issue resolutions planned for GEMC 0.6.
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 to GEMC 0.5
This roadmap tracks the new features, improvements, and issue resolutions planned for GEMC 0.5.
Toutes les actualités · Flux RSS
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 | |
| Sanitizer | |
| CodeQL | |
| Déploiement d’images | |
| Archives binaires | |
| Archive macOS | |
| Version nocturne | |
| Page d’accueil | |
| Téléchargements Docker | |
| Doxygen | |
| Archives de version |
pygemc
| Version de développement nocturne | |
| Publication sur PyPI | |
| Tests | |
| 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.