Exemple sur les matériaux
Cet exemple illustre les quatre façons de définir un matériau dans GEMC : utiliser un matériau intégré à Geant4, composer un matériau à partir d’éléments par nombre d’atomes, composer un matériau à partir de matériaux existants par fraction massique, et ajouter des propriétés optiques pour la scintillation ou le rayonnement Tcherenkov.
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 10 événements :
cp -r $GEMC_HOME/examples/basic/material .
cd material
./materials.py
gemc materials.yaml -n=10
Géométrie
La géométrie est définie dans materials.py.
Le monde (une boîte nommée root) contient cinq tubes identiques placés le long de l’axe z. Tous les tubes ont la même forme : 10 cm de diamètre et 1 cm d’épaisseur. Ils sont disposés à partir de z = 0, avec un espace de 3 cm entre eux. Ils ne diffèrent que par leur couleur et la définition de leur matériau :
| Tube | Nom du volume | Matériau | Méthode de définition |
|---|---|---|---|
| 1 | tube_carbon | G4_C | Intégré à Geant4 (graphite) |
| 2 | tube_water | custom_water | Composition moléculaire (H2O) |
| 3 | tube_mixture | air_water_mixture | Fractions massiques (80 % d’air, 20 % d’eau) |
| 4 | tube_scintillator | my_scintillator | Type NaI avec propriétés de scintillation |
| 5 | tube_optical | optical_glass | SiO2 avec indice de réfraction |
Visualiseur interactif :
Définitions des matériaux
Tube 1 — Matériau intégré à Geant4
Le cas le plus simple : affecter directement un nom de la
base de données de matériaux de Geant4
à gvolume.material :
tube1.material = "G4_C"
Aucun objet GMaterial n’est nécessaire ; GEMC résout le nom au moment de l’exécution.
Tube 2 — Composition moléculaire
Utilisez GMaterial et addNAtoms pour spécifier les atomes et leur nombre dans la formule chimique :
water = GMaterial("custom_water")
water.description = "Water defined by molecular composition (H2O)"
water.density = 1.0 # g/cm3
water.addNAtoms("H", 2)
water.addNAtoms("O", 1)
water.publish(cfg)
Le nombre total d’atomes doit être supérieur à 1.
Tube 3 — Fractions massiques
Utilisez addMaterialWithFractionalMass pour mélanger des matériaux existants selon leurs fractions massiques.
La somme des fractions doit être exactement égale à 1 :
mixture = GMaterial("air_water_mixture")
mixture.description = "80% air / 20% water mixture"
mixture.density = 0.9601 # g/cm3
mixture.addMaterialWithFractionalMass("G4_AIR", 0.80)
mixture.addMaterialWithFractionalMass("G4_WATER", 0.20)
mixture.publish(cfg)
Tube 4 — Propriétés de scintillation
Définissez photonEnergy et les champs de scintillation pour activer l’émission de photons optiques.
Toutes les grandeurs dépendant de l’énergie doivent comporter le même nombre d’entrées que photonEnergy :
scintillator = GMaterial("my_scintillator")
scintillator.density = 3.67 # g/cm3
scintillator.addNAtoms("Na", 1)
scintillator.addNAtoms("I", 1)
scintillator.photonEnergy = "2.0*eV 2.5*eV 3.0*eV 3.5*eV 4.0*eV"
scintillator.fastcomponent = "1.0 0.9 0.8 0.7 0.6"
scintillator.slowcomponent = "0.5 0.4 0.3 0.2 0.1"
scintillator.scintillationyield = 38000 # photons/MeV
scintillator.resolutionscale = 1.0
scintillator.fasttimeconstant = 6 # ns
scintillator.slowtimeconstant = 88 # ns
scintillator.yieldratio = 0.8
scintillator.birksConstant = 0.00152
scintillator.publish(cfg)
Tube 5 — Indice de réfraction (Tcherenkov)
Définissez photonEnergy, indexOfRefraction et, éventuellement, absorptionLength pour activer le
rayonnement Tcherenkov dans le matériau. Cela reprend l’approche utilisée dans cet
exemple de rayonnement Tcherenkov :
optical_glass = GMaterial("optical_glass")
optical_glass.density = 2.5 # g/cm3
optical_glass.addNAtoms("Si", 1)
optical_glass.addNAtoms("O", 2)
optical_glass.photonEnergy = "2.0*eV 3.0*eV 4.0*eV 5.0*eV"
optical_glass.indexOfRefraction = "1.458 1.466 1.476 1.490"
optical_glass.absorptionLength = "3*m 3*m 3*m 3*m"
optical_glass.publish(cfg)
Liste de physique
FTFP_BERT + G4OpticalPhysics est sélectionné dans le fichier YAML afin que les photons optiques issus de la
scintillation et du rayonnement Tcherenkov soient suivis.
phys_list: FTFP_BERT + G4OpticalPhysics
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: 2000*MeV
vz: -2*cm
delta_vx: 0.1*cm
delta_vy: 0.1*cm
multiplicity: 1
Consultez également la documentation du générateur interne pour plus d’informations.
Utilisation
Construction du détecteur
./materials.py
Consultez également la documentation sur la construction de la géométrie pour plus d’informations.
Exécution de GEMC
gemc materials.yaml -n=10
Les annotations et décorations de la scène sont conservées dans annotations.yaml. Exécutez le fichier YAML
principal seul pour une vue épurée, ou passez les deux fichiers YAML pour inclure les étiquettes et
l’indication d’échelle :
gemc materials.yaml -n=10
gemc materials.yaml annotations.yaml -n=10
Ajoutez -gui pour exécuter en mode interactif.
Exécution des événements
Sortie
Deux flux de sortie sont configurés dans le fichier YAML :
gstreamer:
- format: csv
filename: material
Consultez également la documentation sur les sorties pour plus d’informations.