Questo sito documenta GEMC versione 3 e successive. Per le simulazioni CLAS12, usa il repository GEMC2 clas12Tags.
Simulazioni Geant4 basate su database con un’API Python
GEMC è un’applicazione Geant4 basata su database per simulazioni di rivelatori e di trasporto della radiazione. La sua API Python permette di definire configurazioni complesse di rivelatori senza scrivere codice Geant4.
Le descrizioni dei rivelatori restano separate dall’eseguibile: le crei in Python, le memorizzi in database ASCII o SQLite e GEMC le carica durante l’esecuzione per eseguire la simulazione Geant4.
In evidenza
- Definizioni dei rivelatori incentrate su Python
- Anteprima della geometria ed esportazione VTK con
pyvista - Database ASCII e SQLite
- Importazione di geometrie da file GDML e CAD
- Visualizzazione interattiva Geant4/Qt e generazione di immagini fuori schermo
- Rivelatori sensibili integrati: flux, dosimeter, particle_counter e gPhotonDetector
- Output della simulazione in ASCII, CSV, JSON e ROOT
- Generazione di eventi dalla GUI, dalla riga di comando e da file YAML e LUND
- Supporto per i campi magnetici, inclusi campi multipolari e mappe ASCII
- Un modulo Python
analyzerper leggere e rappresentare graficamente l’output della simulazione (CSV, ROOT) - Variazioni della geometria e configurazioni dipendenti dal numero di run
L’obiettivo è aiutare gli utenti a prototipare sistemi di rivelatori senza scrivere un’applicazione Geant4 personalizzata, mentre i plugin C++ consentono di personalizzare la risposta dei rivelatori, i campi magnetici, i generatori di eventi e i formati di output.
Prova GEMC
Non serve alcuna installazione. Clicca su un badge per avviare una sessione JupyterLab nel tuo browser:
Immagine del container
Per una sessione JupyterLab locale o su un sistema HPC, usa l’immagine multiarchitettura già pronta:
# 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
Galleria 3D interattiva
Ruota la telecamera con la rotellina del mouse o usa i tasti freccia all’interno di ogni miniatura. Clicca sul titolo per consultare la documentazione.
geant4 basic/b2
CAD
Manipolazioni del generatore
Solidi booleani
Materiali
Barile scintillatore
Cherenkov
Specchi
Specchio parabolico
DC
EC
PCAL
FTOF
LTCC
HTCC
FT
pygemc: l’API Python
L’API Python di GEMC, pygemc, fornisce strumenti per creare database di geometrie e materiali, visualizzare
la geometria con pyvista, oltre a gemc-system-template e gemc-analyzer. Lo strumento di analisi può leggere
l’output CSV e ROOT di GEMC e tracciare istogrammi delle variabili selezionate.
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’estratto seguente definisce il piano sensibile di flusso a valle del bersaglio. GEMC registra un hit flux ogni volta che una traccia generata attraversa questo 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)
Database
Le definizioni dei rivelatori sono memorizzate in database. Un tipico flusso di lavoro prevede un passaggio a cura dell’utente:
Note
L’esecuzione delle simulazioni non richiede conoscenze pregresse di C++ o Geant4. Una conoscenza di base di Python aiuta a organizzare configurazioni complesse. Gli utenti possono anche definire le proprie routine di emulazione dell’hardware. In questo caso, una conoscenza di base del C++ è utile per le digitizzazioni complesse.
Variazioni della geometria
Un rivelatore può essere riutilizzato in più esperimenti, con modifiche alla configurazione come spostamenti dei componenti, cambi di materiale o aggiunte e rimozioni di volumi. GEMC supporta queste versioni della geometria usando stringhe variation e/o numeri run per adattarsi a diverse configurazioni di simulazione.
Ultime notizie
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.
Integrazione continua
GEMC viene compilato, testato e distribuito come immagini Docker da GitHub CI su diverse piattaforme e su entrambe le architetture ARM64 e AMD64.
gemc
| Test | |
| Sanitizer | |
| CodeQL | |
| Distribuzione delle immagini | |
| Tarball dei binari | |
| Tarball per macOS | |
| Release notturna | |
| Pagina iniziale | |
| Pull Docker | |
| Doxygen | |
| Tarball delle release |
pygemc
| Release di sviluppo notturna | |
| Pubblicazione su PyPI | |
| Test | |
| PyPI |
Riferimento bibliografico
Assicurati di citare il seguente articolo se usi GEMC:
M. Ungaro and the CLAS Collaboration, “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}
Codice sorgente e licenza
Il codice sorgente di GEMC è distribuito secondo i termini della Licenza Apache, versione 2.0; consulta NOTICE per le attribuzioni e i riconoscimenti relativi a terze parti. Il software dipende inoltre da componenti di terze parti con licenze separate, tra cui Geant4, CLHEP, Qt, ROOT, SQLite e Assimp.