GEMC Logo gemc GEANT4 SIMULATION FRAMEWORK

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

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:

Avvio rapido Crea un sistema con un rivelatore semplice e un bersaglio
geant4 basic/b2 Riproduce l'esempio base B2 di Geant4
CAD Importa mesh di organi STL con la factory CAD e registra la dose per organo
Manipolazioni del generatore 11 casi di vertice e angolari verificati con grafici Analyzer
Solidi booleani Costruisce solidi di sottrazione, unione e intersezione da volumi componenti riutilizzabili
Materiali Mostra i materiali predefiniti di Geant4, composizioni personalizzate e proprietà ottiche
Barile scintillatore 48 pale scintillatrici trapezoidali che rivestono un barile cilindrico usando distribute_on_circle
Cherenkov Illustra l'attivazione della radiazione Cherenkov in un rivelatore GEMC
Specchi Illustra specchi ottici lucidati, ruvidi e semitrasparenti in condizioni identiche
Specchio parabolico Focalizza i fotoni ottici con un sottile guscio speculare G4Paraboloid


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.



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.

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’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:

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’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.

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.



Ultime notizie

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.



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 test
Sanitizer Sanitize
CodeQL CodeQL
Distribuzione delle immagini deploy
Tarball dei binari Binary Tarballs
Tarball per macOS macOS Tarball
Release notturna Nightly
Pagina iniziale Site
Pull Docker Docker Pulls
Doxygen Docs
Tarball delle release Release Tarballs

pygemc

Release di sviluppo notturna Nightly Dev Release
Pubblicazione su PyPI Publish PyPI
Test pygemc tests
PyPI pygemc 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.