Exemple b1
Cet exemple reproduit l’exemple de base B1 de Geant4. Il utilise la numérisation dosimeter pour stocker la dose accumulée sur un détecteur.
Vous pouvez exécuter cet exemple dans votre navigateur :
Démarrage rapide
Copiez l’exemple dans votre répertoire courant. Pour créer la géométrie, exécuter 10 événements et produire des fichiers de sortie ROOT et CSV :
cp -r $GEMC_HOME/examples/basic/b1 .
cd b1
./b1.py
gemc b1.yaml -n=10
Géométrie
La géométrie, illustrée ci-dessous, est définie dans b1.py.
Le monde (une boîte nommée root) contient :
- Envelope, une autre boîte constituée d’eau.
-
Shape1 et Shape2, un polycône et un trapézoïde, placés à l’intérieur d’Envelope. Ils sont constitués de matériaux représentant les tissus et les os, courants dans les applications médicales et donc prédéfinis dans la base de données des matériaux de Geant4 :
- G4_A-150_TISSUE
- G4_BONE_COMPACT_ICRU
Visualiseur interactif :
Liste de physique
QBBC est utilisée par défaut, sélectionnée dans le fichier YAML avec phys_list: QBBC.
phys_list
The physics list can be selected using the option
gemc -phys_list <value>where
<value>can be a combination of the Geant4 physics constructors separated by the+sign. For examplegemc -phys_list="FTFP_BERT + G4NeutronCrossSectionXS"To see a list of the available Geant4 constructors:
gemc -showPhysics
Générateur
La cinématique des particules est définie dans le fichier YAML :
gparticle:
- name: gamma
p: 6*MeV
vz: -15*cm
delta_vx: 4*cm
delta_vy: 4*cm
multiplicity: 1
gparticle
The
gparticleoption controls the Geant4 particle gun. For the complete list of parameters:gemc help gparticle.Common parameters:
name: particle name (mandatory), e.g.protonore-multiplicity: number of copies generated per event; copies are independently randomized when spread parameters such asdelta_pordelta_thetaare setp: particle momentum with unit, e.g.4*GeVor4000*MeVdelta_p: momentum spread, centered onptheta: polar angle with unit, e.g.23*degor0.4*raddelta_theta: polar-angle spread, centered onthetaphi: azimuthal angle with unit, e.g.90*degKinematic values accept an explicit Geant4 unit (
value*unit). A plain number without a unit falls back to MeV for momentum, deg for angles, and cm for vertex coordinates, with a logged warning.For example, to define a particle gun with one electron along z plus one proton at θ = 30° and φ = 90°:
Command line:
-gparticle="[{name: e-, p: 5*GeV}, {name: proton, p: 2000*MeV, theta: 30*deg, phi: 90*deg}]"YAML:
gparticle: - name: e- p: 5*GeV multiplicity: 5 - name: proton p: 2000*MeV theta: 30*deg phi: 90*deg
Voir aussi la documentation du générateur interne pour plus d’informations.
Numérisation
La sensibilité du volume Shape2 est spécifiée avec la numérisation dosimeter (l’une des routines
GEMC prédéfinies disponibles) dans b1.py :
gvolume.digitization = 'dosimeter'
gvolume.set_identifier('mydosimeter', 1)
La numérisation dosimeter crée et accumule les variables etot et dose au fil des événements d’une exécution.
\[\mathrm{dose} = \frac{\mathrm{etot}}{\mathrm{mass}}\]où etot est l’énergie totale déposée à chaque événement et mass est la masse de Shape2.
Ici, la chaîne personnalisée mydosimeter et le nombre 1 identifient l’élément sensible.
Les variables mydosimeter, etot et dose sont enregistrées dans la sortie.
Voir la documentation du dosimètre pour plus d’informations.
Utilisation
Construction du détecteur
Utilisez le script Python b1.py pour construire le détecteur. Par défaut, la configuration est stockée
dans un fichier SQLite nommé gemc.db. Des options en ligne de commande permettent de définir le type
de base de données, les variations et le numéro d’exécution.
python API
Pass
-hfor additional command line options:options: -h, --help show this help message and exit -f, --factory FACTORY ascii, sqlite -v, --variation VARIATION Set variation name -r, --run RUN Set run number -sql, --dbhost DBHOST SQLite filename or MYSQL host -pv, --pyvista Show geometry using pyvista (needs pyvista) -pvb, --pvb, --pyvista-background Use PyVista BackgroundPlotter (needs pyqt6 pyvistaqt) -pvw, --width WIDTH Set plotter width -pvh, --height HEIGHT Set plotter height -pvx, --x X Set plotter x position -pvy, --y Y Set plotter y position -axes, --add_axes_at_zeroIf you have
pyvista(see also install pyvista), you can use the-pvand-pvboptions to display the setup without having to run GEMC
Voir aussi la construction de la géométrie pour plus d’informations.
Exécution de GEMC
Le fichier b1.yaml permet d’exécuter la simulation avec cette configuration.
Ajoutez -gui pour exécuter GEMC de manière interactive :
gemc b1.yaml -gui
Les annotations et décorations de la scène se trouvent dans annotations.yaml afin que le même exemple
puisse être rendu avec ou sans étiquettes :
gemc b1.yaml
gemc b1.yaml annotations.yaml
Modifiez b1.yaml ou la ligne de commande selon vos besoins, en particulier pour ajouter des particules,
contrôler le nombre de threads ou changer la sortie.
Exécution des événements
Sortie
L’option gstreamer sélectionne le nom et le format de la sortie. Le fichier YAML écrit simultanément des flux CSV et ROOT :
gstreamer:
- format: csv
filename: b1
gstreamer
The
gstreameroption selects the output name and format. Rungemc help gstreamerto check its documentation:-gstreamer=<sequence> ......: define a gstreamer output • filename: name of output file. Default value: NODFLT • format: format of output file. Default value: NODFLT • type: type of output fileDefault value: event Define output formats and filenames. It can be used to select <events> or <frame> streams. The file extension is added automatically based on the format. Supported formats: - root - ascii - csv - json Output types: - event: write events - stream: write frame time snapshots Example that defines two gstreamer outputs: -gstreamer="[{format: root, filename: out}, {format: csv, filename: out}]" The produced files structure depends on the accumulation method used: - event-based digitization (like <flux>) will have one file per thread, with "_t<thread#>" appended to the filename - run-based digitization (like <dosimeter>) will have one output file
Voir aussi la documentation sur la sortie pour plus d’informations.
Tracé avec l’analyseur GEMC
Exécutez d’abord GEMC avec 20 événements. Le fichier YAML par défaut écrit les flux CSV de l’analyseur.
gemc b1.yaml -n=20
Tracez la dose accumulée :
gemc-analyzer b1_digitized.csv dose --kind csv
