Barile di scintillatori
Questo esempio costruisce un rivelatore cilindrico a barile composto da 48 barre di scintillatore
trapezoidali disposte in un anello completo. Illustra l’API distribute_on_circle per replicare un
volume a intervalli angolari uniformi lungo una circonferenza e mostra come dimensionare le barre affinché
le facce adiacenti siano quasi contigue.
Puoi eseguire questo esempio nel browser:
Avvio rapido
Copia l’esempio nella directory corrente. Per creare la geometria ed eseguire 3 eventi:
cp -r $GEMC_HOME/examples/basic/scintillator_barrel .
cd scintillator_barrel
./scintillator_barrel.py
gemc scintillator_barrel.yaml
Geometria
La geometria è definita in scintillator_barrel.py. Il volume mondo (una scatola chiamata root) contiene
48 volumi paddle identici disposti in un anello:
- Ogni paddle è un trapezoide generale
G4Trap(G4_PLASTIC_SC_VINYLTOLUENE) con la faccia più larga rivolta radialmente verso l’esterno e quella più stretta verso l’asse del fascio. - Le barre sono dimensionate con la formula della corda affinché le facce esterne adiacenti siano contigue:
- semilarghezza esterna:
pX = (radius + pY) × sin(π/n) - semilarghezza interna:
pLTX = (radius − pY) × sin(π/n)
- semilarghezza esterna:
distribute_on_circle(n=48, radius=400 mm, align=True, axis='z')posiziona e ruota ogni copia attorno all’asse z a intervalli uniformi di 7,5°.
Consulta la documentazione Funzioni di supporto per le strutture
per il riferimento completo dell’API distribute_on_circle e la geometria usata per il dimensionamento.
Visualizzatore interattivo (barile completo con 48 barre):
Lista di fisica
QBBC è usata per impostazione predefinita ed è selezionata nel file YAML con 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 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: 500*MeV
theta: 90*deg
delta_phi: 360*deg
multiplicity: 3
Consulta anche la Documentazione del generatore interno per maggiori informazioni.
Digitizzazione
A ogni paddle è assegnata la digitizzazione flux con un identificatore univoco della barra:
paddle.digitization = "flux"
# ...
v.set_identifier("paddle", i)
Consulta la Documentazione di Flux per maggiori informazioni.
L’API distribute_on_circle
Il metodo distribute_on_circle di GVolume replica il volume modello n volte
lungo una circonferenza di raggio radius. Con align=True, ogni copia viene inoltre ruotata
attorno all’asse scelto di un angolo pari alla sua posizione angolare φᵢ, mantenendo il sistema di riferimento
locale di ogni barra allineato radialmente:
for i, v in enumerate(paddle.distribute_on_circle(n, radius, align=True, axis='z')):
v.set_identifier("paddle", i)
v.publish(cfg)
Il metodo restituisce una lista di copie indipendenti di GVolume, una per ogni passo angolare, ciascuna chiamata
<name>_i e posizionata in (radius·cos φᵢ, radius·sin φᵢ, 0).
Il riferimento completo dell’API è nella documentazione
Funzioni di supporto per le strutture.
Utilizzo
Costruzione del rivelatore
Usa lo script Python scintillator_barrel.py per costruire il rivelatore. Per impostazione predefinita,
la configurazione è memorizzata in un file SQLite chiamato gemc.db. Le opzioni da riga di comando permettono
di definire il tipo di database, le varianti e il numero di run.
Consulta anche Costruzione della geometria per maggiori informazioni.
Esecuzione di GEMC
Il file scintillator_barrel.yaml esegue la simulazione. Aggiungi -gui per eseguirla in modo interattivo:
gemc scintillator_barrel.yaml -gui
Modifica scintillator_barrel.yaml secondo necessità, in particolare per cambiare il numero di eventi,
aggiungere thread o selezionare i formati di output.
Esecuzione degli eventi
La vista qui sotto mostra il barile lungo il suo asse dopo un evento, con 3 protoni emessi radialmente verso l’esterno a θ = 90°. Ogni protone attraversa una barra di scintillatore.
Output
L’opzione gstreamer seleziona i nomi dei file di output e il formato:
gstreamer:
- format: csv
filename: barrel
Consulta anche la Documentazione dell’output per maggiori informazioni.
Grafici con l’analizzatore GEMC
Esegui prima GEMC con 1.000 eventi. Il file YAML predefinito scrive i flussi CSV per l’analizzatore.
gemc scintillator_barrel.yaml -n=1000
Traccia il grafico dell’energia totale depositata per hit:
gemc-analyzer barrel_t0_digitized.csv totEdep --kind csv

Traccia il grafico dell’energia vera della traccia della particella:
gemc-analyzer barrel_t0_true_info.csv E --kind csv --data true_info
