Tonneau de scintillateurs



Cet exemple construit un détecteur cylindrique à scintillateur en tonneau composé de 48 lattes trapézoïdales disposées en anneau complet. Il illustre l’API distribute_on_circle servant à répliquer un volume à intervalles angulaires réguliers autour d’un cercle et montre comment dimensionner les lattes pour que les faces adjacentes soient quasi jointives.

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 et exécuter 3 événements :

cp -r $GEMC_HOME/examples/basic/scintillator_barrel .
cd scintillator_barrel
./scintillator_barrel.py
gemc scintillator_barrel.yaml


Géométrie

La géométrie est définie dans scintillator_barrel.py. Le monde (une boîte nommée root) contient 48 volumes paddle identiques disposés en anneau :

Consultez la documentation Fonctions utilitaires de structure pour la référence complète de l’API distribute_on_circle et la géométrie de dimensionnement.

Visualiseur interactif (tonneau complet de 48 lattes) :


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 example

gemc -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: 500*MeV
    theta: 90*deg
    delta_phi: 360*deg
    multiplicity: 3

Consultez aussi la documentation du générateur interne pour en savoir plus.


Numérisation

Chaque paddle se voit attribuer la numérisation flux avec un identifiant de latte unique :

paddle.digitization = "flux"
# ...
v.set_identifier("paddle", i)

Consultez la documentation Flux pour plus d’informations.


L’API distribute_on_circle

La méthode distribute_on_circle de GVolume réplique le volume modèle n fois autour d’un cercle de rayon radius donné. Avec align=True, chaque copie subit en plus une rotation autour de l’axe choisi selon sa position angulaire φᵢ, ce qui maintient le repère local de chaque latte aligné radialement :

for i, v in enumerate(paddle.distribute_on_circle(n, radius, align=True, axis='z')):
    v.set_identifier("paddle", i)
    v.publish(cfg)

La méthode renvoie une liste de copies GVolume indépendantes, une par pas angulaire, chacune nommée <name>_i et positionnée en (radius·cos φᵢ, radius·sin φᵢ, 0). Référence complète de l’API : Fonctions utilitaires de structure.


Utilisation

Construction du détecteur

Utilisez le script Python scintillator_barrel.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.

Pour en savoir plus, consultez aussi Construction de la géométrie.


Exécution de GEMC

Le fichier scintillator_barrel.yaml lance la simulation. Ajoutez -gui pour l’exécuter de manière interactive :

gemc scintillator_barrel.yaml -gui

Modifiez scintillator_barrel.yaml selon vos besoins, en particulier pour changer le nombre d’événements, ajouter des threads ou sélectionner les formats de sortie.


Exécution des événements

La vue ci-dessous montre le tonneau de face après un événement, avec 3 protons émis radialement vers l’extérieur à θ = 90°. Chaque proton traverse une latte de scintillateur.

Scintillator barrel viewed end-on along the beam axis. Three protons at θ = 90° travel radially outward, each depositing energy in one paddle.


Sortie

L’option gstreamer sélectionne les noms de fichiers de sortie et le format :

gstreamer:
  - format: csv
    filename: barrel

Consultez également la documentation sur les sorties pour plus d’informations.


Tracé de graphiques 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 scintillator_barrel.yaml -n=1000

Tracez l’énergie totale déposée par hit :

gemc-analyzer barrel_t0_digitized.csv totEdep --kind csv

scintillator_barrel : énergie totale déposée par hit

Tracez l’énergie vraie de la particule le long de sa trajectoire :

gemc-analyzer barrel_t0_true_info.csv E --kind csv --data true_info

scintillator_barrel : énergie vraie de la trajectoire de la particule