Esempio sui materiali
Questo esempio illustra i quattro modi per definire un materiale in GEMC: utilizzando un materiale predefinito di Geant4, componendo un materiale a partire da elementi in base al numero di atomi, componendo un materiale a partire da materiali esistenti in base alle frazioni di massa e aggiungendo proprietà ottiche per la scintillazione o la radiazione Cherenkov.
Puoi eseguire questo esempio nel tuo browser:
Avvio rapido
Copia l’esempio nella directory corrente. Per creare la geometria ed eseguire 10 eventi:
cp -r $GEMC_HOME/examples/basic/material .
cd material
./materials.py
gemc materials.yaml -n=10
Geometria
La geometria è definita in materials.py.
Il mondo (un parallelepipedo chiamato root) contiene cinque tubi identici posizionati lungo l’asse z. Tutti i tubi hanno la stessa forma: 10 cm di diametro, 1 cm di spessore, a partire da z = 0, con una distanza di 3 cm tra l’uno e l’altro. Differiscono solo per colore e definizione del materiale:
| Tubo | Nome del volume | Materiale | Metodo di definizione |
|---|---|---|---|
| 1 | tube_carbon | G4_C | Predefinito in Geant4 (grafite) |
| 2 | tube_water | custom_water | Composizione molecolare (H2O) |
| 3 | tube_mixture | air_water_mixture | Frazioni di massa (80% aria, 20% acqua) |
| 4 | tube_scintillator | my_scintillator | Simile al NaI, con proprietà di scintillazione |
| 5 | tube_optical | optical_glass | SiO2 con indice di rifrazione |
Visualizzatore interattivo:
Definizioni dei materiali
Tubo 1 — Materiale predefinito in Geant4
Il caso più semplice: assegna un nome dal
Database dei materiali di Geant4
direttamente a gvolume.material:
tube1.material = "G4_C"
Non è necessario alcun oggetto GMaterial; GEMC risolve il nome in fase di esecuzione.
Tubo 2 — Composizione molecolare
Usa GMaterial e addNAtoms per specificare gli atomi e il loro numero nella formula chimica:
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)
Il numero totale di atomi deve essere maggiore di 1.
Tubo 3 — Frazioni di massa
Usa addMaterialWithFractionalMass per miscelare materiali esistenti in base alle frazioni di massa.
La somma delle frazioni deve essere esattamente 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)
Tubo 4 — Proprietà di scintillazione
Imposta photonEnergy e i campi di scintillazione per abilitare l’emissione di fotoni ottici.
Tutte le grandezze dipendenti dall’energia devono avere lo stesso numero di valori di 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)
Tubo 5 — Indice di rifrazione (Cherenkov)
Imposta photonEnergy, indexOfRefraction e, facoltativamente, absorptionLength per abilitare
la radiazione Cherenkov nel materiale. Si segue lo stesso approccio utilizzato nel seguente
esempio Cherenkov:
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)
Lista di fisica
Nel file YAML è selezionata la lista FTFP_BERT + G4OpticalPhysics in modo che i fotoni ottici prodotti dalla
scintillazione e dalla radiazione Cherenkov vengano tracciati.
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
Generatore
La cinematica delle particelle è definita nel file YAML:
gparticle:
- name: proton
p: 2000*MeV
vz: -2*cm
delta_vx: 0.1*cm
delta_vy: 0.1*cm
multiplicity: 1
Vedi anche la documentazione del generatore interno per ulteriori informazioni.
Utilizzo
Costruzione del rivelatore
./materials.py
Vedi anche la costruzione della geometria per ulteriori informazioni.
Esecuzione di GEMC
gemc materials.yaml -n=10
Le annotazioni e le decorazioni della scena sono salvate in annotations.yaml. Esegui solo il file YAML principale
per una vista essenziale, oppure passa entrambi i file YAML per includere le etichette e la scala di riferimento:
gemc materials.yaml -n=10
gemc materials.yaml annotations.yaml -n=10
Aggiungi -gui per l’esecuzione interattiva.
Esecuzione degli eventi
Output
Nel file YAML sono configurati due flussi di output:
gstreamer:
- format: csv
filename: material
Vedi anche la documentazione dell’output per maggiori informazioni.