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

Materials simulation: particles traversing the material samples.


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.