Esempio b2
Questo esempio riproduce l’esempio base B2 di Geant4. Utilizza la digitizzazione flux per salvare nell’output le informazioni vere e digitizzate.
Puoi eseguire questo esempio nel tuo browser:
Avvio rapido
Copia l’esempio nella directory corrente. Per creare la geometria, eseguire 10 eventi e produrre file di output ROOT e CSV:
cp -r $GEMC_HOME/examples/basic/b2 .
cd b2
./b2.py
gemc b2.yaml -n=10
Geometria
La geometria, mostrata di seguito, è definita in b2.py.
Il mondo (un parallelepipedo denominato root) contiene:
- target, un bersaglio cilindrico in piombo (G4_Pb)
- tracker, un contenitore cilindrico in aria (G4_AIR)
- cinque volumi cilindrici delle camere denominati da chamber_0 a chamber_4, in xeno (G4_Xe) e collocati all’interno di tracker con dimensioni trasversali crescenti
Visualizzatore interattivo:
Lista di fisica
Per impostazione predefinita viene usata FTFP_BERT, selezionata nel file YAML con 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
Generatore
La cinematica delle particelle è definita nel file YAML:
gparticle:
- name: proton
p: 3000*MeV
vz: -250*cm
Consulta anche la Documentazione del generatore interno per maggiori informazioni.
Digitizzazione
La sensibilità dei volumi delle camere è specificata con la digitizzazione flux
(una delle routine predefinite disponibili in GEMC) in b2.py. Il numero di copia identifica ciascuna camera:
gvolume.digitization = 'flux'
gvolume.set_identifier('mychamber', copyNo)
In questo caso, l’identifier contiene un solo nome: mychamber.
Consulta la Documentazione di Flux per maggiori informazioni.
Oltre alle variabili digitizzate, le informazioni vere vengono salvate nel flusso di output.
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
Utilizzo
Costruzione del rivelatore
Usa lo script Python b2.py per costruire il rivelatore. Per impostazione predefinita, la configurazione
è memorizzata in un file SQLite denominato gemc.db. Le opzioni da riga di comando consentono di definire
il tipo di database, le varianti e il numero di run.
Consulta anche la Costruzione della geometria per maggiori informazioni.
Esecuzione di GEMC
Il file b2.yaml può essere utilizzato per eseguire la configurazione.
Aggiungi -gui per eseguire in modalità interattiva:
gemc b2.yaml -gui
Modifica b2.yaml secondo necessità, in particolare per aggiungere particelle,
controllare il numero di thread o cambiare l’output.
Esecuzione degli eventi
Output
L’opzione gstreamer seleziona i nomi dei file di output e il formato:
gstreamer:
- format: csv
filename: b2
Poiché flux è una digitizzazione per evento, GEMC produrrà un file di output per ciascun thread.
Per i file ROOT, puoi usare hadd per unire i file.
Consulta anche la Documentazione dell’output per maggiori informazioni.
Creazione di grafici con GEMC Analyzer
Esegui prima GEMC con 1.000 eventi. Il file YAML predefinito scrive i flussi CSV dell’analizzatore.
gemc b2.yaml -n=1000
Traccia l’energia totale depositata per hit:
gemc-analyzer b2_t0_digitized.csv totEdep --kind csv

Traccia l’energia vera della traccia della particella:
gemc-analyzer b2_t0_true_info.csv E --kind csv --data true_info

Traccia il residuo dell’angolo polare del protone:
L’opzione save_original_track: true in b2.yaml salva otid e le componenti originali dell’impulso opx,
opy e opz nell’output delle informazioni vere. L’analizzatore usa le direzioni dell’impulso originale e
corrente per calcolare 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
