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:

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 example

gemc -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.

Scintillator barrel viewed end-on along the beam axis. Three protons at θ = 90° travel radially outward, each depositing energy in one paddle.


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

scintillator_barrel: energia totale depositata per hit

Traccia il grafico dell’energia vera della traccia della particella:

gemc-analyzer barrel_t0_true_info.csv E --kind csv --data true_info

scintillator_barrel: energia vera della traccia della particella