Exemple b2
Cet exemple reproduit l’exemple de base B2 de Geant4. Il utilise la numérisation flux pour enregistrer les informations vraies et numérisées dans la sortie.
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/b2 .
cd b2
./b2.py
gemc b2.yaml -n=10
Géométrie
La géométrie, illustrée ci-dessous, est définie dans b2.py.
Le monde (une boîte nommée root) contient :
- target, une cible cylindrique en plomb (G4_Pb)
- tracker, un conteneur cylindrique constitué d’air (G4_AIR)
- cinq volumes de chambre cylindriques nommés chamber_0 à chamber_4, en xénon (G4_Xe) et placés à l’intérieur de tracker avec une taille transversale croissante
Visualiseur interactif :
Liste de physique
FTFP_BERT est utilisée par défaut, sélectionnée dans le fichier YAML avec phys_list: FTFP_BERT.
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: proton
p: 3000*MeV
vz: -250*cm
Consultez également la documentation du générateur interne pour plus d’informations.
Numérisation
La sensibilité des volumes des chambres est définie avec la numérisation flux (l’une des routines prédéfinies disponibles dans GEMC)
dans b2.py. Le numéro de copie identifie chaque chambre :
gvolume.digitization = 'flux'
gvolume.set_identifier('mychamber', copyNo)
Dans ce cas, identifier ne contient qu’un seul nom : mychamber.
Consultez la documentation de Flux pour plus d’informations.
En plus des variables numérisées, les informations vraies sont enregistrées dans le flux de sortie.
True Information
The true information is processed by GEMC and, in some cases, averaged and weighted by the energy deposition. For variables like
pid,tid, orprocessName, the data come from the first step in the hit.The complete list of variables is:
- the sensitive element
identifier, assigned by the user. For example:
sectorlayerhitn: hit numberpid: particle IDtid: track IDavgTime: average timeavglx: average local x positionavgly: average local y positionavglz: average local z positionavgx: average global x positionavgy: average global y positionavgz: average global z positiontotalEDeposited: total energy depositedprocessName: process name creating the first step of this hit
Utilisation
Construction du détecteur
Utilisez le script Python b2.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 de run.
Consultez également la page Construction de la géométrie pour plus d’informations.
Exécution de GEMC
Le fichier b2.yaml peut être utilisé pour exécuter la configuration. Ajoutez -gui pour l’exécuter de façon interactive :
gemc b2.yaml -gui
Modifiez b2.yaml selon vos besoins, en particulier pour ajouter des particules, contrôler le nombre de threads ou modifier la sortie.
Exécution des événements
Sortie
L’option gstreamer sélectionne les noms des fichiers de sortie et le format :
gstreamer:
- format: csv
filename: b2
Comme flux est une numérisation par événement, GEMC produira un fichier de sortie par thread.
Pour les fichiers ROOT, vous pouvez utiliser hadd pour fusionner les fichiers.
Consultez également la documentation sur la sortie pour plus d’informations.
Tracé avec l’analyseur GEMC
Exécutez d’abord GEMC avec 1 000 événements. Le fichier YAML par défaut écrit les flux CSV de l’analyseur.
gemc b2.yaml -n=1000
Tracez l’énergie totale déposée par impact :
gemc-analyzer b2_t0_digitized.csv totEdep --kind csv

Tracez l’énergie vraie associée à la trajectoire de la particule :
gemc-analyzer b2_t0_true_info.csv E --kind csv --data true_info

Tracez le résidu de l’angle polaire du proton :
L’option save_original_track: true dans b2.yaml enregistre otid et les composantes de l’impulsion initiale opx,
opy et opz dans la sortie des informations vraies. L’analyseur utilise les directions initiale et actuelle
de l’impulsion pour calculer delta_theta.
gemc-analyzer b2_t0_true_info.csv delta_theta --kind csv --data true_info --pid 2212 --bins 100 --xlim -0.02 \
0.2 --linear-y
