Tutorial Rápido de GATE y ROOT en el ambiente de la GRID de

Anuncio
Tutorial Rápido de GATE y ROOT en el ambiente de
la GRID de GISELA.
Por
Fernando Andrés Quiñonez Granados
Tutorial rápido con ejemplos del programa de las ciencias de la vida GATE y de la
plataforma de análisis de datos ROOT, usandose en el entorno visual del portal de
ciencia de GISELA.
Marzo, 2012.
BUCARAMANGA - COLOMBIA.
1
Para mi esposa Adriana Godoy.
2
Índice general
1
MÓDULO 1
6
1.1
Registrarse en el portal . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.2
Ingresando al portal
1.3
Reconociendo el entorno del portal de ciencia
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
GISELA/GATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.1
1.4
2
3
My Workspace )
Mi Espacio de Trabajo (
Enviando trabajos a la GRID
11
14
. . . . . . . . . . . . .
14
. . . . . . . . . . . . . . . . . . . . . . .
16
MÓDULO 2
17
2.1
Procesos Físicos en GATE/GEANT4
. . . . . . . . . . . . . . . . . . .
17
2.2
El código Demo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.3
La base de datos de materiales de GATE
. . . . . . .
26
2.4
Sistemas PET en GATE
. . . . . . . . . . . . . . . . . . . . . . . . . .
41
GateMaterials.db
2.4.1
Sistema CylindricalPET
. . . . . . . . . . . . . . . . . . . . . .
41
2.4.2
Sistema ecat . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
2.5
Sistemas SPECT en GATE
. . . . . . . . . . . . . . . . . . . . . . . .
2.6
Radioterapia y Dosimetría en GATE
. . . . . . . . . . . . . . . . . . .
MÓDULO 3
3.1
Tipos de códigos en ROOT
3.1.1
3.2
70
81
85
. . . . . . . . . . . . . . . . . . . . . . . .
85
Códigos tipo CINT . . . . . . . . . . . . . . . . . . . . . . . . .
85
ROOT ejemplo por ejemplo
. . . . . . . . . . . . . . . . . . . . . . . .
87
3.2.1
Análisis del archivo ROOT proveniente del código DEMO
. . .
89
3.2.2
Histogramas . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
91
Bibliografía
92
3
Índice de cuadros
4
Índice de guras
1.1
Página web de GATE.
. . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2
Ingreso de información de cuenta de GATE.
. . . . . . . . . . . . . . .
8
1.3
Selección de GRID. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.4
Vericación de texto y click en enviar.
1.5
Ingreso al portal de GATE.
. . . . . . . . . . . . . . . . . . . . . . . .
11
1.6
Escojencia de la federación y de la organización. . . . . . . . . . . . . .
12
1.7
A tan solo un click. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.8
Adentro del portal de GATE de GISELA.
1.9
Dando click en
MyJobs. .
. . . . . . . . . . . . . . . . . .
7
10
. . . . . . . . . . . . . . . .
14
. . . . . . . . . . . . . . . . . . . . . . . . . .
15
1.10 Viendo en que lugar del mundo andan corriendo nuestros trabajos. Actualmente hay un trabajo corriendo en Rio de Janeiro, y lo podemos
observar en el mapa con un punto azul. . . . . . . . . . . . . . . . . . .
2.1
Geometría del detector CylindricalPET presente en el código PET_CylindricalPET_System.ma
La echa indica que un volumen apunta a la volumen hija.
2.2
16
. . . . . . .
47
Geometría del detector ecat presente en PET_Ecat_System.mac. La
echa indica que un volumen apunta a la volumen hija
. . . . . . . . .
57
2.3
Michelograma para un sistema escaner de 16 anillo-cristales . . . . . . .
64
2.4
Geometría del detector SPECThead. La echa indica que un volumen
3.1
apunta a la volumen hija . . . . . . . . . . . . . . . . . . . . . . . . . .
70
Histograma generado en el código anterior. . . . . . . . . . . . . . . . .
91
5
Capítulo 1
MÓDULO 1
GATE es un software avanzado de fuente abierta desarrollado por la colaboración internacional OpenGATE y es dedicado a simulaciones numericas de imágenes médicas y
radioterapia. Actualmente (2012) soporta simulaciones de Tomografía de Emisión PET
y SPECT, y experimentos de radioterapia. Siendo PET la sigla en inglés para Positron
Emission Tomography (Tomografía de Emisión de Positrón) y SPECT la sigla en ingles para Single Photon Emission Computed Tomography (Tomografía Computada de
Emisión de Fotón Simple). GATE juega un rol importante en el diseño de nuevos diseños
de dispositivos de imagenes médicas, en la optimización de protocolos de adquisición y
en el desarrollo y valoración de algoritmos de reconstrucción de imágenes y técnicas de
corrección. GATE también puede ser utilizado para cálculos de dosis en experimentos
de radioterapia. GISELA Grid Initiatives for e-Science virtual communities in Europe
and America Latina (Iniciativas de GRID para comunidades virtuales de e-Ciencia en
Europa y America Latina) nos ofrece los Portales de Ciencia SG Science Gateways
para acceder a los computadores conectados en GRID para correr aplicaciones de Ciencias de la Vida, la Industria, Matematicas y Físicas.
En este tutorial aprenderemos a usar los portales de ciencia Science Gateways de
GISELA para enviar proyectos robustos de GATE a la GRID. Este tutorial es lo mas
autocontenido posible, pero no trata de ser un tratado completo sobre todas las posibles
formas de usar GATE y ROOT. El release de GATE de los ejemplos de este manual es
GATE 6.0.0.
6
1.1.
Registrarse en el portal
Primeramente ingresamos a la página web de GATE en GISELA. Abrimos nuestro
navegador preferido e ingresamos a la siguiente dirección
https://gisela-gw.ct.infn.it/gate
Figura 1.1: Página web de GATE.
Lo primero que haremos será registrarnos en el portal, para ello damos click en la
esquina superior derecha, en el link que dice
1.1.
7
Register, tal como se muestra en la gura
Inmediatamente se abrirá la siguiente página e ingresamos la información correspon-
Figura 1.2: Ingreso de información de cuenta de GATE.
diente, por ejemplo, Nombres, apellidos, correo electrónico, nombre de la universidad
en donde se estudia o se labora, etc. etc. Cabe recordar que es de carácter obligatorio
llenar las cajas con asterisco.
8
En la caja
Identity federations
escojemos GRIDP (CATCH ALL) tal cual como
se muestra en la gura 1.3.
Figura 1.3: Selección de GRID.
9
Finalmente llenamos la caja de
Text verication
con los mismos carácteres alfanu-
mericos que aparecen encima de la caja. Le damos click en
send
y listo. Ver gura 1.4.
Después de esto esperaremos a que el administrador del sistema del portal GATE de
Figura 1.4: Vericación de texto y click en enviar.
GISELA nos envíe dos correos electrónicos. Uno de conrmación, y el otro con la cuenta
de usuario y la contraseña.
10
1.2.
Ingresando al portal
Para ingresar al portal nuevamente abrimos la página web
https://gisela-gw.ct.infn.it/gate
y esta vez damos click en
sign in
tal como se muestra en la gura 1.5
Figura 1.5: Ingreso al portal de GATE.
11
Federation escojemos GrIDP
IDPCT (INFN Catania and COMETA), tal
como se muestra en la gura 1.6, damos click en Select y listo.
luego en la siguiente página que se abre escojemos en
(catch-all)
y en
Organization
escojemos
Figura 1.6: Escojencia de la federación y de la organización.
12
Ahora nos aparecerá una página en donde ingresaremos nuestro usuario y contraseña, damos click en
login
y listo. Ver gura 1.8.
Figura 1.7: A tan solo un click.
13
Una vez dentro de GATE, veremos en la parte superior de la página una barra gris
con nuestro nombre al lado derecho.
Figura 1.8: Adentro del portal de GATE de GISELA.
1.3.
Reconociendo el entorno del portal de ciencia
GISELA/GATE
Una vez estando adentro de GATE como se muestra en la gura 1.8, el usuario
Science Gateways una lista
empezando por Home, y seguido de las categorías de los portales de ciencias Life Science,
Industry, y Mathematics. En la parte más abajo de la misma columna está el link de
historias exitosas Success Stories. En este instante nosotros estamos en la categoría de
Life Science, y como podemos ver, en la subcategoría de GATE.
podrá ver en la columna de la izquierda bajo el título de
1.3.1.
My Workspace )
Mi Espacio de Trabajo (
Siguiendo en la misma página web podemos ver al lado inferior izquierdo un recuadro
My Workspace, ahí veremos 4 links que son: My jobs, My JobsMap, MyData, y MyHelp. Si damos click en MyJobs como se muestra en la gura 1.9 nos enviará
con el título de
a una página en donde podemos ver nuestros trabajos ordenados en dos listas, una lista
14
Figura 1.9: Dando click en
de trabajos activos
MyJobs.
Active Jobs List, y otra de trabajos hechos Done Jobs List. Por
Active Jobs List. Si queremos cambiar de lista de trabajos, solo
pestaña correspondiente. En My Workspace también podemos ac-
defecto entraremos a
daremos click en la
ceder a
MyJobsMap, en donde podemos ver el mapa en google maps del sitio del planeta
en donde esta o estan corriendo nuestros trabajos. Por ejemplo, actualmente podemos
ver en la gura 1.10 que tengo un trabajo corriendo en una de las máquinas ubicadas
My Workspace también podemos acceder
MyHelp, páginas que actualmente estan bajo construcción. Actualmente
en Rio de Janeiro Brasil. Finalmente, desde
a
MyData
y a
para poder ver nuestros datos resultantes de las simulaciones y análisis, tenemos que
descargar nuestros datos desde el link
MyJobs, Active Jobs List, dando click en status.
Hay que tener cuidado con los datos que descarguemos desde el portal, porque una vez
descargado una sola vez, entonces los datos serán borrados de la GRID.
15
Figura 1.10: Viendo en que lugar del mundo andan corriendo nuestros trabajos. Actualmente hay un trabajo corriendo en Rio de Janeiro, y lo podemos observar en el mapa
con un punto azul.
1.4.
Enviando traba jos a la GRID
Para enviar trabajos a la GRID de GISELA, iremos a la página web
https://gisela-gw.ct.infn.it/run-gate
una vez allí observaremos tres cajas requiriendo tres tipos de códigos, uno es de tipo
.mac, el otro de tipo GATE Material Database con
extensión .db, y el tercero que es de tipo ROOT con extensi« .C. En la parte de abajo
GATE Macro File y tiene extensión
de la página encontraremos varios botones, que son:
About. Si uno da click en el botón Demo
Demo, Submit, Reset Values,
y
se llenarán todos los campos de los tres tipos
Reset Values,
botón Submit se
de códigos con un trabajo demostrativo de GATE. Si damos click en
dejaremos en blanco las tres cajas que contienen al código
Demo.
El
usa para enviar nuestros códigos a la GRID. Para probar este botón, daremos click en
Demo y luego en Submit. Una vez enviado, podremos ver el estatus de nuestro trabajo
My Workspace, click en MyJobs, click en Active Jobs List. Cuando el trabajo haya
en
nalizado se podrán bajar los datos resultantes.
16
Capítulo 2
MÓDULO 2
En este módulo veremos las partes más importantes presentes en un código de
GATE, mediante el análisis de varios códigos. El primer código que analizaremos será
el código Demo, luego analizaremos otro ejemplo.
Debido a que GATE es basado en GEANT4, todos los aspectos referentes a la geometría
de los sistemas detectores, los procesos físicos involucrados en las interacciones de las
partículas, y la generación de los eventos primarios, pueden ser leidos desde el manual
de GEANT4 presente en [1], y más especicamente en el apartado que trata sobre el
modo
intercoms.
2.1.
Procesos Físicos en GATE/GEANT4
PhotoElectric, (Fotoeléctrico):
es la absorción de un fotón por un electrón
atómico con la eyección de este electrón desde el átomo. La energía del electrón saliente
es:
E = hν − L
donde
L
(2.1)
en la energía de enlace del electrón. Debido a que un electrón libre no puede
absorber un fotón y conservar momentum, el efecto fotoeléctrico siempre ocurre sobre
electrones ligados al mismo tiempo que el núcleo absorbe el culetazo de momentum.
El cálculo de la sección ecáz es compleja debido a la combinación de funciones de
ondas de Dirac, por eso es simulada usando una absorción del fotón parametrizada para
determinar varias cantidades, entre ellas el camino libre medio o longitud de interacción,
dada por
λ(E) = P
i
con
ni
σ(Zi , E)
siendo la sección ecáz y
Zi
1
,
ni σ(Zi , E)
(2.2)
el número de átómico del átomo i-ésimo, y
el número de átomos de tipo i. Y también para determinar los datos de las cáscaras
atómicas para determinar la energía del electrón eyectado, y la distribución angular de
cáscara K para muestrear la dirección del electrón. La sección ecáz depende del número
atómico
Z
del material. El efecto fotoeléctrico tiende a aumentar para materiales de
17
Z
grande. En la implementación actual la relajación del átomo no es simulada, en lugar
de eso, se toma como un depósito de energía local. Para procesos de baja energía, la
des-excitación del átomo es simulada.
Compton, (Efecto Compton)
El efecto Compton describe el dispersión de un fotón con electrones libres. Aunque los
electrones son ligados a la matería, los electrones pueden ser considerados libres por
fotones con energía mucho mayor a la energía de enlace de los electrones ligados. En la
simulación se usa un formula empírica para la sección ecaz, la cual reproduce la sección
ecaz de los datos que esten por debajo de 10 keV. El estado nal es generado mediante
la formula de Klein-Nishina. Para fotones incidentes de bajas energías, la simulación
de la dispersión de Compton es realizada usando el mismo procedimiento usado para
la simulación de la dispersión de Compton estándar además de que el factor de forma
atómico de Hubbel es tenido en cuenta. La distribución de energía y la ángular del fotón
incoherentemente dispersado viene dado por el producto de la formula de Klein-Nishina
y la función de dispersión.
Rayleigh Scattering, (Dispersión de Rayleigh)
La dispersión de Thomson y de
Rayleigh estan ligadas a la dispersión de Compton. La dispersión de Thomson es similar a la dispersión de Compton en el límite clásico i.e. la dispersión de los fotones por
electrones libres. Para la dispersión de Rayleigh, todos los electrones del átomo contribuyen de manera coherente. Para estos procesos, no se transere energía al blanco.
La dirección del fotón es el único parámetro modicado. Los átomos no son excitados
ni ionizados. A altas energías las secciones ecaces de las dispersiones de Thomson y
de Rayleigh son muy pequeñas y por ende despreciadas. Por estas razones, el proceso
Rayleigh es denido solamente para modelos low energy
1
2
y Penelope .
Pair Production, (Producción de Pares)
El proceso de producción de pares describe la transformación de un fotón en un par
electrón-positrón. Para conservar momentum, la producción de pares solo puede ocurrrir
en presencia de un tercer cuerpo, usualmente un núcleo. La mínima energía requerida
para crear un par es igual a la suma de la masa del electrón y la masa del positrón
(1.022 MeV).
Ionisation, (Ionización)
Una partícula cargada que pasa a trávez de la materia pierde energía debido a la colisión
inelástica con los electrones atómicos del material. Esta energía es transferida al átomo
para generar ionización o excitación. La perdida de energía de ionización es calculada
usando la formula de Bethe-Bloch. La energía perdida por la partícula
E
es dividida
en perdida de energía continua y producción de electrones secundarios. El umbral de
1 Energías
2 Energías
entre 250 eV y 100 GeV
entre 250 eV y 1 GeV
18
producción es denido como la mínima energía necesaria para que las partículas secundarias sean producidas y trazadas. Cuando
energía continua, y cuando
E>E
umbral
E<E
umbral
,
E
es incluida en la perdida de
se producirán electrones secundarios. Perdida
de energía proveniente de la excitación será incluida en la perdida de ebergía continua.
El potencial de excitación promedio
I
es el parámetro principal de la formula de Bethe-
Bloch. Este potencial puede ser denido por el usuario para cada material.
Bremsstrahlung
Bremsstrahlung es una palabra compuesta que viene del alemán cuyas partes Brems
y Strahlung signican frenado y radiación respectivamente. Más precisamente bremsstrahlung es radiación electromagnética por frenado de una partícula cargada. Generalmente un núcleo es el causante de este frenado. La sección ecaz de bremsstrahlung es
inversamente proporcional al cuadrado de la masa. Por lo tanto este proceso es bastante importante para electrones y postitrones que tienen masa pequeña. Si la energía
perdida por bremsstrahlung
E
está por encima de un umbral, se simula que
E
causa la
producción de fotones. Debajo del umbral, la emisión de fotones suaves es tratada como
una perdida continua de energía. El espectro de energía del bresstrahlung es continuo.
Positron and Electron Annihilation, (Aniquilación de Positrón y Electrón)
Es el proceso en donde un electrón y un positrón se aniquilan y producen fotones.
Usualmente se asume en programas de duchas (showers) que el electrón atómico esta
inicialmente libre y en reposo y que luego es atado al positrón. Además se desprecian
procesos en donde la aniquilación del par produce uno o tres fotones, debido a que la
probabilidad de que se produzcan dos fotones es mucho mas elevada.
Single and Multiple Scattering, (Dispersión Simple y Multiple)
Las partículas cargadas además de presentar dispersión inelástica, también pueden sufrir
dispersiones de Coulomb desde los nucleos. Las secciones ecaces elásticas es enorme
cuando la energía de la partícula decrece, asi que dispersión multiple MSC debería ser
introducida para tener rendimiento de CPU de la simulación aceptable. El modelo MSC
usado en GEANT4 pertenece a la clase de algoritmos condensados en los cuales, los
efectos globales de las colisiones son simuladas al nal de un segmento de traza (paso).
Los efectos globales generalmente computados en estos códigos son el desplazamiento
neto, la perdida de energía, y el cambio de dirección de la partícula cargada. El modelo
es basado en la teoría MSC de Lewis y usa funciones del modelo para determinar las
distribuciones angular y espacial después de un paso. Las funciones han sido escogidas
tal que den los mismos momentos de las distribuciones como en la teoría de Lewis.
2.2.
El código Demo
Echemos un vistazo en el código Demo, más precisamente el código
macro_file.mac
que es en donde se encuentra el esqueleto principal de la simulación
19
Computed Tomographs ).
de los CTs (
GATE con extensión
.mac
Lo primero que debemos saber de los códigos de
es que, si al principio de una linea encontramos el caracter
# signica que esa linea es un comentario, i.e., que el computador no va a ejecutar
esta linea. Así que las lineas 1-3, 7-9, 35-37, 53-55, 58, 61-63, 65, 67, 69, 78, 81, 86,
104, y 106, no van a ser ejecutadas por el computador. Las líneas en blanco tampoco son ejecutadas por el computador. Los comentarios sirven como guias para el
programador. La usanza es que hacemos un comentario sobre el tema del código que
viene a continuación, ó, alguna explicación explicita de lo que esta haciedo la línea
siguiente. Podemos ver en las líneas 4-6 del código
puso ningún tipo de código de
Visualisation.
macro_file.mac
que el autor no
Desde las líneas 11 a la 51 todo lo que
está puesto allí es de carácter obligatorio en un código GATE (Característica heredada de GEANT4). Para ser mas claros, en todo código GATE debemos especicar la
geometría del detector, los procesos físicos involucrados en la simulación, y la conguración inicial de los eventos generados. La línea 11 del código llama a la base de datos
de materiales de GATE, que veremos con detalle más adelante. Más precisamente la
linea dice:
/gate/geometry/setMaterialDatabase GateMaterials.db,
que incluiremos el archivo
de
gate.
GateMaterials.db
que signica
a la base da datos de la categoría
La mayoría de comandos en GATE comienzan con el prejo
geometry
/gate/.
Las ge-
ometrías en GATE son hechas a partir de un conjunto de volúmenes. El volúmen mas
grande es el llamado volúmen Mundo que en inglés es
World.
El debe contener todos
los demás volúmenes de la geometría del detector. Los demás volúmenes son creados y
World. La forma
World, es una caja. Cada volúmen es creado describiendo su
puestos dentro de volúmenes previos, todos incluidos en el volúmen
más simple de describir el
forma y sus características físicas y colocandolos dentro de su volúmen contenedor. Al
volúmen contenedor se le llamará la madre y el volúmen contenido se llamará la hija
que en inglés es
Daughter.
El sistema coordenado para especicar en donde la hija irá
colocada, es el sistema coordenado de la madre. Para describir la forma de un volúmen,
usaremos el concepto de sólido. Un sólido es un objeto geométrico que tiene una forma
y valores especícos para cada una de las dimensiones de la forma. Para describir completamente un volúmen usaremos el concepto de volúmen lógico. Un volúmen lógico
incluye tanto propiedades geométricas, como propiedades físicas, como por ejemplo: el
material del volúmen, si el contiene elementos sensibles de detección, el campo magnético, etc. En ese sentido la línea 11 le da a GATE toda una base de datos de deniciones
de materiales para ayudar a crear volúmenes lógicos.
En el código
macro_file.mac
el mundo es un sólido tipo paralelepipedo (caja) con
dimensiones dadas por las líneas 14-16. El comando de la línea 14
/gate/world/geometry/setXlength 200 cm
crea los limites en el eje
cm hasta
x = 200
x
de la caja del mundo, los limites irán desde
cm, siendo la longitud total en
x
x = −200
del mundo de 400 cm. La misma
discusión queda igual para los comandos en y , y z de las líneas 15 y 16. Al nal tenemos
3
3
que el volumen del mundo es de 2 · 200 · 300 · 200 cm . La línea 17
/gate/world/setMaterial Vacuum
20
nos dice que el mundo esta relleno del material llamado Vacío, en inglés
Vacuum.
Con
esto ya tenemos creado el volúmen lógico del mundo de nuestra simulación. En las líneas
19 y 20
/gate/world/daughters/name target /gate/world/daughters/insert box
se le da un nombre a una hija de del mundo de la simulación, esta hija se llama target.
También se especica el tipo de sólido que és esta hija. La línea que inserta la caja
(línea 20) debe ir inmediatamente después de la línea que especica el nombre de la
hija (línea 19). La línea 21 especica el que target esta hecha de aluminio. Las líneas
22-24 especican las medidas de target. En la línea 25
/gate/target/placement/setTranslation 0 0 0 mm
se le dice a GATE en donde colocar a target dentro de mundo, en este caso el centro
de target coincide con el centro de world. También podría decirle a GATE que ubique
el centro de target en otra posición distinta al centro de world, digamos en la posición
x=5
mm,
y = −1
mm, y
z=1
mm. Entonces el comando sería
/gate/target/placement/setTranslation 5 -1 1 mm.
Ademas de trasladar a target dentro de world, también podemos rotarlo. Esta caracteristica la veremos más adelante.
En las líneas 27-33 se crea otra hija llamada PhSp, la cual es una caja hecha de vacio.
Sus longitudes estan especicadas en las líneas 30,31, y 32; y el centro de PhSp esta en
(0,-0.11,0)cm.
Las líneas 39-41
/gate/physics/addProcess PhotoElectric
/gate/physics/addProcess Compton
/gate/physics/addProcess GammaConversion
adicionan los procesos físicos que sufren los fotones a la lista de procesos, mientras que
las líneas 43-45
/gate/physics/addProcess ElectronIonisation
/gate/physics/addProcess Bremsstralung
/gate/physics/addProcess PositronAnnihilationStd
y 47-48
/gate/physics/addProcess MultipleScattering e+
/gate/physics/addProcess MultipleScattering eadicionan los procesos físicos que afectan a los electrones y a sus antipartículas los
positrones, a la lista de procesos. La línea 50 habilita la lista de procesos, mientras que
la línea 51 la inicializa.
21
La línea 70 adiciona el actor PhS_g, el cual es un actor de tipo PhaseSpaceActor.
Los actores son herramientas que permiten interactuar con la simulación. Ellos pueden
coleccionar información durante la simulación, tal como la energía depositada, el número
de partículas creadas en un volumen dado, etc. Ellos también pueden modicar el
comportamiento de la simulación. Los actores usan ganchos en la simulación: run (begin/end), event(begin/end), track(begin/end), step. Hay diferentes tipos de actores que
coleccionan diferentes tipos de información, sin embargo algunos comandos y comportamientos son comunes a todos los actores. Para usar el criterio de selección, también
es posible adicionar ltros. La línea 71 amarra PhS_g a la hija PhSp; sino se amarrara
especicamente a ningún volumen, entonces por defecto se hubiera amarrado a todos
los volumenes presentes en la simulación. El actor PhS_g salva la información en el
archivo de salida phsp.root. También es posible salvar la información con alguno de los
siguientes comandos:
/gate/actor/PhS_g/saveEveryNEvents [N]
/gate/actor/PhS_g/saveEveryNSeconds [N]
siendo [N] un número dado por el usuario. Las líneas 73-77 permiten grabar en el archivo de salida phsp.root, el nombre de la partícula, el nombre del volumen en donde la
partícula fue producida, el proceso que produjo la partícula, usa el marco de referencia
del volumen al que fue amarrado el actor en lugar del mundo, y la posición en
Z.
La línea 83 deshabilita la creación del archivo de salida en formato .dat.
La lína 84 inicializa los 4 pasos del modo de pre-inicialización. Los 4 pasos de preinicialización son:
1. Verborrea y Visualisación.
2. Geometría.
3. Digitalizador.
4. Física.
Toda simulación en GATE consta de los pasos anteriores mas los siguientes:
5. Fuentes.
6. Salidas.
7. Experimento.
En este código vemos que se hizo el paso de las Salidas antes de llamar al comando de
la línea 84. Esto no afecta en absoluto el buen comportamiento del código. Los 7 pasos
anteriormente descritos pueden ser leídos en [2].
22
Las líneas 89-102
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/gate/source/addSource electron_beam gps
/gate/source/electron_beam/gps/particle e/gate/source/electron_beam/gps/ene/mono 6.0 MeV
/gate/source/electron_beam/gps/angtype iso
/gate/source/electron_beam/gps/posrot1 1 0 0
/gate/source/electron_beam/gps/posrot2 0 0 1
/gate/source/electron_beam/gps/mintheta 0 deg
/gate/source/electron_beam/gps/maxtheta 0 deg
/gate/source/electron_beam/gps/minphi 90 deg
/gate/source/electron_beam/gps/maxphi 90 deg
/gate/source/electron_beam/gps/type Plane
/gate/source/electron_beam/gps/shape Circle
/gate/source/electron_beam/gps/radius 1.0 cm
/gate/source/electron_beam/gps/centre 0 10 0 cm
realizan el paso de las Fuentes. En 89 se adiciona una fuente llamada electron_beam
de tipo gps (General Particle Source). En la línea 90 establece que la fuente es de tipo
partícula y que emite electrones. La línea 91 dice que la energía de los electrones es
monoenergética y es igual a 6 Mega electrón Voltios. La línea 92 que la distribución
angular de los ángulos de emisión es istrópica. Las líneas 93 y 94 dice que la supercie incidente está en el plano
xz .
Las líneas 95 y 96 nos dan un rango para el ángulo
de dirección de los electrones incidentes, en este caso jados a
θ
es el ángulo polar de coordenadas esféricas, El ángulo
θ
θ = 0.
Debido a que
puede variar entre 0 y 180
grados. Las líneas 97 y 98 nos dan un rango para el ángulo azimutal, en este caso es
igual a 90 grados. El ángulo azimutal generalmente puede variar entre 0 y 360 grados.
Esto es importante tenerlo en cuenta, en ROOT, el ángulo azimutal varía entre -180
y 180. De las líneas 95-98 podemos concluir que las partículas se dirigen en dirección
(x = 0, y = 0, z = |r|).
Las líneas 99-102 nos dan el tipo, la forma y las dimensiones de
la forma desde donde los electrones son emitidos, en este caso la fuente de electrones es
un plano circular de radio de 1 cm y centro (0,10,0) cm.
Las líneas 108 y 109 establecen el nombre de la máquina (algoritmo) generadora de
números aleatorios, y le da un valor a la semilla.
Las líneas 112 y 113 establecen la verborrea de la salida estándar [3] de la parte que
trata con la generación de números aleatorios a activa, y la que trata con las fuentes
a inactiva. La línea 116 establece el número de eventos a 1200. Esto puede ser hecho
debido a que las fuentes no son radioactivas. La línea 118 comienza la simulación.
1 ###################
2 # Visualisation #
3 ###################
4
23
5
6
7 #####################
8 # Mandatory fGate #
9 #####################
10
11 / g a t e / geometry / s e t M a t e r i a l D a t a b a s e G a t e M a t e r i a l s . db
12
13
14 / g a t e / world / geometry / setXLength 200 cm
15 / g a t e / world / geometry / setYLength 300 cm
16 / g a t e / world / geometry / s etZL ength 200 cm
17 / g a t e / world / s e t M a t e r i a l Vacuum
18
19 / g a t e / world / d a u g h t e r s /name t a r g e t
20 / g a t e / world / d a u g h t e r s / i n s e r t box
21 / g a t e / t a r g e t / s e t M a t e r i a l Aluminium
22 / g a t e / t a r g e t / geometry / setXLength 5 cm
23 / g a t e / t a r g e t / geometry / setYLength 0 . 1 cm
24 / g a t e / t a r g e t / geometry / setZ Lengt h 5 cm
25 / g a t e / t a r g e t / placement / s e t T r a n s l a t i o n 0 0 0 mm
26
27 / g a t e / world / d a u g h t e r s /name PhSp
28 / g a t e / world / d a u g h t e r s / i n s e r t box
29 / g a t e /PhSp/ s e t M a t e r i a l Vacuum
30 / g a t e /PhSp/ geometry / setXLength 10 cm
31 / g a t e /PhSp/ geometry / setYLength 1 nm
32 / g a t e /PhSp/ geometry / setZ Lengt h 10 cm
33 / g a t e /PhSp/ placement / s e t T r a n s l a t i o n 0 − 0.11 0 cm
34
35 #############
36 # P h y s i c s #
37 #############
38
39 / g a t e / p h y s i c s / a d d P r o c e s s P h o t o E l e c t r i c
40 / g a t e / p h y s i c s / a d d P r o c e s s Compton
41 / g a t e / p h y s i c s / a d d P r o c e s s GammaConversion
42
43 / g a t e / p h y s i c s / a d d P r o c e s s E l e c t r o n I o n i s a t i o n
44 / g a t e / p h y s i c s / a d d P r o c e s s B r e m s s t r a h l u n g
45 / g a t e / p h y s i c s / a d d P r o c e s s P o s i t r o n A n n i h i l a t i o n S t d
46
47 / g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e+
48 / g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e−
49
50 / g a t e / p h y s i c s / p r o c e s s L i s t Enabled
51 / g a t e / p h y s i c s / p r o c e s s L i s t I n i t i a l i z e d
52
53 ##########
54 # Cuts #
55 ##########
56
24
57
58 #/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion phantom 0 . 0 1 0 mm
59
60
61 ##############
62 # Step Max #
63 ##############
64
65 #/ g a t e / p h y s i c s / SetMaxStepSizeInRegion phantom 0 . 0 1 0 mm
66
67 # ACTORS
68
69 #/ g a t e / output / allowNoOutput
70 / g a t e / a c t o r / addActor
PhaseSpaceActor PhS_g
71 / g a t e / a c t o r /PhS_g/ attachTo
PhSp
72 / g a t e / a c t o r /PhS_g/ s a v e
phsp . r o o t
73 / g a t e / a c t o r /PhS_g/ e n a b l e P a r t i c l e N a m e
true
74 / g a t e / a c t o r /PhS_g/ enableProductionVolume
true
75 / g a t e / a c t o r /PhS_g/ e n a b l e P r o d u c t i o n P r o c e s s
true
76 / g a t e / a c t o r /PhS_g/ useVolumeFrame
true
77 / g a t e / a c t o r /PhS_g/ e n a b l e Z P o s i t i o n
true
78 #/ g a t e / a c t o r /PhS_g/ saveEveryNSeconds
120
79
80
81 # INITIALIZE
82
83 / g a t e / output / a s c i i / d i s a b l e
84 / g a t e / run / i n i t i a l i z e
85
86 # SOURCE
87
88
89 / g a t e / s o u r c e / addSource electron_beam gps
90 / g a t e / s o u r c e / electron_beam / gps / p a r t i c l e e−
91 / g a t e / s o u r c e / electron_beam / gps / ene /mono 6 . 0 MeV
92 / g a t e / s o u r c e / electron_beam / gps / angtype i s o
93 / g a t e / s o u r c e / electron_beam / gps / p o s r o t 1 1 0 0
94 / g a t e / s o u r c e / electron_beam / gps / p o s r o t 2 0 0 1
95 / g a t e / s o u r c e / electron_beam / gps / mintheta 0 deg
96 / g a t e / s o u r c e / electron_beam / gps / maxtheta 0 deg
97 / g a t e / s o u r c e / electron_beam / gps / minphi 90 deg
98 / g a t e / s o u r c e / electron_beam / gps / maxphi 90 deg
99 / g a t e / s o u r c e / electron_beam / gps / type Plane
100 / g a t e / s o u r c e / electron_beam / gps / shape C i r c l e
101 / g a t e / s o u r c e / electron_beam / gps / r a d i u s 1 . 0 cm
102 / g a t e / s o u r c e / electron_beam / gps / c e n t r e 0 10 0 cm
103
104 #
R A N D OM
105
106 # JamesRandom Ranlux64 MersenneTwister
107
108 / g a t e /random/ setEngineName MersenneTwister
25
109
110
111
112
113
114
115
116
117
118
/ g a t e /random/ s e t E n g i n e S e e d 1988588
/ g a t e /random/ v e r b o s e 1
/ gate / source / verbose 0
/ g a t e / a p p l i c a t i o n / setTotalN umberOfP rimaries 1200
/ gate / a p p l i c a t i o n / s t a r t
2.3.
Gate-
La base de datos de materiales de GATE
Materials.db
Casi todos los códigos en GATE llaman al archivo GateMaterials.db el cual especica
las deniciones de algunos elementos químicos, algunos materiales de tipo biológico y
humano. Esta base de datos dene dos grandes grupos de objetos: desde la línea 1
hasta la 48 se denen los elementos químicos de la tabla periódica más frecuentemente
usados en las simulaciones de GATE. Desde la línea 49 hasta la línea 692 se denen
los materiales más usados en GATE. La sintaxis para denir un elemento químico es la
siguiente:
[nombre]: S=[Símbolo]; Z=[Número Atómico]; A=[Masa Atómica en g/mole] g/mole
Mientras que la sintaxis para denir un material en estado gaseoso es la siguiente:
3
[nombre]: d=[densidad en g/cm ] g/cm3;
n=[Nelementos ]
+el: name=[elemento químico 1];
n=[Nel.
quim. 1
]
n=[Nel.
quim. Nelementos
...
+el: name=[elemento químico Nelementos ];
]
. Si el material se encuentra en estado líquido o sólido se agrega un valor extra a la
primera línea. Por ejemplo para un material en estado sólido:
3
[nombre]: d=[densidad en g/cm ] g/cm3;
+el: name=[elemento químico 1];
n=[Nelementos ]; state=solid
n=[Nel.
quim. 1
]
n=[Nel.
quim. Nelementos
...
+el: name=[elemento químico Nelementos ];
]
. Un elemento químico también puede ser un material, por ejemplo ver las líneas 53 y
54 para la denición del Aluminium como un material.
Para nalizar esta discusión vale la pena decir que uno puede agregar nuevos tipos
de materiales a este archivo.
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[ Elements ]
Hydrogen :
Helium :
Lithium :
Beryllium :
Boron :
Carbon :
Nitrogen :
Oxygen :
Fluorine :
Neon :
Sodium :
Magnesium :
Aluminium :
Silicon :
Phosphor :
Sulfur :
Chlorine :
Argon :
Potassium :
Calcium :
Scandium :
Titanium :
Vandium :
Chromium :
Manganese :
Iron :
Cobalt :
Nickel :
Copper :
Zinc :
Gallium :
Germanium :
Yttrium :
Cadmium :
Tin :
Tellurium :
Iodine :
Cesium :
Gadolinium :
Lutetium :
Tantalum :
Tungsten :
Thallium :
Lead :
Bismuth :
Uranium :
S= H
S= He
S= Li
S= Be
S= B
S= C
S= N
S= O
S= F
S= Ne
S= Na
S= Mg
S= Al
S= S i
S= P
S= S
S= Cl
S= Ar
S= K
S= Ca
S= Sc
S= Ti
S= V
S= Cr
S= Mn
S= Fe
S= Co
S= Ni
S= Cu
S= Zn
S= Ga
S= Ge
S= Y
S= Cd
S= Sn
S= Te
S= I
S= Cs
S= Gd
S= Lu
S= Ta
S= W
S= Tl
S= Pb
S= Bi
S= U
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
Z=
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
39.
48.
50.
52.
53.
55.
64.
71.
73.
74.
81.
82.
83.
92.
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
A=
1.01
4.003
6.941
9.012
10.811
12.01
14.01
16.00
18.998
20.180
22.99
24.305
26.98
28.09
30.97
32.066
35.45
39.95
39.098
40.08
44.956
47.867
50.942
51.996
54.938
55.845
58.933
58.693
63.39
65.39
69.723
72.61
88.91
112.41
118.71
127.6
126.90
132.905
157.25
174.97
180.95
183.84
204.37
207.20
208.98
238.03
[ Materials ]
Vacuum : d =0.000001 mg/cm3 ; n=1
+e l : name=Hydrogen ; n=1
27
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g/ mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
g / mole
52
53 Aluminium : d=2.7 g /cm3 ; n=1 ; s t a t e=s o l i d
54
+e l : name=auto ; n=1
55
56 Copper : d=8.92 g /cm3 ; n=1 ; s t a t e=s o l i d
57
+e l : name=auto ; n=1
58
59 B e r y l l i u m : d=1.85 g /cm3 ; n=1 ; s t a t e=s o l i d
60
+e l : name=auto ; n=1
61
62 Uranium : d =18.90 g /cm3 ; n=1 ; s t a t e=s o l i d
63
+e l : name=auto ; n=1
64
65 S i l i c o n : d=2.33 g /cm3 ; n=1 ; s t a t e=s o l i d
66
+e l : name=auto ; n=1
67
68 Germanium : d=5.32 g /cm3 ; n=1 ; s t a t e=s o l i d
69
+e l : name=auto ; n=1
70
71 Yttrium : d=4.47 g /cm3 ; n=1
72
+e l : name=auto ; n=1
73
74 Gadolinium : d=7.9 g /cm3 ; n=1
75
+e l : name=auto ; n=1
76
77 Lutetium : d=9.84 g /cm3 ; n=1
78
+e l : name=auto ; n=1
79
80 Tantalum : d =16.65 g /cm3 ; n=1 ; s t a t e=s o l i d
81
+e l : name=auto ; n=1
82
83 Tungsten : d=19.3 g /cm3 ; n=1 ; s t a t e=s o l i d
84
+e l : name=auto ; n=1
85
86 Lead : d=11.4 g /cm3 ; n=1 ; s t a t e=s o l i d
87
+e l : name=auto ; n=1
88
89 Bismuth : d=9.75 g/cm3 ; n=1 ; s t a t e=s o l i d
90
+e l : name=auto ; n=1
91
92 NaI : d=3.67 g /cm3 ; n=2; s t a t e=s o l i d
93
+e l : name=Sodium ; n=1
94
+e l : name=I o d i n e ; n=1
95
96 PWO: d=8.28 g /cm3 ; n=3 ; s t a t e=S o l i d
97
+e l : name=Lead ; n=1
98
+e l : name=Tungsten ; n=1
99
+e l : name=Oxygen ; n=4
100
101 BGO: d=7.13 g /cm3 ; n= 3 ; s t a t e=s o l i d
102
+e l : name=Bismuth ; n=4
103
+e l : name=Germanium ; n=3
28
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
+e l : name=Oxygen ; n=12
LSO : d=7.4 g /cm3 ; n=3 ; s t a t e=S o l i d
+e l : name=Lutetium ; n=2
+e l : name=S i l i c o n ; n=1
+e l : name=Oxygen ; n=5
GSO: d=6.7 g /cm3 ; n=3 ; s t a t e=S o l i d
+e l : name=Gadolinium ; n=2
+e l : name=S i l i c o n ; n=1
+e l : name=Oxygen ; n=5
LuAP :
+e l
+e l
+e l
d=8.34 g /cm3 ; n=3 ; s t a t e=S o l i d
: name=Lutetium ; n=1
: name=Aluminium ; n=1
: name=Oxygen ; n=3
YAP: d=5.55 g /cm3 ; n=3 ; s t a t e=S o l i d
+e l : name=Yttrium ; n=1
+e l : name=Aluminium ; n=1
+e l : name=Oxygen ; n=3
Water : d=1.00 g /cm3 ; n=2 ; s t a t e=l i q u i d
+e l : name=Hydrogen ; n=2
+e l : name=Oxygen ; n=1
Quartz : d=2.2 g /cm3 ; n=2 ; s t a t e=S o l i d
+e l : name=S i l i c o n ; n=1
+e l : name=Oxygen ; n=2
Kapton : d=1.42 g /cm3 ; n=4
+e l : name=Hydrogen ; f =0.026362
+e l : name=Carbon
; f =0.691133
+e l : name=N i t r o g e n ; f =0.07327
+e l : name=Oxygen
; f =0.209235
Mylar :
d=1.4 g /cm3 ; n=3
+e l : name=Hydrogen ; f =0.041958
+e l : name=Carbon
; f =0.625017
+e l : name=Oxygen
; f =0.333025
ZA8 :
d=6.34 g /cm3 ; n=3; s t a t e=s o l i d
+e l : name=Aluminium ;
f =0.084
+e l : name=Z i n c ;
f =0.906
+e l : name=Copper ;
f =0.01
AluT6 :
+e l :
+e l :
+e l :
+e l :
d=2.7 g /cm3 ; n=4; s t a t e=s o l i d
name=Aluminium ;
f =0.986
name=I r o n ;
f =0.007
name=Copper ;
f =0.004
name=Chromium ;
f =0.003
29
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
C e r r o t r u : d=8.72 g /cm3 ; n=2 ; s t a t e=S o l i d
+e l : name=Bismuth ; f =0.58
+e l : name=Tin ;
f =0.42
B r e a s t : d =1.020 g/cm3 ; n = 8
+e l : name=Oxygen ;
f =0.5270
+e l : name=Carbon ;
f =0.3320
+e l : name=Hydrogen ;
f =0.1060
+e l : name=N i t r o g e n ;
f =0.0300
+e l : name=S u l f u r ;
f =0.0020
+e l : name=Sodium ;
f =0.0010
+e l : name=Phosphor ;
f =0.0010
+e l : name=C h l o r i n e ;
f =0.0010
Air : d=1.29 mg/cm3 ; n=4 ; s t a t e=g a s
+e l : name=N i t r o g e n ;
f =0.755268
+e l : name=Oxygen ;
f =0.231781
+e l : name=Argon ;
f =0.012827
+e l : name=Carbon ;
f =0.000124
Air2 :
+e l
+e l
+e l
+e l
:
:
:
:
d=2.58 mg/cm3 ; n=4 ; s t a t e=g a s
name=N i t r o g e n ;
f =0.755268
name=Oxygen ;
f =0.231781
name=Argon ;
f =0.012827
name=Carbon ;
f =0.000124
Glass :
+e l :
+e l :
+e l :
+e l :
d=2.5 g /cm3 ; n=4; s t a t e=s o l i d
name=Sodium ;
f =0.1020
name=Calcium ;
f =0.0510
name=S i l i c o n ;
f =0.2480
name=Oxygen ;
f =0.5990
Plexiglass :
+e l
+e l
+e l
d=1.19 g /cm3 ; n=3; s t a t e=s o l i d
: name=Hydrogen ;
f =0.080538
: name=Carbon ;
f =0.599848
: name=Oxygen ;
f =0.319614
S c i n t i −C9H10 : d =1.032 g /cm3 ; n=2
+e l : name=Carbon ;
n=9
+e l : name=Hydrogen ; n=10
LuYAP− 70: d=7.1 g /cm3
+e l : name=Lutetium ;
+e l : name=Yttrium ;
+e l : name=Aluminium ;
+e l : name=Oxygen ;
; n=4
n= 7
n= 3
n=10
n=30
LuYAP− 80: d=7.5 g /cm3
+e l : name=Lutetium ;
+e l : name=Yttrium ;
+e l : name=Aluminium ;
+e l : name=Oxygen ;
; n=4
n= 8
n= 2
n=10
n=30
30
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
Plastic :
d=1.18 g /cm3 ; n=3; s t a t e=s o l i d
+e l : name=Carbon ; n=5
+e l : name=Hydrogen ; n=8
+e l : name=Oxygen ; n=2
Paraffine :
+e l
+e l
+e l
CZT:
d=5.68
+e l :
+e l :
+e l :
Lung :
+e l
+e l
+e l
+e l
+e l
+e l
d=0.8 g /cm3 ; n=3; s t a t e=s o l i d
: name=Carbon ; n=5
: name=Hydrogen ; n=8
: name=Oxygen ; n=2
:
:
:
:
:
:
g /cm3 ; n=3; s t a t e=s o l i d
name=Cadmium
; n=9
name=Z i n c
; n=1
name=T e l l u r i u m ; n=10
d=0.26 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.103
name=Carbon
; f =0.105
name=N i t r o g e n ; f =0.031
name=Oxygen
; f =0.749
name=Sodium
; f =0.002
name=Phosphor ; f =0.002
name=S u l f u r
; f =0.003
+e l : name=C h l o r i n e ; f =0.003
+e l : name=Potassium ; f =0.002
P o l y e t h y l e n e : d=0.96 g /cm3 ; n=2
+e l : name=Hydrogen ; n=2
+e l : name=Carbon
; n=1
PVC:
d=1.65
+e l :
+e l :
+e l :
g /cm3 ; n=3 ;
s t a t e=s o l i d
name=Hydrogen ; n=3
name=Carbon
; n=2
name=C h l o r i n e ; n=1
SS304 :
d=7.92 g /cm3 ; n=4
+e l : name=I r o n
+e l : name=Chromium
+e l : name=N i c k e l
+e l : name=Manganese
;
;
;
;
;
s t a t e=s o l i d
f =0.695
f =0.190
f =0.095
f =0.020
PTFE:
d= 2 . 1 8 g /cm3 ; n=2 ; s t a t e=s o l i d
+e l : name=Carbon
; n=1
+e l : name=F l u o r i n e ; n=2
LYSO :
d=5.37 g /cm3 ; n=4 ; s t a t e=S o l i d
+e l : name=Lutetium ; f =0.31101534
+e l : name=Yttrium ; f =0.368765605
+e l : name=S i l i c o n ; f =0.083209699
+e l : name=Oxygen ; f =0.237009356
31
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
Body :
d=1.00 g /cm3 ; n=2
+e l : name=Hydrogen
+e l : name=Oxygen
Muscle : d=1.05 g /cm3 ; n=9
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=C h l o r i n e
+e l : name=Potassium
; f =0.112
; f =0.888
;
;
;
;
;
;
;
;
;
f =0.102
f =0.143
f =0.034
f =0.71
f =0.001
f =0.002
f =0.003
f =0.001
f =0.004
LungMoby : d=0.30 g /cm3 ; n=6
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
+e l : name=Phosphor ;
+e l : name=Calcium
;
f =0.099
f =0.100
f =0.028
f =0.740
f =0.001
f =0.032
SpineBone : d=1.42 g /cm3 ; n=11
+e l : name=Hydrogen ; f =0.063
+e l : name=Carbon
; f =0.261
+e l : name=N i t r o g e n ; f =0.039
+e l : name=Oxygen
; f =0.436
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.001
+e l : name=Phosphor ; f =0.061
+e l : name=S u l f u r
; f =0.003
+e l : name=C h l o r i n e ; f =0.001
+e l : name=Potassium ; f =0.001
+e l : name=Calcium
; f =0.133
RibBone : d=1.92 g /cm3 ; n=9
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Magnesium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=Calcium
;
;
;
;
;
;
;
;
;
f =0.034
f =0.155
f =0.042
f =0.435
f =0.001
f =0.002
f =0.103
f =0.003
f =0.225
Adipose : d=0.92 g /cm3 ; n=6
+e l : name=Hydrogen ; f =0.120
+e l : name=Carbon
; f =0.640
+e l : name=N i t r o g e n ; f =0.008
32
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
+e l : name=Oxygen
+e l : name=Phosphor
+e l : name=Calcium
; f =0.229
; f =0.002
; f =0.001
Blood :
d=1.06 g/cm3 ; n=10
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=C h l o r i n e
+e l : name=Potassium
+e l : name=I r o n
;
;
;
;
;
;
;
;
;
;
f =0.102
f =0.11
f =0.033
f =0.745
f =0.001
f =0.001
f =0.002
f =0.003
f =0.002
f =0.001
Heart :
d=1.05 g /cm3 ; n=9
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=C h l o r i n e
+e l : name=Potassium
;
;
;
;
;
;
;
;
;
f =0.104
f =0.139
f =0.029
f =0.718
f =0.001
f =0.002
f =0.002
f =0.002
f =0.003
Kidney : d=1.05 g /cm3 ; n=10
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=C h l o r i n e
+e l : name=Potassium
+e l : name=Calcium
;
;
;
;
;
;
;
;
;
;
f =0.103
f =0.132
f =0.03
f =0.724
f =0.002
f =0.002
f =0.002
f =0.002
f =0.002
f =0.001
f =0.102
f =0.139
f =0.03
f =0.716
f =0.002
f =0.003
f =0.003
f =0.002
f =0.003
Liver :
d=1.06 g /cm3 ; n=9
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=C h l o r i n e
+e l : name=Potassium
;
;
;
;
;
;
;
;
;
Lymph :
d=1.03 g /cm3 ; n=7
+e l : name=Hydrogen
; f =0.108
33
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
+e l
+e l
+e l
+e l
+e l
+e l
;
;
;
;
;
;
f =0.041
f =0.011
f =0.832
f =0.003
f =0.001
f =0.004
Pancreas : d=1.04 g /cm3 ; n=9
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
+e l : name=Sodium
;
+e l : name=Phosphor ;
+e l : name=S u l f u r
;
+e l : name=C h l o r i n e ;
+e l : name=Potassium ;
f =0.106
f =0.169
f =0.022
f =0.694
f =0.002
f =0.002
f =0.001
f =0.002
f =0.002
I n t e s t i n e : d=1.03 g /cm3 ; n=9
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
+e l : name=Sodium
;
+e l : name=Phosphor ;
+e l : name=S u l f u r
;
+e l : name=C h l o r i n e ;
+e l : name=Potassium ;
f =0.106
f =0.115
f =0.022
f =0.751
f =0.001
f =0.001
f =0.001
f =0.002
f =0.001
Skull :
:
:
:
:
:
:
name=Carbon
name=N i t r o g e n
name=Oxygen
name=Sodium
name=S u l f u r
name=C h l o r i n e
d=1.61 g /cm3 ; n=9
+e l : name=Hydrogen
+e l : name=Carbon
+e l : name=N i t r o g e n
+e l : name=Oxygen
+e l : name=Sodium
+e l : name=Magnesium
+e l : name=Phosphor
+e l : name=S u l f u r
+e l : name=Calcium
;
;
;
;
;
;
;
;
;
f =0.05
f =0.212
f =0.04
f =0.435
f =0.001
f =0.002
f =0.081
f =0.003
f =0.176
C a r t i l a g e : d=1.10 g /cm3 ; n=8
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
+e l : name=Sodium
;
+e l : name=Phosphor ;
+e l : name=S u l f u r
;
+e l : name=C h l o r i n e ;
f =0.096
f =0.099
f =0.022
f =0.744
f =0.005
f =0.022
f =0.009
f =0.003
Brain :
d=1.04 g /cm3 ; n=9
+e l : name=Hydrogen
; f =0.107
34
416
+e l : name=Carbon
; f =0.145
417
+e l : name=N i t r o g e n ; f =0.022
418
+e l : name=Oxygen
; f =0.712
419
+e l : name=Sodium
; f =0.002
420
+e l : name=Phosphor ; f =0.004
421
+e l : name=S u l f u r
; f =0.002
422
+e l : name=C h l o r i n e ; f =0.003
423
+e l : name=Potassium ; f =0.003
424
425 S p l e e n : d=1.06 g /cm3 ; n=9
426
+e l : name=Hydrogen ; f =0.103
427
+e l : name=Carbon
; f =0.113
428
+e l : name=N i t r o g e n ; f =0.032
429
+e l : name=Oxygen
; f =0.741
430
+e l : name=Sodium
; f =0.001
431
+e l : name=Phosphor ; f =0.003
432
+e l : name=S u l f u r
; f =0.002
433
+e l : name=C h l o r i n e ; f =0.002
434
+e l : name=Potassium ; f =0.003
435
436 CdTe :
d=5.85 g /cm3 ; n=2; s t a t e=s o l i d e
437
+e l : name=Cadmium ; f =0.468358
438
+e l : name=T e l l u r i u m ; f =0.531642
439
440 PMMA:
d=1.19 g /cm3 ; n=3 ; s t a t e=s o l i d
441
+e l : name=Hydrogen ; f =0.080538
442
+e l : name=Carbon ; f =0.599848
443
+e l : name=Oxygen ; f =0.319614
444
445 HU_− 1000_− 950: d =0.001205 g /cm3 ; n=3
446
+e l : name=N i t r o g e n ; f =0.755
447
+e l : name=Oxygen
; f =0.232
448
+e l : name=Argon
; f =0.013
449
450 HU_−949_− 121: d=0.26 g /cm3 ; n=9
451
+e l : name=Hydrogen ; f =0.103
452
+e l : name=Carbon
; f =0.105
453
+e l : name=N i t r o g e n ; f =0.031
454
+e l : name=Oxygen
; f =0.749
455
+e l : name=Sodium
; f =0.002
456
+e l : name=Phosphor ; f =0.002
457
+e l : name=S u l f u r
; f =0.003
458
+e l : name=C h l o r i n e ; f =0.003
459
+e l : name=Potassium ; f =0.002
460
461 HU_−120_− 78: d=0.91 g /cm3 ; n=5
462
+e l : name=Hydrogen ; f =0.118
463
+e l : name=Carbon
; f =0.780
464
+e l : name=Oxygen
; f =0.100
465
+e l : name=S u l f u r
; f =0.001
466
+e l : name=C h l o r i n e ; f =0.001
467
35
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
HU_−77_− 49: d=0.95 g /cm3 ; n=6
+e l : name=Hydrogen ; f =0.115
+e l : name=Carbon
; f =0.613
+e l : name=N i t r o g e n ; f =0.006
+e l : name=Oxygen
; f =0.264
+e l : name=S u l f u r
; f =0.001
+e l : name=C h l o r i n e ; f =0.001
HU_−48_− 21: d=0.97 g /cm3 ; n=7
+e l : name=Hydrogen ; f =0.112
+e l : name=Carbon
; f =0.506
+e l : name=N i t r o g e n ; f =0.012
+e l : name=Oxygen
; f =0.365
+e l : name=Phosphor ; f =0.001
+e l : name=S u l f u r
; f =0.002
+e l : name=C h l o r i n e ; f =0.002
HU_−20_9 : d=1.01 g /cm3 ; n=7
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
+e l : name=Phosphor ;
+e l : name=S u l f u r
;
+e l : name=C h l o r i n e ;
f =0.109
f =0.386
f =0.020
f =0.481
f =0.001
f =0.002
f =0.002
HU_10_21 : d=1.03 g /cm3 ; n=7
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
+e l : name=Phosphor ;
+e l : name=S u l f u r
;
+e l : name=C h l o r i n e ;
f =0.107
f =0.309
f =0.025
f =0.554
f =0.001
f =0.002
f =0.002
HU_22_80 : d=1.05 g /cm3 ; n=10
+e l : name=Hydrogen ; f =0.103
+e l : name=Carbon
; f =0.139
+e l : name=N i t r o g e n ; f =0.031
+e l : name=Oxygen
; f =0.718
+e l : name=Sodium
; f =0.002
+e l : name=Phosphor ; f =0.001
+e l : name=S u l f u r
; f =0.001
+e l : name=C h l o r i n e ; f =0.001
+e l : name=Potassium ; f =0.002
+e l : name=Calcium
; f =0.002
HU_81_120 : d=1.12 g /cm3 ; n=8
+e l : name=Hydrogen ;
+e l : name=Carbon
;
+e l : name=N i t r o g e n ;
+e l : name=Oxygen
;
f =0.094
f =0.207
f =0.062
f =0.623
36
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
+e l : name=Phosphor ; f =0.002
+e l : name=S u l f u r
; f =0.003
+e l : name=C h l o r i n e ; f =0.003
+e l : name=Calcium
; f =0.006
HU_121_200 : d=1.14 g /cm3 ; n=10
+e l : name=Hydrogen ; f =0.092
+e l : name=Carbon
; f =0.440
+e l : name=N i t r o g e n ; f =0.026
+e l : name=Oxygen
; f =0.359
+e l : name=Sodium
; f =0.001
+e l : name=Phosphor ; f =0.026
+e l : name=S u l f u r
; f =0.001
+e l : name=C h l o r i n e ; f =0.001
+e l : name=Potassium ; f =0.001
+e l : name=Calcium
; f =0.054
HU_201_300 : d=1.20 g /cm3 ; n=10
+e l : name=Hydrogen ; f =0.084
+e l : name=Carbon
; f =0.400
+e l : name=N i t r o g e n ; f =0.028
+e l : name=Oxygen
; f =0.370
+e l : name=Sodium
; f =0.001
+e l : name=Phosphor ; f =0.037
+e l : name=S u l f u r
; f =0.001
+e l : name=C h l o r i n e ; f =0.001
+e l : name=Potassium ; f =0.001
+e l : name=Calcium
; f =0.078
HU_301_400 : d=1.28 g /cm3 ; n=11
+e l : name=Hydrogen ; f =0.075
+e l : name=Carbon
; f =0.357
+e l : name=N i t r o g e n ; f =0.031
+e l : name=Oxygen
; f =0.381
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.001
+e l : name=Phosphor ; f =0.048
+e l : name=S u l f u r
; f =0.001
+e l : name=C h l o r i n e ; f =0.001
+e l : name=Potassium ; f =0.001
+e l : name=Calcium
; f =0.103
HU_401_500 : d=1.35 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.070
+e l : name=Carbon
; f =0.328
+e l : name=N i t r o g e n ; f =0.032
+e l : name=Oxygen
; f =0.389
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.001
+e l : name=Phosphor ; f =0.056
+e l : name=S u l f u r
; f =0.002
+e l : name=Calcium
; f =0.121
37
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
HU_501_600 : d=1.43 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.062
+e l : name=Carbon
; f =0.295
+e l : name=N i t r o g e n ; f =0.034
+e l : name=Oxygen
; f =0.399
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.001
+e l : name=Phosphor ; f =0.065
+e l : name=S u l f u r
; f =0.002
+e l : name=Calcium
; f =0.141
HU_601_700 : d=1.50 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.057
+e l : name=Carbon
; f =0.268
+e l : name=N i t r o g e n ; f =0.036
+e l : name=Oxygen
; f =0.406
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.001
+e l : name=Phosphor ; f =0.072
+e l : name=S u l f u r
; f =0.002
+e l : name=Calcium
; f =0.157
HU_701_800 : d=1.59 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.051
+e l : name=Carbon
; f =0.239
+e l : name=N i t r o g e n ; f =0.037
+e l : name=Oxygen
; f =0.411
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.003
+e l : name=Phosphor ; f =0.080
+e l : name=S u l f u r
; f =0.004
+e l : name=Calcium
; f =0.174
HU_801_900 : d=1.66 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.047
+e l : name=Carbon
; f =0.217
+e l : name=N i t r o g e n ; f =0.038
+e l : name=Oxygen
; f =0.417
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.003
+e l : name=Phosphor ; f =0.086
+e l : name=S u l f u r
; f =0.004
+e l : name=Calcium
; f =0.187
HU_901_1000 : d=1.73 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.043
+e l : name=Carbon
; f =0.199
+e l : name=N i t r o g e n ; f =0.040
+e l : name=Oxygen
; f =0.422
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.003
38
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
+e l : name=Phosphor ; f =0.090
+e l : name=S u l f u r
; f =0.004
+e l : name=Calcium
; f =0.198
HU_1001_1100 : d=1.81 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.039
+e l : name=Carbon
; f =0.179
+e l : name=N i t r o g e n ; f =0.041
+e l : name=Oxygen
; f =0.427
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.003
+e l : name=Phosphor ; f =0.096
+e l : name=S u l f u r
; f =0.004
+e l : name=Calcium
; f =0.210
HU_1101_1200 : d=1.89 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.036
+e l : name=Carbon
; f =0.162
+e l : name=N i t r o g e n ; f =0.042
+e l : name=Oxygen
; f =0.433
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.002
+e l : name=Phosphor ; f =0.101
+e l : name=S u l f u r
; f =0.003
+e l : name=Calcium
; f =0.220
HU_1201_1300 : d=1.96 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.032
+e l : name=Carbon
; f =0.147
+e l : name=N i t r o g e n ; f =0.042
+e l : name=Oxygen
; f =0.437
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.002
+e l : name=Phosphor ; f =0.105
+e l : name=S u l f u r
; f =0.003
+e l : name=Calcium
; f =0.231
HU_1301_1400 : d=2.04 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.029
+e l : name=Carbon
; f =0.133
+e l : name=N i t r o g e n ; f =0.043
+e l : name=Oxygen
; f =0.442
+e l : name=Sodium
; f =0.001
+e l : name=Magnesium ; f =0.002
+e l : name=Phosphor ; f =0.109
+e l : name=S u l f u r
; f =0.002
+e l : name=Calcium
; f =0.239
HU_1401_1500 : d=2.12 g /cm3 ; n=9
+e l : name=Hydrogen ; f =0.026
+e l : name=Carbon
; f =0.119
+e l : name=N i t r o g e n ; f =0.044
39
676
+e l : name=Oxygen
; f =0.446
677
+e l : name=Sodium
; f =0.001
678
+e l : name=Magnesium ; f =0.002
679
+e l : name=Phosphor ; f =0.113
680
+e l : name=S u l f u r
; f =0.001
681
+e l : name=Calcium
; f =0.248
682
683 HU_1501_1600 : d=2.19 g /cm3 ; n=9
684
+e l : name=Hydrogen ; f =0.025
685
+e l : name=Carbon
; f =0.105
686
+e l : name=N i t r o g e n ; f =0.045
687
+e l : name=Oxygen
; f =0.448
688
+e l : name=Sodium
; f =0.001
689
+e l : name=Magnesium ; f =0.002
690
+e l : name=Phosphor ; f =0.117
691
+e l : name=S u l f u r
; f =0.002
692
+e l : name=Calcium
; f =0.255
40
2.4.
Sistemas PET en GATE
En esta sección analizaremos dos ejemplos muy provechosos acerca de sistemas PET.
2.4.1.
Sistema CylindricalPET
A continuación el código que analizaremos se llama
PET_CylindricalPET_System.mac
y en resumidas cuentas lo que hace es simular un detector de geometría axial en el cuál
+
se bombardea con una fuente de positrones e un pedazo de cuerpo humano idealizado
o simplicado. Aprenderemos muchos de los conceptos de GATE en la explicación de
este código. La línea 1 del código le dice a GATE que utilice el controlador de visualisación OpenGL y que utilice el servidor X para manejar la parte gráca [4],[5]. La
línea 2
/vis/viewer/set/viewpointThetaPhi 60 60
ubica la cámara (el observador) en la posición ángular
θ = 60, φ = 60
de las coor-
denadas esféricas [6] y que apunte hacia el centro del sistema coordenado. La l inea
/vis/viewer/zoom 6.0 establece un
/vis/drawVolume le dice a GATE que
3
aumento del detector de un 6:1. La línea 4
dibuje todas las geometrías que vayan a ser
creadas. La línea 5 luce un poco intrusa ya que no empieza con el prejo de visualización
/vis/,
esta línea almacena las trayectorias, y es necesaria para que la línea 6
pueda agregar las trayectorias de las partículas a la escena. Entonces es típico encontrar
estas dos líneas juntas
/tracking/storeTrajectory 1
/vis/scene/add/trajectories
Luego en la línea 7 encontramos el comando
/vis/scene/endOfEventAction accumulate
que ordena al programa que acumule en la escena todos los eventos. Las líneas 8-21 establecen el nivel de verborrea de todos los componentes de la simulación a 0. Los niveles
de verborrea para cada componente de la simulación son: 0, 1, 2, 3, 4, 5. El mínimo
es 0 y el máximo es 5. La línea 22
/run/verbose 0
establece el nivel de verborrea de
G4RunManager a 0 (silencioso), otros posibles valores son 1 (topicos principales), 2
(topicos principales + resumen de la corrida). La línea 23
/event/verbose 0 establece
la verborrea del administrador de eventos a 0 (silencioso), otros posibles valores son 1
(información de apilamiento), 2 (Mas detalles). La línea 24
/tracking/verbose 0
le
dice a GATE que no imprima en pantalla la información correspondiente a las trayectorias de las partículas. Otros posibles valores son 1 (minima información de cada paso),
2 (+ Informanción de las partículas secundarias), 3 (+ Información pre y post del paso), 4 (+ Información acerca de la ejecución del proceso AlongStepPostStep), y 5 (+
Información de la longitud del paso propuesto). Las líneas 25-28 ya las conocemos y
simplemente estamos cargando la base de datos de los materiales y creando el mundo.
La línea 29
41
/gate/world/daughters/name cylindricalPET
crea la hija llamada
cylindricalPET,
que en realidad no es un nombre arbitrario, sino
uno de los sistemas que GATE tiene a nuestra dispocisión para ayudarnos a crear detectores. Otro tipo de sistemas son:
y
OPET.
scanner, CTscanner, SPECTHead, ecat, CPET,
Los sistemas en GATE sirven como un molde para crear distintos tipos de
detectores obedeciendo el patrón geométrico estipulado por dicho molde o sistema.
Un sistema
cylindricalPET
es un sistema PET que puede describir la mayoría de
de los escáneres PET para animales. El objetivo principal de cylindricalPET es almacenar los datos de salida en el formato LMF (List Mode Format) desarrollado por la
colaboración Crystal Clear. Un sistema cylindricalPET se basa en la geometría cilíndrica, y consiste en cinco niveles de jerarquia desde la madre hasta la hija, denidos
así:
El volumen
cylindricalPET
se dene como un cilindro con un agujero en el inte-
rior, dentro del mundo.
El volumen
rsector
(profundidad=1) se dene como una caja, la cual es repetida
con un anillo repetidor dentro de cylindricalPET.
El volumen
module
(profundidad=2) se dene como una caja dentro de rsector.
La cual es repetida por un repetidor cubicarray sin repetición en
x.
Este nivel es
opcional.
El volumen
submodule
(profundidad=3) se dene como una caja dentro de mod-
ule. La cual es repetida por un repetidor cubicarray sin repetición en
x. Este nivel
es opcional.
el volumen
crystal
(profundidad=4) se dene como una caja dentro de submodule.
La cual es repetida por un repetidor cubicarray sin repetición en
x.
Este nivel es
opcional.
layer
en español capa (profundidad=5), se dene como una o varias cajas ar-
regladas radialmente dentro de crystal. No se recomienda usar un repetidor para
capa(s), pero sí se recomienda que se construya una por una en el código. Capa
debe ser un detector sensible. Los materiales de capa deben ser los materiales del
detector, e.g. LSO, o BGO+GSO para un sistema de doble capa phoswich.
Ahora iremos línea a línea construyendo un sistema cylindricalPET. Con la línea 30
/gate/world/daughters/insert cylinder
establece que cylindricalPET es un cilindro, en donde las características de este cilindro
se dan a continuación. La línea 31 ubica a la hija cylindricalPET en el centro del mundo.
La línea 32 /gate/cylindricalPET/geometry/setRmax 52.0 cm ja el radio del cilindro
42
a 52 cm, mientras que la línea 33 /gate/cylindricalPET/geometry/setRmin 39.9 cm da
el radio interno del cilindro cylindricalPET. En este caso, lo que estamos formando
es un anillo. Un verdadero cilindro tendría un radio mínimo igual a cero. La línea 34
/gate/cylindricalPET/geometry/setHeight 40.2 cm nos da el largo del cilindro igual a
80.4 cm. En la línea 35 llenamos a cylindricalPET de aire. Las líneas 36 y 37 son de
visualización
/gate/cylindricalPET/vis/forceWireframe
/gate/cylindricalPET/vis/setColor white
para cylindricalPET, signicando la línea 36 que se utilice un dibujo con líneas que
demarquen las supercies, estas líneas en la jerga de los programas que dibujan, se
llaman cables; mientras que la línea 37 dice que se coloree de blanco el cylindricalPET.
En la línea 38-39 denimos una hija de nombre cabeza con geometría de una caja. En
la línea establecemos el centro de la hija cabeza a la posición (44.0, 0.0, 0.0)cm del
sistema de coordenadas de cylindricalPET, en las líneas 41-43 damos las dimensiones
de cabeza igual a 2×(8, 32, 40)cm, y en la línea 44 establecemos el material de cabeza
a aire. La línea 45
/gate/cabeza/vis/setVisible 0
es importante porque le dice a GATE que no renderice el dibujo de cabeza, y que en
lugar de eso, lo dibuje usando cables. Desde 46 hasta 53 denimos a bloque como una
hija de cabeza, siendo una caja ubicada en el centro de cabeza con dimensiones de
2×(30, 16, 20)mm, hecha de aire y dibujada con cables. Desde 54 hasta 61 denimos
a cristal como una hija de bloque, siendo una caja ubicada en el centro de bloque con
dimensiones de 2×(30, 3, 3.8)mm, hecha de aire y dibujada con cables. Desde 62 hasta
69 denimos a miDetectorLSO como una hija de cristal, siendo una caja ubicada en
(-0.75, 0.0, 0.0)cm del sistema de coordenadas de cristal, con dimensiones de 2×(15,
3, 3.8)mm, hecha de LSO (Lu2 Si O5 ), y dibujada con color rojo. Desde 70 hasta
77 denimos a miDetectorBGO como una hija de cristal, siendo una caja ubicada en
(+0.75, 0.0, 0.0)cm del sistema de coordenadas de cristal, con dimensiones de 2×(15,
3, 3.8)mm, hecha de BGO (Bi4 Ge3 O12 ), y dibujada con color amarillo. La línea 78
/gate/cristal/repeaters/insert cubicArray introduce un repetidor tipo cubicArray para
el volumen cristal, las líneas 79, 80, y 81
/gate/cristal/cubicArray/setRepeatNumberX 1
/gate/cristal/cubicArray/setRepeatNumberY 5
/gate/cristal/cubicArray/setRepeatNumberZ 5
dicen que no haya repetición a lo largo del eje
del eje
5 = 25
y,
x,
que hayan 5 repeticiones a lo largo
y que hayan 5 repeticiones a lo largo del eje
z,
en total habrán
1×5×
cristales. La línea 82 /gate/cristal/cubicArray/setRepeatVector 0.0 3.2 4.0 mm
establece el paso de la repetición de cristal sobre los ejes
2 × (∆x, ∆y, ∆z)
x, y, z
a 2×(0,0, 3,2, 4,0)mm=
y son apropiados porque no hay solapamiento ya que las dimensiones
43
de cada cristal son 2×(30, 3, 3.8)mm. Esta repetición de arreglo cúbica se explica así:
La posición inicial del centro de cristal está en
P0 = (0, 0, 0)
(el origen de bloque), y en
general, las nuevas posiciones de los centros de los demas cristales estarán dados por
P~ (a, b, c) = P~0 + 2a ∆x î + 2b ∆y ĵ + 2c ∆z k̂
en donde
a
1, 2, 3, 4, 5;
y
(2.3)
a = 1; b puede tomar 5 valores, b =
c = 1, 2, 3, 4, 5. Las 25 posiciones en milimetros
solamente puede tomar un valor,
c
puede tomar 5 valores
son:
(0, 6.4, 8)
(0, 6.4, 16)
(0, 6.4, 24)
(0, 6.4, 32)
(0, 6.4, 40)
(0, 12.8, 8)
(0, 12.8, 16)
(0, 12.8, 24)
(0, 12.8, 32)
(0, 12.8, 40)
(0, 19.2, 8)
(0, 19.2, 16)
(0, 19.2, 24)
(0, 19.2, 32)
(0, 19.2, 40)
(0, 25.6, 8)
(0, 25.6, 16)
(0, 25.6, 24)
(0, 25.6, 32)
(0, 25.6, 40)
(0, 32, 8)
(0, 32, 16)
(0, 32, 24)
(0, 32, 32)
(0, 32, 40)
que serían las posiciones nales en el caso en que se hubiera dado el comando
/gate/cristal/linear/autoCenter false
pero ya que este no es el caso, porque el anterior comando no se dió en el código,
y además, la opción de autocentrado viene por defecto igual a verdadero, entonces
tendremos que centrar el grupo de posiciones repetidas alrededor de la posición del
~0 ) que ha sido repetido. El autocentrado cambia la ecuación 2.3 a:
volumen inicial (P
P~ (ā, b̄, c̄) = P~0 + 2ā ∆x î + 2b̄ ∆y ĵ + 2c̄ ∆z k̂
en donde
ā, b̄,
y
c̄
ā = −
b̄ = −
c̄ = −
(2.4)
pueden tomar los valores dados por la siguientes ecuaciones:
(a
(b
max
− 1)
,−
(a
2
− 1) (b
,−
2
− 1) (c
,−
2
max
(c
max
max
− 1)
+ 1, . . . ,
(a
2
− 1)
(b
+ 1, . . . ,
2
− 1)
(c
+ 1, . . . ,
2
max
− 1)
− 1,
(a
2
− 1)
(b
− 1,
2
− 1)
(c
− 1,
2
max
− 1)
(2.5)
2
− 1)
2
− 1)
,
2
max
max
max
max
max
max
(2.6)
(2.7)
a
viene dado por el comando setRepeatNumberX, b
viene dado por el
setRepeatNumberY, y c
viene dado por el comando setRepeatNumberZ;
En este ejemplo vemos que ā puede tomar solo un valor, cero. Por otro lado b̄ y c̄ pueden
en donde
max
max
comando
max
tomar valores -2, -1, 0, 1, y 2. Luego de aplicar el autocentrado queda:
(0, -12.8, -16)
(0, -12.8, -8)
(0, -12.8, 0)
(0, -12.8, 8)
(0, -6.4, -16)
(0, -6.4, -8)
(0, -6.4, 0)
(0, -6.4, 8)
(0, -6.4, 16)
(0, 0, -16)
(0, 0, -8)
(0, 0, 0)
(0, 0, 8)
(0, 0, 16)
(0, 6.4, -16)
(0, 6.4, -8)
(0, 6.4, 0)
(0, 6.4, 8)
(0, 6.4, 16)
(0, 12.8, -16)
(0, 12.8, -8)
(0, 12.8, 0)
(0, 12.8, 8)
(0, 12.8, 16)
44
(0, -12.8, 16)
.
En este punto podemos darnos cuenta que el repetidor de arreglo cubico es una herramienta muy poderosa. De las líneas 83 a 87
/gate/bloque/repeaters/insert cubicArray
/gate/bloque/cubicArray/setRepeatNumberX 1
/gate/bloque/cubicArray/setRepeatNumberY 20
/gate/bloque/cubicArray/setRepeatNumberZ 20
/gate/bloque/cubicArray/setRepeatVector 0.0 1.6 2.0 cm
podemos ver que se repite a bloque mediante un arreglo cubico
1 × 20 × 20 = 400 veces
2×(0.0, 1.6, 2.0)cm. Luego las posiciones van desde
~
P (ā = 0, b̄ = −9.5, c̄ = −9.5)=(0, -30.4, -38)cm hasta P~ (ā = 0, b̄ = 9.5, c̄ = 9.5)=(0,
con un paso de
30.4, 38)cm,
/gate/cabeza/repeaters/insert ring
sirve para repetir al volumen cabeza a lo largo de un anillo. El número de veces que se
repite viene dada por el comando de la línea 89
/gate/cabeza/ring/setRepeatNumber 4
el eje en el cual el volumen rotara debe ser especicado por dos puntos del eje, así
/gate/VolumenNombre/ring/setPoint1 0. 1. 0. mm
/gate/VolumenNombre/ring/setPoint2 0. 0. 0. mm
cuando el eje de rotación no se especica, entonces el eje de rotación se elije a ser el eje
z.
Las líneas 90 a 94
/gate/systems/cylindricalPET/rsector/attach cabeza
/gate/systems/cylindricalPET/module/attach bloque
/gate/systems/cylindricalPET/crystal/attach cristal
/gate/systems/cylindricalPET/layer0/attach miDetectorLSO
/gate/systems/cylindricalPET/layer1/attach miDetectorBGO
atan los volumenes que ya hemos creado como lo son cabeza, bloque, cristal, miDetectorLSO, y miDetectorBGO a distintas partes del sistema cylindricalPET. Las líneas 95
y 96
/gate/miDetectorLSO/attachCrystalSD
/gate/miDetectorBGO/attachCrystalSD
ata miDetectorLSO y miDetectorBGO a piezas sensibles de detección tipo cristal. La
línea 97 /gate/systems/cylindricalPET/describe imprime información acerca del detector cylindricalPET. La línea 98 /gate/cylindricalPET/moves/insert orbiting indica
que el sistema cylindricalPET realice un movimiento de tipo orbitante. La línea 99
/gate/cylindricalPET/orbiting/setSpeed 30 deg/s especica la velocidad de rotación a
30 grados/s. Las líneas 100 y 101
45
/gate/cylindricalPET/orbiting/setPoint1 0 0 0 cm
/gate/cylindricalPET/orbiting/setPoint2 0 0 1 cm
especican dos puntos del eje de rotación alrededor del cual el sistema cylindricalPET
rota, en este caso es el eje
z.
Desde la línea 102 hasta la 110
/gate/world/daughters/name fantasma
/gate/world/daughters/insert box
/gate/fantasma/geometry/setXLength 10 cm
/gate/fantasma/geometry/setYLength 10 cm
/gate/fantasma/geometry/setZLength 10 cm
/gate/fantasma/setMaterial Water
/gate/fantasma/vis/forceSolid
/gate/fantasma/vis/setColor blue
/gate/fantasma/attachPhantomSD
denimos al volumen fantasma como hija del mundo y de longitudes 2×(10, 10, 10)cm.
Fantasma esta hecha de agua y mediante las funciones de visualización se establece a
que se dibuje de manera solida y de color azúl. Por último se ata fantasma a un tipo
de detector sensitivo. Generalmente un fantasma es un volumen animal o humano el
cual será bombardeado con partículas. Las 3/4 partes de un cuerpo humano o animal,
esta hecho de agua. Por eso es una buena aproximación usar agua como un blanco
animal o humano. Las líneas 111-119 especican los procesos físicos involucrados en la
simulación,
/gate/physics/addProcess PhotoElectric
/gate/physics/addProcess Compton
/gate/physics/addProcess GammaConversion
/gate/physics/addProcess LowEnergyRayleighScattering
/gate/physics/addProcess ElectronIonisation
/gate/physics/addProcess Bremsstrahlung
/gate/physics/addProcess PositronAnnihilationStd
/gate/physics/addProcess MultipleScattering e+
/gate/physics/addProcess MultipleScattering emientras que las líneas 120 y 121
/gate/physics/processList Enabled
/gate/physics/processList Initialized
habilitan la lista de procesos físicos y la inicializan. Las líneas 122 hasta 130
/gate/physics/Gamma/SetCutInRegion miDetectorLSO 1.0 cm
/gate/physics/Electron/SetCutInRegion miDetectorLSO 1.0 cm
/gate/physics/Positron/SetCutInRegion miDetectorLSO 1.0 cm
/gate/physics/Gamma/SetCutInRegion miDetectorBGO 1.0 cm
/gate/physics/Electron/SetCutInRegion miDetectorBGO 1.0 cm
/gate/physics/Positron/SetCutInRegion miDetectorBGO 1.0 cm
/gate/physics/Gamma/SetCutInRegion fantasma 0.1 mm
/gate/physics/Electron/SetCutInRegion fantasma 0.1 mm
46
world
CylindricalPET
fantasma
cabeza
bloque
cristal
miDetectorBGO
miDetectorLSD
Figura
2.1:
Geometría
del
detector
CylindricalPET
presente
en
el
código
PET_CylindricalPET_System.mac. La echa indica que un volumen apunta a la volumen hija.
/gate/physics/Positron/SetCutInRegion fantasma 0.1 mm
son comandos de la forma
/gate/physics/Gamma/SetCutInRegion
<VolumenLogico>
<valor>
<unidades>
/gate/physics/Electron/SetCutInRegion
<VolumenLogico>
<valor>
<unidades>
/gate/physics/Positron/SetCutInRegion
<VolumenLogico>
<valor>
<unidades>
los cuales establecen un cuota minima para garantizar que no ocurra divergencias infrarrojas (integrales en donde la energía del fotón tiende a cero) en los calculos de las
interacciones de las partículas Gamma (fotón), electrón, y positrón con los materiales
de los volumenes geométricos. La línea 131
/gate/physics/SetMaxStepSizeInRegion fantasma 0.01 mm
como su nombre lo indica establece el tamaño máximo del paso en el volumen lógico
fantasma a 0.01 mm. La línea 132 /gate/run/initialize inicializa la verborrea, la visualización y la lista de procesos físicos. Las líneas 133 a 139
/gate/timing/setTime 1.0 s
/gate/timing/setTime 2 s
/gate/timing/setTime 3 s
/gate/timing/setTime 4 s
47
/gate/timing/setTime 5 s
/gate/timing/setTime 6 s
muestran como corre el sistema en los tiempos especicados. Las líneas 140 a 154
utilizan el concepto de
digitizer
que en español signica
digitalizador.
El proposito
de digitalizador es simular el comportamiento de los escaneres detectores y cadena de
procesamiento de la señal. GATE usa GEANT4 para generar particulas y transportarlas
a travéz de distintos materiales. Esto mimica las interacciones físicas entre partículas
y matería. La información generada durante este proceso es usada por GATE para simular los pulsos del detector (digitos), los cuales corresponden a los datos observados. El
digitalizador representa la serie de pasos y ltros que pulen este proceso.
1. Una partícula es generada con todos sus parámetros tales como su energía inicial,
su momentum, etc.
2. Un paso de trayectoria elemental (en GEANT4 llamada simplemente un paso
-
step -)
es aplicada. Un paso corresponde a la trayectoria de una partícula en-
tre interacciones discretas (i.e. fotoeléctrica, Compton, producción de par, etc.).
Durante un paso los cambios en la información de la energía de la partícula y
momentum son calculadas. La longitud de un paso depende de la naturaleza de
la interacción, el tipo de partícula y material, etc. El cálculo de la longitud del
paso es compleja y es mencionada aqui brevemente. Para mas detalles ver [1].
3. Si un paso ocurre dentro de un volumen correspondiente a un detector sensitivo,
la información de la interacción entre la partícula y el material es almacenada.
Esta información puede incluir la energía depositada, el momentum antes y después de la interacción, el nombre del volumen donde la interacción ocurrió, y asi
sucesivamente. Este conjunto de información es referida como un
hit
(impacto).
4. Las etapas 2 y 3 son repetidas hasta que la energía de la partícula se vuelve más
baja que un valor predenido, o que la posición de la partícula caiga afuera de
los límites denidos. La serie entera de pasos forman una trayectoria simulada de
la partícula, que es llamada una
track
(traza) en GEANT4.
5. La cantidad de energía depositada en un cristal es ltrada por el digitalizador.
La salida desde el digitalizador corresponde a la señal después de que ella ha sido
procesada por la
front end electronics FEE
(electrónica delantera). Generalmente
la FEE es hecha de varios unidades de procesamiento, trabajando en serie y/o en
paralelo. Este proceso de transformar la energía de un impacto en el valor digital
nal es llamado Digitalización, y es realizada por por la porción de digitalizador de
la arquitectura GATE. Cada unidad de procesamiento en la FEE es representada
en GATE por un módulo digitalizador. El valor nal obtenido después de ltrar
por un conjunto de módulos es llamado un
single
(simple). Los simples pueden
ser salvados como un archivo de salida. Cada valor transiente entre dos módulos
es llamado un pulso.
48
Este proceso es repetido para cada evento en la simulación para producir uno o mas
conjuntos de simples. Estos simples pueden ser almacenados en un archivo de salida
e.g. un árbol de ROOT. Una vez que esta lista es creada, una segunda etapa de procesamiento puede ser insertada para ordenar por coincidencias la lista de simples. Para
hacer esto, el algoritmo busca en esta lista un conjunto de simples que son detectados
dentro de un intervalo de tiempo (eventos coincidentes). Finalmente la coincidencia de
los datos puede ser ltrada para mimicar cualquier posible perdida de datos, la cual
puede ocurrir en el circuito lógico de coincidencias o durante el transporte de los datos.
Así como para simples, el procesamiento es realizado especicando una lista de módulos
genericos para aplicarlos al ujo de datos de coincidencia.
La información contenida en el impacto no corresponde con lo que es proveido por
un detector real. Para simular los valores digitales (pulsos) que resultan desde la salida
del FEE, los métodos de muestreo de la señal deben ser especicados. Para hacer esto,
un número de módulos digitizadores son disponibles y serán descritos abajo. Además
en el caso de análisis PET, el
trigger
(gatillo) lógico es basado en uno o mas decisiones
denidas por el usuario que depende sobre cantidades sicas observables tales como
umbrales de energía y tiempos de coincidencia. El rol del digitalizador es construir
desde la información del impacto, los observables físicos, los cuales incluyen energía,
posición, y tiempo de detección para cada partícula. Además, el digitalizador debe
implementar la lógica requerida para simular coincidencias durante las simulaciones
PET. El uso típico del módulo digitalizador incluye las siguientes acciones:
simular la respuesta del detector,
simular el esquema de lectura de salida,
simular la lógica del gatillo.
Módulos de digitalizador:
La digitalización consiste de una serie de procesadores
de señal. La salida de cada paso a lo largo de la serie es denida como un pulso. Al
nal de la cadena, los pulsos de salidad son nombrados simples. Estos simples simulan
realísticamente los observables físicos de una respuesta de detector para una partícula
que interactua con él. El comando básico para introducir un módulo a la simulación es
/gate/digitizer/insert
<MODULO>
la declaración de cada uno de los módulos debería hacer sentido. Se inserta Adder antes
que readout, readout antes que thresholder/upholder, y blurring antes que thresholder/upholder.
Módulo Adder:
Una partícula a menudo crea interacciones multiples, y consecuente-
mente multiples impactos dentro de un cristal dado. Un fotón puede interactuar con
un cristal por dos procesos Compton y una abosorción fotoeléctrica. El primer paso de
el digitalizador es sumar todos los impactos que ocurren dentro del mismo cristal (i.e.
el mismo volumen). Esto es debido a el hecho de que la electrónica siempre mide una
señal integrada, y no tiene la resolución temporal o energética necesaria para distinguir
49
entre interacciones individuales de la partícula dentro de un cristal. Esta acción digitalizadora es completada por un módulo llamado
adder
(Adicionador). Generalmente
el adder debería ser el primer módulo de una cadena digitalizadora. El adder reagrupa
los impactos per volumen en un pulso. Si una partícula que entra a un detector hace
multiples impactos dentro de dos cristales antes de ser detenida, la salida del módulo adder consistirá de dos pulsos. Cada pulso es computado como sigue: la energía es
la total de las energías en cada volumen, la posición es obtenida con un centroide de
energía-pesada de las diferentes posiciones de los impactos. El tiempo es igual al tiempo
en el cual el primer impacto ocurrió. En la línea 140 se inserta el módulo adder:
/gate/digitizer/Singles/insert adder
Módulo Readout:
Con la excepción de un sistema detector en donde cada cristal es
leido por un foto-detector individual, la segmentación de readout es a menudo diferente
desde las estructuras geométricas básicas del detector. La geometría readout es una
geométria articial que es usualmente asociada con un grupo de detectores sensibles.
Este agrupamiento tiene que ser determinado por el usuario a travéz de una variable
llamada
depth
(profundidad). Usando esta variable, los pulsos son sumados si sus IDs
de los volumenes son iguales a este nivel de profundidad. El módulo readout reagrupa
pulsos per bloque (grupo de detectores sensibles). El usuario necesita especicar la
profundidad del bloque para indicar la profundidad dentro de la jerarquia del volumen
a la cual los pulsos son sumados. Los resultados de este módulo son la energía total en
el bloque, la posición del pulso con la máxima energía (el ganador toma todo!). En las
líneas 141 y 142
/gate/digitizer/Singles/insert readout
/gate/digitizer/Singles/readout/setDepth 1
insertamos el módulo readout y además establecemos la profundidad al nivel 1 (el nivel
de rsector, en este caso cabeza).
La próxima tarea es transformar este pulso de salida desde el módulo readout en un simple, el cual es el observable físico del experimento. Esta transformación es el resultado
de la respuesta del detector y debería mimicar los comportamientos del foto-detector,
la electrónica, y el sistema de adquisición.
Módulo Blurring:
El módulo de procesador de pulsos blurring (borrón), simula el
borrón gausiano del espectro de energía después de salir del módulo readout. Esto es
acompañado por la introducción de una resolución
mitad del máximo) a una energía dada
R(E).
E0 .
R0
(FWHM amplitud llena a la
La resolución es una función de la energía,
la resolución de la energía es:
r
R(E) = R0
el comando de la línea 144
50
E0
,
E
(2.8)
/gate/digitizer/Singles/blurring/setResolution 0.26
establece
R0 = 0,26,
mientras que la línea 145
/gate/digitizer/Singles/blurring/setEnergyOfReference 511. keV
establece
E0 = 511
keV.
Módulo Thresholder y Upholder:
Estos módulos permiten establecer valores infe-
riores y superiores de la energía, en los cuales no se tendran en cuenta las partículas
que no pasen y sobrepasen estos valores respectivamente. Las líneas 146 y 147
/gate/digitizer/Singles/insert thresholder
/gate/digitizer/Singles/thresholder/setThreshold 350. keV
insertan el módulo thresholder y establece el valor mínimo a 350 keV. Mientras que las
líneas 148 y 149
/gate/digitizer/Singles/insert upholder
/gate/digitizer/Singles/upholder/setUphold 650. keV
introducen a upholder y establecen el valor máximo a 650 keV. La línea 150
/gate/digitizer/Coincidences/setWindow 10. ns ordena por coincidencias la lista de
simples presentes en una ventana de tiempo de 10 nano segundos.
incidencias:
Ordenador de Co-
El ordenador de coincidencias busca en la lista de simples por parejas de
simples coincidentes. En donde sea que dos o mas simples son encontrados dentro de una
ventana de tiempo, estos simples son agrupados para formar un evento de coincidencia.
Dos métodos son posibles para encontrar simples coincidentes dentro de GATE. En el
primer método, cuando un simple es detectado, el abre una nueva ventanda de tiempo,
y busca por un segundo simple que ocurra durante la longitud de la ventana. En este
método, mientras la ventana abierta por el primer simple no sea cerrada, otro simple
no podrá abrir su propia ventana de tiempo. En el segundo método, todos los simples
abren sus propias ventanas de coincidencia, y un OR lógico es hecho entre todas las
señales individuales para encontrar coincidencias. Los ods métodos están disponibles
en GATE, y pueden dar resultados levementes distintos, para una ventana de amplitud
dada.
Coincidencias demoradas:
Cada simple emitido desde una fuente de particula dada
es almacenada en un númer ID de evento, el cual unicamente identica el decaimiento
desde el cual el simple esta viniendo. Si dos números ID de eventos no son identicos
en un evento de coincidencia, el evento es denido como una coincidencia aleatoria. Un
método experimental usado para estimar el número de coincidencias aleatórias consiste
de usar una ventana de tiempo demorada. Por defecto, la ventana de coincidencia es
abierta cuado una partícula es detectada (i.e. cuando un simple es creado). En este
método, una segunda ventana de coincidencia es creada en paralelo a la ventana de coincidencia normal (la cual en este caso es referida como la ventana pronta). La segunda
ventana (usualmente con la misma amplitud) es abierta, pero es desplazada en tiempo. Este desplzamiento debería ser lo sucientemente largo para asegurar que las dos
partículas detectadas dentro de ella provienen de diferentes decaimientos. El número
resultante de coincidencias detectadas en esta ventan demorada aproxima el número
51
de eventos aleatorios contados en la ventana pronta. GATE ofrece la posibilidad de especicar un valor de desplazamiento, para el ordenador de coincidencias, asi que lineas
prontas y/o demoradas pueden ser simuladas. Volviendo a nuestro código, en las líneas
151 hasta 154
/gate/digitizer/name demora
/gate/digitizer/insert coincidenceSorter
/gate/digitizer/demora/setWindow 10. ns
/gate/digitizer/demora/setOset 500. ns
denimos a nuestro ordenador de coincidencias demora con una ventana de tiempo de
10 ns, y un valor de desplazamiento igual a 500 ns. La línea 155
/gate/source/addSource mipositronC11
luego se agrega la línea 156
/gate/source/mipositronC11/gps/particle e+
para especicar que mipositronC11 es una partícula gps de tipo positrón. La línea 157
/gate/source/mipositronC11/gps/energytype Carbon11
especica que la distribución de energía de estos positrones corresponden al decaimiento
del isotopo de Carbono 11 en: un isotopo de Borón 11 mas un positrón mas un neutrino
electrónico mas una energía de 0.96 MeV:
11
C→
11
B + e+ + νe +
0.96 MeV.
(2.9)
Estos decaimientos no son simulados, pero si la energíga de los positrones y el tiempo
de vida media. La línea 158
/gate/source/mipositronC11/setActivity 100 becquerel
establece la actividad de la fuente mipositronC11 a 100 Bq. Un Bq es una unidad del
sistema internacional de medidas que es equivalente a 1/s. La línea 159
/gate/source/mipositronC11/setForcedUnstableFlag true
nos dice que mipositronC11 es que nuestros positrones pueden decaer en otras partículas. La línea 160
/gate/source/mipositronC11/setForcedHalfLife 1223 s
establece un nuevo tiempo de vida media de 1223 segundos para los positrones con una
distribución de energía a la isotopo de Carbono 11. La línea 161
/gate/source/mipositronC11/gps/angtype iso
52
nos dice que la emisión de la fuente mipositronC11 es isotrópica en los angulos
θ
y
φ de
coordenadas esféricas; éste comportamiento puede cambiar si aplicamos otros comandos
explicitos para ello. La línea 162 /gate/source/list nos indica que todos los datos de la
fuente fueron agregados a la lista de de la simulación. Las líneas 163 a 168
/gate/output/root/enable
/gate/output/root/setFileName YourFile
/gate/output/root/setRootHitFlag 0
/gate/output/root/setRootSinglesFlag 1
/gate/output/root/setRootCoincidencesFlag 1
/gate/output/root/setRootdemoraFlag 1
habilitan el archivo de salida tipo ROOT llamado YourFile y en el se almacenarán los
impactos, los simples, las coincidencias con encontradas con el algoritmo que viene por
defecto, además de las coincidencias usando el algoritmo de coincidencias demoradas.
Vale notar que el comando del archivo de coincidencias demoradas usa el nombre del
introducido en la línea 151, i.e. la línea 168 usa la sintaxis
/gate/output/root/setRoot<NombreCoincidenciasDemoradas>Flag 1.
Las líneas 169 a 171
/gate/random/setEngineName JamesRandom
/gate/random/setEngineSeed default
/gate/random/verbose 1
establecen el algoritmo de números aleatorios a la máquina JamesRandom y la semilla
es la que viene por defecto y la verborrea será impresa. Finalmente las líneas 172 a 175
/gate/application/setTimeSlice 1 s
/gate/application/setTimeStart 0 s
/gate/application/setTimeStop 6 s
/gate/application/startDAQ
especica las características de la aplicación. Cada tajada
slice
de simulación es el
tiempo necesario para que una corrida completa de adquisición de datos ocurra, en este
caso cada tajada de simulación dura 1 segundo. El tiempo de inicio de la simulación se
establece a cero y el tiempo nal a 6 segundos; luego habrán 6 tajadas de simulación
que usualmente se le dice en el mundo de la física de colisionadores como un evento. La
última línea dice que se de inicio a la simulación, o lo que es lo mismo, que empiece la
adquisición de datos (
1
2
3
4
5
6
7
8
9
10
Data AcQuisition ).
/ v i s / open OGLSX
/ v i s / v i e w e r / s e t / v i e w p o i n t T h e t a P h i 60 60
/ v i s / v i e w e r /zoom 6 . 0
/ v i s /drawVolume
/ tracking / storeTrajectory 1
/ v i s / s c e n e /add/ t r a j e c t o r i e s
/ v i s / s c e n e / endOfEventAction accumulate
/ gate / verbose Physic 5
/ g a t e / v e r b o s e Cuts 0
/ g a t e / v e r b o s e SD 0
53
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/ gate / verbose Actions 0
/ g a t e / v e r b o s e Actor 0
/ g a t e / v e r b o s e Step 0
/ gate / verbose Error 0
/ g a t e / v e r b o s e Warning 0
/ g a t e / v e r b o s e Output 0
/ g a t e / v e r b o s e Beam 0
/ g a t e / v e r b o s e Volume 0
/ g a t e / v e r b o s e Image 0
/ g a t e / v e r b o s e Geometry 0
/ g a t e / v e r b o s e Core 0
/ run / v e r b o s e 0
/ event / verbose 0
/ tracking / verbose 0
/ g a t e / geometry / s e t M a t e r i a l D a t a b a s e G a t e M a t e r i a l s . db
/ g a t e / world / geometry / setXLength 4 0 0 . cm
/ g a t e / world / geometry / setYLength 4 0 0 . cm
/ g a t e / world / geometry / s etZL ength 4 0 0 . cm
/ g a t e / world / d a u g h t e r s /name c y l i n d r i c a l P E T
/ g a t e / world / d a u g h t e r s / i n s e r t c y l i n d e r
/ g a t e / c y l i n d r i c a l P E T / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 0 . 0 cm
/ g a t e / c y l i n d r i c a l P E T / geometry /setRmax 5 2 . 0 cm
/ g a t e / c y l i n d r i c a l P E T / geometry / setRmin 3 9 . 9 cm
/ g a t e / c y l i n d r i c a l P E T / geometry / s e t H e i g h t 4 0 . 2 cm
/ g a t e / c y l i n d r i c a l P E T / s e t M a t e r i a l Air
/ gate / cylindricalPET / v i s / forceWireframe
/ gate / cylindricalPET / v i s / setC olor white
/ g a t e / c y l i n d r i c a l P E T / d a u g h t e r s /name c a b e z a
/ g a t e / c y l i n d r i c a l P E T / d a u g h t e r s / i n s e r t box
/ g a t e / c a b e z a / placement / s e t T r a n s l a t i o n 4 4 . 0 0 . 0 0 . 0 cm
/ g a t e / c a b e z a / geometry / setXLength 8 cm
/ g a t e / c a b e z a / geometry / setYLength 32 cm
/ g a t e / c a b e z a / geometry / s etZL engt h 40 cm
/ g a t e / c a b e z a / s e t M a t e r i a l Air
/ gate / cabeza / v i s / s e t V i s i b l e 0
/ g a t e / c a b e z a / d a u g h t e r s /name b l o q u e
/ g a t e / c a b e z a / d a u g h t e r s / i n s e r t box
/ g a t e / b l o q u e / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 0 . 0 cm
/ g a t e / b l o q u e / geometry / setXLength 30 mm
/ g a t e / b l o q u e / geometry / setYLength 16 mm
/ g a t e / b l o q u e / geometry / s etZL ength 20 mm
/ g a t e / b l o q u e / s e t M a t e r i a l Air
/ gate / bloque / v i s / s e t V i s i b l e 0
/ g a t e / b l o q u e / d a u g h t e r s /name c r i s t a l
/ g a t e / b l o q u e / d a u g h t e r s / i n s e r t box
/ g a t e / c r i s t a l / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 0 . 0 cm
/ g a t e / c r i s t a l / geometry / setXLength 30 mm
/ g a t e / c r i s t a l / geometry / setYLength 3 . 0 mm
/ g a t e / c r i s t a l / geometry / s etZLe ngth 3 . 8 mm
/ g a t e / c r i s t a l / s e t M a t e r i a l Air
/ gate / c r i s t a l / v i s / s e t V i s i b l e 0
/ g a t e / c r i s t a l / d a u g h t e r s /name miDetectorLSO
54
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/ g a t e / c r i s t a l / d a u g h t e r s / i n s e r t box
/ g a t e / miDetectorLSO / placement / s e t T r a n s l a t i o n − 0.75 0 . 0 0 . 0 cm
/ g a t e / miDetectorLSO / geometry / setXLength 15 mm
/ g a t e / miDetectorLSO / geometry / setYLength 3 . 0 mm
/ g a t e / miDetectorLSO / geometry / s etZLe ngth 3 . 8 mm
/ g a t e / miDetectorLSO / s e t M a t e r i a l LSO
/ g a t e / miDetectorLSO / v i s / s e t C o l o r r e d
/ g a t e / c r i s t a l / d a u g h t e r s /name miDetectorBGO
/ g a t e / c r i s t a l / d a u g h t e r s / i n s e r t box
/ g a t e /miDetectorBGO/ placement / s e t T r a n s l a t i o n +0.75 0 . 0 0 . 0 cm
/ g a t e /miDetectorBGO/ geometry / setXLength 15 mm
/ g a t e /miDetectorBGO/ geometry / setYLength 3 . 0 mm
/ g a t e /miDetectorBGO/ geometry / set ZLeng th 3 . 8 mm
/ g a t e /miDetectorBGO/ s e t M a t e r i a l BGO
/ g a t e /miDetectorBGO/ v i s / s e t C o l o r y e l l o w
/ gate / c r i s t a l / r e p e a t e r s / i n s e r t cubicArray
/ g a t e / c r i s t a l / c u b i c A r r a y / setRepeatNumberX 1
/ g a t e / c r i s t a l / c u b i c A r r a y / setRepeatNumberY 5
/ g a t e / c r i s t a l / c u b i c A r r a y / setRepeatNumberZ 5
/ g a t e / c r i s t a l / c u b i c A r r a y / s e t R e p e a t V e c t o r 0 . 0 3 . 2 4 . 0 mm
/ gate / bloque / r e p e a t e r s / i n s e r t cubicArray
/ g a t e / b l o q u e / c u b i c A r r a y / setRepeatNumberX 1
/ g a t e / b l o q u e / c u b i c A r r a y / setRepeatNumberY 20
/ g a t e / b l o q u e / c u b i c A r r a y / setRepeatNumberZ 20
/ g a t e / b l o q u e / c u b i c A r r a y / s e t R e p e a t V e c t o r 0 . 0 1 . 6 2 . 0 cm
/ gate / cabeza / r e p e a t e r s / i n s e r t r i n g
/ g a t e / c a b e z a / r i n g / setRepeatNumber 4
/ gate / systems / cylindricalPET / r s e c t o r / attach cabeza
/ g a t e / s y s t e m s / c y l i n d r i c a l P E T / module / a t t a c h b l o q u e
/ gate / systems / cylindricalPET / c r y s t a l / attach c r i s t a l
/ g a t e / s y s t e m s / c y l i n d r i c a l P E T / l a y e r 0 / a t t a c h miDetectorLSO
/ g a t e / s y s t e m s / c y l i n d r i c a l P E T / l a y e r 1 / a t t a c h miDetectorBGO
/ g a t e / miDetectorLSO / a t t a c h C r y s t a l S D
/ g a t e /miDetectorBGO/ a t t a c h C r y s t a l S D
/ gate / systems / cylindricalPET / d e s c r i b e
/ g a t e / c y l i n d r i c a l P E T / moves / i n s e r t o r b i t i n g
/ g a t e / c y l i n d r i c a l P E T / o r b i t i n g / s e t S p e e d 30 deg / s
/ g a t e / c y l i n d r i c a l P E T / o r b i t i n g / s e t P o i n t 1 0 0 0 cm
/ g a t e / c y l i n d r i c a l P E T / o r b i t i n g / s e t P o i n t 2 0 0 1 cm
/ g a t e / world / d a u g h t e r s /name fantasma
/ g a t e / world / d a u g h t e r s / i n s e r t box
/ g a t e / fantasma / geometry / setXLength 10 cm
/ g a t e / fantasma / geometry / setYLength 10 cm
/ g a t e / fantasma / geometry / setZ Leng th 10 cm
/ g a t e / fantasma / s e t M a t e r i a l Water
/ g a t e / fantasma / v i s / f o r c e S o l i d
/ g a t e / fantasma / v i s / s e t C o l o r b l u e
/ g a t e / fantasma / attachPhantomSD
/ gate / physics / addProcess PhotoElectric
/ g a t e / p h y s i c s / a d d P r o c e s s Compton
/ g a t e / p h y s i c s / a d d P r o c e s s GammaConversion
/ gate / physics / addProcess LowEnergyRayleighScattering
55
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
/ gate / physics / addProcess E l e c t r o n I o n i s a t i o n
/ gate / p h y s i c s / addProcess Bremsstrahlung
/ gate / physics / addProcess PositronAnnihilationStd
/ g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e+
/ g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e−
/ g a t e / p h y s i c s / p r o c e s s L i s t Enabled
/ gate / physics / p r o c e s s L i s t I n i t i a l i z e d
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion miDetectorLSO 1 . 0 cm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion miDetectorLSO 1 . 0 cm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion miDetectorLSO 1 . 0 cm
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion miDetectorBGO 1 . 0 cm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion miDetectorBGO 1 . 0 cm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion miDetectorBGO 1 . 0 cm
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion fantasma 0 . 1 mm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion fantasma 0 . 1 mm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion fantasma 0 . 1 mm
/ g a t e / p h y s i c s / SetMaxStepSizeInRegion fantasma 0 . 0 1 mm
/ g a t e / run / i n i t i a l i z e
/ g a t e / t i m i n g / setTime 0 . s
/ g a t e / t i m i n g / setTime 1 s
/ g a t e / t i m i n g / setTime 2 s
/ g a t e / t i m i n g / setTime 3 s
/ g a t e / t i m i n g / setTime 4 s
/ g a t e / t i m i n g / setTime 5 s
/ g a t e / t i m i n g / setTime 6 s
/ g a t e / d i g i t i z e r / S i n g l e s / i n s e r t adder
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t readout
/ g a t e / d i g i t i z e r / S i n g l e s / r e a d o u t / setDepth 1
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t blurring
/ gate / d i g i t i z e r / S i n g l e s / blurring / setResolution 0.26
/ g a t e / d i g i t i z e r / S i n g l e s / b l u r r i n g / s e t E n e r g y O f R e f e r e n c e 5 1 1 . keV
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t thresholder
/ g a t e / d i g i t i z e r / S i n g l e s / t h r e s h o l d e r / s e t T h r e s h o l d 3 5 0 . keV
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t upholder
/ g a t e / d i g i t i z e r / S i n g l e s / u p h o l d e r / setUphold 6 5 0 . keV
/ g a t e / d i g i t i z e r / C o i n c i d e n c e s / setWindow 1 0 . ns
/ g a t e / d i g i t i z e r /name demora
/ gate / d i g i t i z e r / i n s e r t coincidenceSorter
/ g a t e / d i g i t i z e r / demora / setWindow 1 0 . ns
/ g a t e / d i g i t i z e r / demora / s e t O f f s e t 5 0 0 . ns
/ g a t e / s o u r c e / addSource m i p o s i t r o n C 1 1
/ g a t e / s o u r c e / m i p o s i t r o n C 1 1 / gps / p a r t i c l e e+
/ g a t e / s o u r c e / m i p o s i t r o n C 1 1 / gps / e n e r g y t y p e Carbon11
/ g a t e / s o u r c e / m i p o s i t r o n C 1 1 / s e t A c t i v i t y 100 b e c q u e r e l
/ gate / source / mipositronC11 / setForcedUnstableFlag true
/ g a t e / s o u r c e / m i p o s i t r o n C 1 1 / s e t F o r c e d H a l f L i f e 1223 s
/ g a t e / s o u r c e / m i p o s i t r o n C 1 1 / gps / angtype i s o
/ gate / source / l i s t
/ g a t e / output / r o o t / e n a b l e
/ g a t e / output / r o o t / s etF ileN ame Y o u r F i l e
/ g a t e / output / r o o t / s e t R o o t H i t F l a g 0
/ g a t e / output / r o o t / s e t R o o t S i n g l e s F l a g 1
56
167
168
169
170
171
172
173
174
175
/ g a t e / output / r o o t / s e t R o o t C o i n c i d e n c e s F l a g 1
/ g a t e / output / r o o t / setRootdemoraFlag 1
/ g a t e /random/ setEngineName JamesRandom
/ g a t e /random/ s e t E n g i n e S e e d d e f a u l t
/ g a t e /random/ v e r b o s e 1
/ gate / a p p l i c a t i o n / setTimeSlice 1 s
/ gate / a p p l i c a t i o n / setTimeStart 0 s
/ g a t e / a p p l i c a t i o n / setTimeStop 6 s
/ g a t e / a p p l i c a t i o n / startDAQ
2.4.2.
Sistema ecat
El código que analizaremos se llama
PET_Ecat_System.mac y realiza una simulación
utilizando archivos de salida tipo sinogramas ecat. Las líneas 1 a 28 de este código son
idénticas al código anterior, la línea 29 /gate/world/daughters/name ecat introduce
una hija de world, en este caso un sistema ecat (nuevamente este nombre del sistema
no se puede cambiar). Las líneas 31 a 37
world
ecat
fantasma
cristal
bloque
micarter
micarter1
micarter2
micarter3
micarter4
Figura 2.2: Geometría del detector ecat presente en PET_Ecat_System.mac. La echa
indica que un volumen apunta a la volumen hija
/gate/ecat/geometry/setRmax 44.2 cm
/gate/ecat/geometry/setRmin 41.2 cm
57
/gate/ecat/geometry/setHeight 15.52 cm
/gate/ecat/setMaterial Air
/gate/ecat/vis/forceWireframe
/gate/ecat/daughters/name bloque
/gate/ecat/daughters/insert box
denen la geometría del ecat como un anillo de radio externo igual a 44.2 cm y radio
interno igual a 41.2 cm, el largo en
z
igual a 2×15.52 cm; el material es aire, la visu-
alización de ecat se hace por medio de cables e introducimos una hija de ecat llamada
bloque y que tiene forma de caja. Las líneas 38 a 45
/gate/bloque/placement/setTranslation 427.0 0.0 0.0 mm
/gate/bloque/geometry/setXLength 30.0 mm
/gate/bloque/geometry/setYLength 35.8594 mm
/gate/bloque/geometry/setZLength 38.7 mm
/gate/bloque/setMaterial Air
/gate/bloque/vis/forceWireframe
/gate/bloque/daughters/name cristal
/gate/bloque/daughters/insert box
colocan a bloque en la posición (427, 0, 0)mm del marco de referencia de ecat. Las
dimensiones de bloque se establecen a 2×(30, 358.8594, 38.7)mm, el material de bloque
es aire y la opción de visualización es de cables. Además de eso se le asigna una hija
llamada cristal de geometría de caja. Las líneas 46 a 55
/gate/cristal/geometry/setXLength 30.0 mm
/gate/cristal/geometry/setYLength 4.4 mm
/gate/cristal/geometry/setZLength 4.75 mm
/gate/cristal/setMaterial BGO
/gate/cristal/vis/setColor yellow
/gate/cristal/repeaters/insert cubicArray
/gate/cristal/cubicArray/setRepeatNumberX 1
/gate/cristal/cubicArray/setRepeatNumberY 8
/gate/cristal/cubicArray/setRepeatNumberZ 8
/gate/cristal/cubicArray/setRepeatVector 0. 4.4942 4.85 mm
establecen las longitudes de cristal a 2×(30, 4.4, 4.75)mm, el material es cristal a BGO
(Bi4 Ge3 O12 ), el color de cristal es amarillo, se repite cristal mediante un arreglo cubico
1 × 8 × 8 = 64
veces, con posiciones empezando en (0, -31.4594, -33.95) mm y termi-
nando en (0, 31.4594, 33.95) mm, con un paso de repetición de 2×(0, 4.4942, 4.85) mm.
Ahora bien, teniendo ya a cristal repetido dentro de bloque, podemos repetir bloque.
En las líneas 56 a 58
/gate/bloque/repeaters/insert linear
/gate/bloque/linear/setRepeatNumber 4
/gate/bloque/linear/setRepeatVector 0. 0. 38.8 mm
inserta un repetidor lineal y repite 4 veces a bloque en el eje
58
z
con un paso de 2×38.8
mm. La formula general para un repetidor lineal es:
~
P~ (a) = P~0 + 2aR
donde
entero
~ es el
R
a toma
(2.10)
vector de repetición establecido por el comando
setRepeatVector.
El
valores de la misma manera como se explico en el repetidor de arreglo
cubico, desde 1 hasta el valor establecido por el comando
setRepeatNumber. Debido al
autocentrado que esta puesto por defecto, los vectores de posición de los bloques irán
desde
hasta
1 − a
~
P
2
a
~
P
max
max
− 1
2
= P~0 + (1 − a
= P~0 + (a
max
~
)R
(2.11)
~
− 1)R.
(2.12)
max
Por ejemplo para este caso en particular, las posiciones iniciales y nales del cluster de
bloques son: (427, 0, -116.4)mm hasta (427, 0, 116.4)mm. Las líneas 59 y 60
/gate/bloque/repeaters/insert ring
/gate/bloque/ring/setRepeatNumber 72
nos indican que vamos a volver a repetir a bloque (el cluster de bloques), pero esta vez
el repetidor es un anillo, con el eje
z
(el que viene por defecto) como eje de rotación.
Bloque se repite 72 veces, luego cada posición viene dada cada
el cluster de bloques contará con
4 × 72 = 288
2π/72 radianes.
Al nal
bloques. Las líneas 61 a 68
/gate/world/daughters/name micarter
/gate/world/daughters/insert cylinder
/gate/micarter/setMaterial Air
/gate/micarter/geometry/setRmax 44. cm
/gate/micarter/geometry/setRmin 28. cm
/gate/micarter/geometry/setHeight 9. cm
/gate/micarter/placement/setTranslation 0.0 0.0 12.5 cm
/gate/micarter/vis/forceWireframe
introducen otro hija de mundo llamado micarter como un cilindro hueco hecho de aire,
con radio interno de 28 cm, radio externo de 44 cm, altura de 2×9=18 cm y lo ubica en
la posicion (0, 0, 12.5)cm del marco de referencia de mundo, además de eso, micarter
viene visualizado con cables. Las líneas 69 a 76
/gate/micarter/daughters/name micarter1
/gate/micarter/daughters/insert cylinder
/gate/micarter1/setMaterial Tungsten
/gate/micarter1/geometry/setRmax 30.0 cm
/gate/micarter1/geometry/setRmin 29.0 cm
/gate/micarter1/geometry/setHeight 3.0 cm
/gate/micarter1/vis/setColor grey
/gate/micarter1/placement/setTranslation 0.0 0.0 -3 cm
crean una hija de micarter llamada carter1 con las especicaciones indicadas arriba.
Las líneas 77 a 84
59
/gate/micarter/daughters/name micarter2
/gate/micarter/daughters/insert cylinder
/gate/micarter2/setMaterial Tungsten
/gate/micarter2/geometry/setRmax 40.7 cm
/gate/micarter2/geometry/setRmin 30.0 cm
/gate/micarter2/geometry/setHeight 1.0 cm
/gate/micarter2/vis/setColor grey
/gate/micarter2/placement/setTranslation 0.0 0.0 -2 cm
crean una hija de micarter llamada micarter2 con las especicaciones indicadas arriba.
Las líneas 85 a 92
/gate/micarter/daughters/name micarter3
/gate/micarter/daughters/insert cylinder
/gate/micarter3/setMaterial Tungsten
/gate/micarter3/geometry/setRmax 40.7 cm
/gate/micarter3/geometry/setRmin 39.7 cm
/gate/micarter3/geometry/setHeight 3.0 cm
/gate/micarter3/vis/setColor grey
/gate/micarter3/placement/setTranslation 0.0 0.0 0 cm
crean una hija de micarter llamada micarter3 con las especicaciones indicadas arriba.
Las líneas 93 a 100
/gate/micarter/daughters/name micarter4
/gate/micarter/daughters/insert cylinder
/gate/micarter4/setMaterial Tungsten
/gate/micarter4/geometry/setRmax 43.7 cm
/gate/micarter4/geometry/setRmin 40.7 cm
/gate/micarter4/geometry/setHeight 1.0 cm
/gate/micarter4/vis/setColor grey
/gate/micarter4/placement/setTranslation 0.0 0.0 1 cm
crean una hija de micarter llamada micarter4 con las especicaciones indicadas arriba.
Las líneas 101 a 103
/gate/systems/ecat/block/attach bloque
/gate/systems/ecat/crystal/attach cristal
/gate/cristal/attachCrystalSD
atan los volumenes bloque a block, cristal a crystal, y además se especica que cristal
es un detector sensitivo. Las líneas 104 a 110
/gate/world/daughters/name fantasma
/gate/world/daughters/insert cylinder
/gate/fantasma/setMaterial Water
/gate/fantasma/vis/setColor green
/gate/fantasma/geometry/setRmax 10.0 cm
/gate/fantasma/geometry/setHeight 20. cm
/gate/fantasma/attachPhantomSD
crean a nuestro fantasma como una hija de mundo, y ademaás este fantasma es un de-
60
tector sensitivo de fantasma. El resto de especicaciones las podemos ver en el código.
Las líneas 111 a 121
/gate/physics/addProcess PhotoElectric
/gate/physics/addProcess Compton
/gate/physics/addProcess GammaConversion
/gate/physics/addProcess LowEnergyRayleighScattering
/gate/physics/addProcess ElectronIonisation
/gate/physics/addProcess Bremsstrahlung
/gate/physics/addProcess PositronAnnihilationStd
/gate/physics/addProcess MultipleScattering e+
/gate/physics/addProcess MultipleScattering e/gate/physics/processList Enabled
/gate/physics/processList Initialized
introducen los procesos físicos que estan presentes en la simulación, los habilita y los
inicializa. Las líneas 122 a 129
/gate/physics/Gamma/SetCutInRegion cristal 1.0 cm
/gate/physics/Electron/SetCutInRegion cristal 1.0 cm
/gate/physics/Positron/SetCutInRegion cristal 1.0 cm
/gate/physics/Gamma/SetCutInRegion fantasma 0.1 mm
/gate/physics/Electron/SetCutInRegion fantasma 0.1 mm
/gate/physics/Positron/SetCutInRegion fantasma 0.1 mm
/gate/physics/SetMaxStepSizeInRegion fantasma 0.01 mm
/gate/run/initialize
establecen los valores de corte para fotón, electrón y positrón para evitar divergencias
infrarrojas en los volumenes cristal y fantasma. Líneas 130 a 157
/gate/digitizer/Singles/insert adder
/gate/digitizer/Singles/insert readout
/gate/digitizer/Singles/readout/setDepth 1
/gate/digitizer/Singles/insert blurring
/gate/digitizer/Singles/blurring/setResolution 0.26
/gate/digitizer/Singles/blurring/setEnergyOfReference 511. keV
/gate/digitizer/Singles/insert thresholder
/gate/digitizer/Singles/thresholder/setThreshold 250. keV
/gate/digitizer/Singles/insert upholder
/gate/digitizer/Singles/upholder/setUphold 750. keV
/gate/digitizer/Singles/insert deadtime
/gate/digitizer/Singles/deadtime/setDeadTime 3000000. ps
/gate/digitizer/Singles/deadtime/setMode paralysable
/gate/digitizer/Singles/deadtime/chooseDTVolume bloque
/gate/digitizer/Coincidences/setWindow 10. ns
/gate/digitizer/Coincidences/setOset 0. ns
/gate/digitizer/Coincidences/describe
/gate/digitizer/name demora
61
/gate/digitizer/insert coincidenceSorter
/gate/digitizer/demora/setWindow 10. ns
/gate/digitizer/demora/setOset 500. ns
/gate/digitizer/demora/describe
/gate/digitizer/name coincidenciasFinales
/gate/digitizer/insert coincidenceChain
/gate/digitizer/coincidenciasFinales/addInputName demora
/gate/digitizer/coincidenciasFinales/addInputName Coincidences
/gate/digitizer/coincidenciasFinales/usePriority true
/gate/digitizer/coincidenciasFinales/describe
introduce toda la parte de digitalización. En las líneas 158 a 160
/gate/random/setEngineName JamesRandom
/gate/random/setEngineSeed default
/gate/random/verbose 1
usamos el generador de números aleatorios llamado JamesRandom, dejamos la semilla
que viene por defecto e imprimimos la información en nivel 1. Líneas 161 a 167
/gate/output/root/enable
/gate/output/root/setFileName YourPETSimu
/gate/output/root/setRootSinglesAdderFlag 1
/gate/output/root/setRootSinglesReadoutFlag 1
/gate/output/root/setRootHitFlag 1
/gate/output/root/setRootSinglesFlag 1
/gate/output/root/setRootCoincidencesFlag 1
Líneas 168 a 177
/gate/output/sinogram/enable
/gate/output/sinogram/setTangCrystalBlurring 1.8 mm
/gate/output/sinogram/setAxialCrystalBlurring 1.8 mm
/gate/output/sinogram/verbose 2
/gate/output/sinogram/RawOutputEnable false
/gate/output/sinogram/setFileName yourSinogram
/gate/output/sinogram/StoreDelayeds
/gate/output/sinogram/StoreScatters
/gate/output/sinogram/setInputDataName coincidenciasFinales
/gate/output/sinogram/describe
habilitan la creación de un archivo tipo sinograma con las especicaciones dadas a continuación. Los eventos coincidentes son almacenados en un arreglo de sinogramas 2D.
Hay un sinograma 2D por cada par de anillos. Hay una correspondencia uno a uno entre
bines de sinogramas y líneas de respuesta (LOR) juntando dos cristales en coincidencia. El asignamiento del bin del sinograma no es basado en las verdaderas posiciones
radiales y azimutales del LOR, pero si en el indice de los cristales. Esto signica que
los sinogramas estan sujetos a los efectos de curvatura. Por defecto, todos los eventos coincidentes son almacenados, a pesar de sus origenes (aleatorio, verdaderamente
no dispersado, verdaderamente dispersado). Es posible descartar eventos aleatorios por
62
medio del comando
/gate/output/sinogram/TruesOnly true
En los verdaderos, coincidencias dispersas y no dispersas son incluidas. No hay simulación de una ventana de coincidencia demorada. Al comienzo de cada corrida, el
contenido de los sinogramas 2D es restablecido a cero. Al nal de cada corrida los contenidos de los sinogramas 2D pueden ser opcionalmente escritos a un archivo crudo (uno
por corrida), pero esta característica tiene que ser habilitada por medio del comando
/gate/output/sinogram/RawOutputEnable True
pero en nuestro caso en la línea 172 no fue habilitada. Líneas 178 a 188
/gate/output/ecat7/enable
/gate/output/ecat7/verbose 2
/gate/output/ecat7/setFileName yourSinogram
/gate/output/ecat7/describe
/gate/output/ecat7/mashing 2
/gate/output/ecat7/span 9
/gate/output/ecat7/maxringdi 22
/gate/output/ecat7/system 962
/gate/output/ecat7/IsotopeCode F-18
/gate/output/ecat7/IsotopeHalife 6586.2 second
/gate/output/ecat7/IsotopeBranchingFraction 1.0
muestran como habilitar un archivo de salida tipo ecat7 con nivel de verborrea igual a 2 y
llamado yourSinogram. El sistema coordenado de una línea de Respuesta LOR se dene
por la diferencia de los índices de los anillos-cristales de dos anillos en coincidencia.
Para un escaner con
por
2N − 1.
N
anillos-cristales, el número total de muestras simples es dada
Usualmente no se almacenan todas las diferencias de anillos-cristales en
sistemas ecat. Sólo se graban las diferencias absolutas hasta un valor dado, referido como
la diferencia de anillo máxima, esta diferencia de anillo máxima se dene mediante el
comando de la línea 184.
La gura 2.3 muestra el signicado de maxringdi. Para mas información sobre el
sistema ecat, usted puede leer las siguientes referencias: [7]. Las líneas 189 a 205
/gate/verbose Physic 5
/gate/verbose Cuts 0
/gate/verbose SD 0
/gate/verbose Actions 0
/gate/verbose Actor 0
/gate/verbose Step 0
/gate/verbose Error 0
/gate/verbose Warning 0
63
Figura 2.3: Michelograma para un sistema escaner de 16 anillo-cristales
/gate/verbose Output 0
/gate/verbose Beam 0
/gate/verbose Volume 0
/gate/verbose Image 0
/gate/verbose Geometry 0
/gate/verbose Core 0
/run/verbose 0
/event/verbose 0
/tracking/verbose 0
como es bien sabido, hacen referencia a la información que se imprime en pantalla.
Líneas 206 a 218
/gate/source/addSource F18CylinderSource
/gate/source/F18CylinderSource/setActivity 10000. becquerel
/gate/source/F18CylinderSource/gps/particle e+
/gate/source/F18CylinderSource/setForcedUnstableFlag true
/gate/source/F18CylinderSource/setForcedHalfLife 6586 s
/gate/source/F18CylinderSource/gps/energytype Fluor18
/gate/source/F18CylinderSource/gps/type Volume
/gate/source/F18CylinderSource/gps/shape Cylinder
/gate/source/F18CylinderSource/gps/radius 0.5 mm
/gate/source/F18CylinderSource/gps/halfz 0.5 mm
/gate/source/F18CylinderSource/gps/angtype iso
/gate/source/F18CylinderSource/gps/centre 0.0 0.0 0. cm
/gate/source/list
64
añaden una fuente de un isotopo de Fluor 18 de geometría cilindrica con una actividad
radioactiva de 10000 Becquerel el cual lanza positrones. Finalmente las líneas 219 a 222
/gate/application/setTimeSlice 1. s
/gate/application/setTimeStart 0. s
/gate/application/setTimeStop 1. s
/gate/application/startDAQ
establecen el tiempo necesario para una adquisiciçón de datos, establce el tiempo de
inicio y el de nalización, y comienza la adquisición de datos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/ v i s / open OGLSX
/ v i s / v i e w e r / s e t / v i e w p o i n t T h e t a P h i 60 60
/ v i s / v i e w e r /zoom 6 . 0
/ v i s /drawVolume
/ tracking / storeTrajectory 1
/ v i s / s c e n e /add/ t r a j e c t o r i e s
/ v i s / s c e n e / endOfEventAction accumulate
/ gate / verbose Physic 5
/ g a t e / v e r b o s e Cuts 0
/ g a t e / v e r b o s e SD 0
/ gate / verbose Actions 0
/ g a t e / v e r b o s e Actor 0
/ g a t e / v e r b o s e Step 0
/ gate / verbose Error 0
/ g a t e / v e r b o s e Warning 0
/ g a t e / v e r b o s e Output 0
/ g a t e / v e r b o s e Beam 0
/ g a t e / v e r b o s e Volume 0
/ g a t e / v e r b o s e Image 0
/ g a t e / v e r b o s e Geometry 0
/ g a t e / v e r b o s e Core 0
/ run / v e r b o s e 0
/ event / verbose 0
/ tracking / verbose 0
/ g a t e / geometry / s e t M a t e r i a l D a t a b a s e G a t e M a t e r i a l s . db
/ g a t e / world / geometry / setXLength 4 0 0 . cm
/ g a t e / world / geometry / setYLength 4 0 0 . cm
/ g a t e / world / geometry / s etZL ength 4 0 0 . cm
/ g a t e / world / d a u g h t e r s /name e c a t
/ g a t e / world / d a u g h t e r s / i n s e r t c y l i n d e r
/ g a t e / e c a t / geometry /setRmax 4 4 . 2 cm
/ g a t e / e c a t / geometry / setRmin 4 1 . 2 cm
/ g a t e / e c a t / geometry / s e t H e i g h t 1 5 . 5 2 cm
/ g a t e / e c a t / s e t M a t e r i a l Air
/ gate / ecat / v i s / forceWireframe
/ g a t e / e c a t / d a u g h t e r s /name b l o q u e
/ g a t e / e c a t / d a u g h t e r s / i n s e r t box
/ g a t e / b l o q u e / placement / s e t T r a n s l a t i o n 4 2 7 . 0 0 . 0 0 . 0 mm
/ g a t e / b l o q u e / geometry / setXLength 3 0 . 0 mm
/ g a t e / b l o q u e / geometry / setYLength 3 5 . 8 5 9 4 mm
/ g a t e / b l o q u e / geometry / s etZL ength 3 8 . 7 mm
/ g a t e / b l o q u e / s e t M a t e r i a l Air
65
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
/ gate / bloque / v i s / forceWireframe
/ g a t e / b l o q u e / d a u g h t e r s /name c r i s t a l
/ g a t e / b l o q u e / d a u g h t e r s / i n s e r t box
/ g a t e / c r i s t a l / geometry / setXLength 3 0 . 0 mm
/ g a t e / c r i s t a l / geometry / setYLength 4 . 4 mm
/ g a t e / c r i s t a l / geometry / s etZLe ngth 4 . 7 5 mm
/ g a t e / c r i s t a l / s e t M a t e r i a l BGO
/ gate / c r i s t a l / v i s / setColor yellow
/ gate / c r i s t a l / r e p e a t e r s / i n s e r t cubicArray
/ g a t e / c r i s t a l / c u b i c A r r a y / setRepeatNumberX 1
/ g a t e / c r i s t a l / c u b i c A r r a y / setRepeatNumberY 8
/ g a t e / c r i s t a l / c u b i c A r r a y / setRepeatNumberZ 8
/ g a t e / c r i s t a l / c u b i c A r r a y / s e t R e p e a t V e c t o r 0 . 4 . 4 9 4 2 4 . 8 5 mm
/ gate / bloque / r e p e a t e r s / i n s e r t l i n e a r
/ g a t e / b l o q u e / l i n e a r / setRepeatNumber 4
/ g a t e / b l o q u e / l i n e a r / s e t R e p e a t V e c t o r 0 . 0 . 3 8 . 8 mm
/ gate / bloque / r e p e a t e r s / i n s e r t ring
/ g a t e / b l o q u e / r i n g / setRepeatNumber 72
/ g a t e / world / d a u g h t e r s /name m i c a r t e r
/ g a t e / world / d a u g h t e r s / i n s e r t c y l i n d e r
/ g a t e / m i c a r t e r / s e t M a t e r i a l Air
/ g a t e / m i c a r t e r / geometry /setRmax 4 4 . cm
/ g a t e / m i c a r t e r / geometry / setRmin 2 8 . cm
/ g a t e / m i c a r t e r / geometry / s e t H e i g h t 9 . cm
/ g a t e / m i c a r t e r / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 1 2 . 5 cm
/ gate / micarter / v i s / forceWireframe
/ g a t e / m i c a r t e r / d a u g h t e r s /name m i c a r t e r 1
/ gate / micarter / daughters / i n s e r t c y l i n d e r
/ g a t e / m i c a r t e r 1 / s e t M a t e r i a l Tungsten
/ g a t e / m i c a r t e r 1 / geometry /setRmax 3 0 . 0 cm
/ g a t e / m i c a r t e r 1 / geometry / setRmin 2 9 . 0 cm
/ g a t e / m i c a r t e r 1 / geometry / s e t H e i g h t 3 . 0 cm
/ gate / micarter1 / v i s / setColor grey
/ g a t e / m i c a r t e r 1 / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 −3 cm
/ g a t e / m i c a r t e r / d a u g h t e r s /name m i c a r t e r 2
/ gate / micarter / daughters / i n s e r t c y l i n d e r
/ g a t e / m i c a r t e r 2 / s e t M a t e r i a l Tungsten
/ g a t e / m i c a r t e r 2 / geometry /setRmax 4 0 . 7 cm
/ g a t e / m i c a r t e r 2 / geometry / setRmin 3 0 . 0 cm
/ g a t e / m i c a r t e r 2 / geometry / s e t H e i g h t 1 . 0 cm
/ gate / micarter2 / v i s / setColor grey
/ g a t e / m i c a r t e r 2 / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 −2 cm
/ g a t e / m i c a r t e r / d a u g h t e r s /name m i c a r t e r 3
/ gate / micarter / daughters / i n s e r t c y l i n d e r
/ g a t e / m i c a r t e r 3 / s e t M a t e r i a l Tungsten
/ g a t e / m i c a r t e r 3 / geometry /setRmax 4 0 . 7 cm
/ g a t e / m i c a r t e r 3 / geometry / setRmin 3 9 . 7 cm
/ g a t e / m i c a r t e r 3 / geometry / s e t H e i g h t 3 . 0 cm
/ gate / micarter3 / v i s / setColor grey
/ g a t e / m i c a r t e r 3 / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 0 cm
/ g a t e / m i c a r t e r / d a u g h t e r s /name m i c a r t e r 4
/ gate / micarter / daughters / i n s e r t c y l i n d e r
66
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/ g a t e / m i c a r t e r 4 / s e t M a t e r i a l Tungsten
/ g a t e / m i c a r t e r 4 / geometry /setRmax 4 3 . 7 cm
/ g a t e / m i c a r t e r 4 / geometry / setRmin 4 0 . 7 cm
/ g a t e / m i c a r t e r 4 / geometry / s e t H e i g h t 1 . 0 cm
/ gate / micarter4 / v i s / setColor grey
/ g a t e / m i c a r t e r 4 / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 1 cm
/ gate / systems / ecat / block / attach bloque
/ gate / systems / ecat / c r y s t a l / attach c r i s t a l
/ gate / c r i s t a l / attachCrystalSD
/ g a t e / world / d a u g h t e r s /name fantasma
/ g a t e / world / d a u g h t e r s / i n s e r t c y l i n d e r
/ g a t e / fantasma / s e t M a t e r i a l Water
/ g a t e / fantasma / v i s / s e t C o l o r g r e e n
/ g a t e / fantasma / geometry /setRmax
1 0 . 0 cm
/ g a t e / fantasma / geometry / s e t H e i g h t 2 0 . cm
/ g a t e / fantasma / attachPhantomSD
/ gate / physics / addProcess PhotoElectric
/ g a t e / p h y s i c s / a d d P r o c e s s Compton
/ g a t e / p h y s i c s / a d d P r o c e s s GammaConversion
/ gate / physics / addProcess LowEnergyRayleighScattering
/ gate / physics / addProcess E l e c t r o n I o n i s a t i o n
/ gate / p h y s i c s / addProcess Bremsstrahlung
/ gate / physics / addProcess PositronAnnihilationStd
/ g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e+
/ g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e−
/ g a t e / p h y s i c s / p r o c e s s L i s t Enabled
/ gate / physics / p r o c e s s L i s t I n i t i a l i z e d
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion c r i s t a l 1 . 0 cm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion c r i s t a l 1 . 0 cm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion c r i s t a l 1 . 0 cm
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion fantasma 0 . 1 mm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion fantasma 0 . 1 mm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion fantasma 0 . 1 mm
/ g a t e / p h y s i c s / SetMaxStepSizeInRegion fantasma 0 . 0 1 mm
/ g a t e / run / i n i t i a l i z e
/ g a t e / d i g i t i z e r / S i n g l e s / i n s e r t adder
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t readout
/ g a t e / d i g i t i z e r / S i n g l e s / r e a d o u t / setDepth 1
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t blurring
/ gate / d i g i t i z e r / S i n g l e s / blurring / setResolution 0.26
/ g a t e / d i g i t i z e r / S i n g l e s / b l u r r i n g / s e t E n e r g y O f R e f e r e n c e 5 1 1 . keV
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t thresholder
/ g a t e / d i g i t i z e r / S i n g l e s / t h r e s h o l d e r / s e t T h r e s h o l d 2 5 0 . keV
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t upholder
/ g a t e / d i g i t i z e r / S i n g l e s / u p h o l d e r / setUphold 7 5 0 . keV
/ g a t e / d i g i t i z e r / S i n g l e s / i n s e r t deadtime
/ g a t e / d i g i t i z e r / S i n g l e s / deadtime / setDeadTime 3 0 0 0 0 0 0 . ps
/ g a t e / d i g i t i z e r / S i n g l e s / deadtime / setMode p a r a l y s a b l e
/ g a t e / d i g i t i z e r / S i n g l e s / deadtime /chooseDTVolume b l o q u e
/ g a t e / d i g i t i z e r / C o i n c i d e n c e s / setWindow 1 0 . ns
/ g a t e / d i g i t i z e r / C o i n c i d e n c e s / s e t O f f s e t 0 . ns
/ gate / d i g i t i z e r / Coincidences / describe
67
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
/ g a t e / d i g i t i z e r /name demora
/ gate / d i g i t i z e r / i n s e r t coincidenceSorter
/ g a t e / d i g i t i z e r / demora / setWindow 1 0 . ns
/ g a t e / d i g i t i z e r / demora / s e t O f f s e t 5 0 0 . ns
/ g a t e / d i g i t i z e r / demora / d e s c r i b e
/ g a t e / d i g i t i z e r /name c o i n c i d e n c i a s F i n a l e s
/ gate / d i g i t i z e r / i n s e r t coincidenceChain
/ g a t e / d i g i t i z e r / c o i n c i d e n c i a s F i n a l e s / addInputName demora
/ g a t e / d i g i t i z e r / c o i n c i d e n c i a s F i n a l e s / addInputName C o i n c i d e n c e s
/ gate / d i g i t i z e r / c o i n c i d e n c i a s F i n a l e s / u s e P r i o r i t y true
/ gate / d i g i t i z e r / c o i n c i d e n c i a s F i n a l e s / describe
/ g a t e /random/ setEngineName JamesRandom
/ g a t e /random/ s e t E n g i n e S e e d d e f a u l t
/ g a t e /random/ v e r b o s e 1
/ g a t e / output / r o o t / e n a b l e
/ g a t e / output / r o o t / s etF ileN ame YourPETSimu
/ g a t e / output / r o o t / s e t R o o t S i n g l e s A d d e r F l a g 1
/ g a t e / output / r o o t / s e t R o o t S i n g l e s R e a d o u t F l a g 1
/ g a t e / output / r o o t / s e t R o o t H i t F l a g 1
/ g a t e / output / r o o t / s e t R o o t S i n g l e s F l a g 1
/ g a t e / output / r o o t / s e t R o o t C o i n c i d e n c e s F l a g 1
/ g a t e / output / sinogram / e n a b l e
/ g a t e / output / sinogram / s e t T a n g C r y s t a l B l u r r i n g 1 . 8 mm
/ g a t e / output / sinogram / s e t A x i a l C r y s t a l B l u r r i n g 1 . 8 mm
/ g a t e / output / sinogram / v e r b o s e 2
/ g a t e / output / sinogram / RawOutputEnable f a l s e
/ g a t e / output / sinogram / se tFil eNam e yourSinogram
/ g a t e / output / sinogram / S t o r e D e l a y e d s
/ g a t e / output / sinogram / S t o r e S c a t t e r s
/ g a t e / output / sinogram / setInputDataName c o i n c i d e n c i a s F i n a l e s
/ g a t e / output / sinogram / d e s c r i b e
/ g a t e / output / e c a t 7 / e n a b l e
/ g a t e / output / e c a t 7 / v e r b o s e 2
/ g a t e / output / e c a t 7 / se tFil eNam e yourSinogram
/ g a t e / output / e c a t 7 / d e s c r i b e
/ g a t e / output / e c a t 7 / mashing 2
/ g a t e / output / e c a t 7 / span 9
/ g a t e / output / e c a t 7 / m a x r i n g d i f f 22
/ g a t e / output / e c a t 7 / system 962
/ g a t e / output / e c a t 7 / I s o t o p e C o d e F−18
/ g a t e / output / e c a t 7 / I s o t o p e H a l f l i f e 6 5 8 6 . 2 s e c o n d
/ g a t e / output / e c a t 7 / I s o t o p e B r a n c h i n g F r a c t i o n 1 . 0
/ gate / verbose Physic
5
/ g a t e / v e r b o s e Cuts
0
/ g a t e / v e r b o s e SD
0
/ gate / verbose Actions
0
/ g a t e / v e r b o s e Actor
0
/ g a t e / v e r b o s e Step
0
/ gate / verbose Error
0
/ g a t e / v e r b o s e Warning
0
/ g a t e / v e r b o s e Output
0
/ g a t e / v e r b o s e Beam
0
68
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
/ g a t e / v e r b o s e Volume
0
/ g a t e / v e r b o s e Image
0
/ g a t e / v e r b o s e Geometry 0
/ g a t e / v e r b o s e Core
0
/ run / v e r b o s e 0
/ event / verbose 0
/ tracking / verbose 0
/ g a t e / s o u r c e / addSource F 1 8 C y l i n d e r S o u r c e
/ gate / source / F18CylinderSource / s e t A c t i v i t y 10000. becquerel
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / p a r t i c l e e+
/ gate / source / F18CylinderSource / setForcedUnstableFlag true
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / s e t F o r c e d H a l f L i f e 6586 s
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / e n e r g y t y p e F l u o r 1 8
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / type Volume
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / shape C y l i n d e r
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / r a d i u s 0 . 5 mm
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / h a l f z 0 . 5 mm
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / angtype i s o
/ g a t e / s o u r c e / F 1 8 C y l i n d e r S o u r c e / gps / c e n t r e 0 . 0 0 . 0 0 . cm
/ gate / source / l i s t
/ gate / a p p l i c a t i o n / setTimeSlice
1. s
/ gate / a p p l i c a t i o n / setTimeStart
0.
s
/ g a t e / a p p l i c a t i o n / setTimeStop
1. s
/ g a t e / a p p l i c a t i o n / startDAQ
69
2.5.
Sistemas SPECT en GATE
En esta sección analizaremos un sistema de SPECT. En la gura 2.4 se puede ver el
orden de los volumenes lógicos. Las primeras líneas (1-9) establcen la mayor parte que
es la corresponde a la visualización. Recuerde que los jobs que se envien a la GRID de
GISELA no deben contener comandos de visualización. /vis/open OGLSX
/vis/viewer/set/viewpointThetaPhi 60 60
/vis/viewer/zoom 1.5
/vis/drawVolume
/vis/viewer/ush
/tracking/verbose 0
/tracking/storeTrajectory 1
/vis/scene/add/trajectories
/vis/scene/endOfEventAction accumulate
la línea 10 es bien conocida por todos
/gate/geometry/setMaterialDatabase GateMaterials.db
y llama a la base de datos con la información de los materiales disponibles en GATE.
Las líneas 11 a 13
world
table
fantasma
SPECThead
shielding
movsource
cristal
collimator
compartment
hole
Figura 2.4: Geometría del detector SPECThead. La echa indica que un volumen apunta
a la volumen hija
/gate/world/geometry/setXLength 100 cm
70
/gate/world/geometry/setYLength 100 cm
/gate/world/geometry/setZLength 100 cm
ponen las dimensiones del mundo. las líneas 14 a 29 denen lo que es el volumen SPECThead.
/gate/world/daughters/name SPECThead
/gate/world/daughters/insert box
/gate/SPECThead/geometry/setXLength 7. cm
/gate/SPECThead/geometry/setYLength 21. cm
/gate/SPECThead/geometry/setZLength 30. cm
/gate/SPECThead/placement/setTranslation 20.0 0. 0. cm
/gate/SPECThead/setMaterial Air
/gate/SPECThead/repeaters/insert ring
/gate/SPECThead/ring/setRepeatNumber 4
/gate/SPECThead/moves/insert orbiting
/gate/SPECThead/orbiting/setSpeed 0.15 deg/s
/gate/SPECThead/orbiting/setPoint1 0 0 0 cm
/gate/SPECThead/orbiting/setPoint2 0 0 1 cm
/gate/SPECThead/vis/forceWireframe
Líneas 30 a 36
/gate/shielding/geometry/setXLength 7. cm
/gate/shielding/geometry/setYLength 21. cm
/gate/shielding/geometry/setZLength 30. cm
/gate/shielding/placement/setTranslation 0. 0. 0. cm
/gate/shielding/setMaterial Lead
/gate/shielding/vis/setColor red
/gate/shielding/vis/forceWireframe
denen el volumen lógico de escudo
shielding
el cual esta hecho de plomo. Líneas 37 a
45
/gate/SPECThead/daughters/name collimator
/gate/SPECThead/daughters/insert box
/gate/collimator/geometry/setXLength 3. cm
/gate/collimator/geometry/setYLength 19. cm
/gate/collimator/geometry/setZLength 28. cm
/gate/collimator/placement/setTranslation -2. 0. 0. cm
/gate/collimator/setMaterial Lead
/gate/collimator/vis/setColor red
/gate/collimator/vis/forceWireframe
denen a collimator el cual también es de plomo. Líneas 46 a 60
/gate/collimator/daughters/name hole
/gate/collimator/daughters/insert hexagone
/gate/hole/geometry/setHeight 3. cm
/gate/hole/geometry/setRadius .15 cm
/gate/hole/placement/setRotationAxis 0 1 0
71
/gate/hole/placement/setRotationAngle 90 deg
/gate/hole/setMaterial Air
/gate/hole/repeaters/insert cubicArray
/gate/hole/cubicArray/setRepeatNumberX 1
/gate/hole/cubicArray/setRepeatNumberY 52
/gate/hole/cubicArray/setRepeatNumberZ 44
/gate/hole/cubicArray/setRepeatVector 0. 0.36 0.624 cm
/gate/hole/repeaters/insert linear
/gate/hole/linear/setRepeatNumber 2
/gate/hole/linear/setRepeatVector 0. 0.18 0.312 cm
insertamos un hueco
hole
tipo hexagonal repetido varias veces. Líneas 61 a 68
/gate/SPECThead/daughters/name crystal
/gate/SPECThead/daughters/insert box
/gate/crystal/geometry/setXLength 1. cm
/gate/crystal/geometry/setYLength 19. cm
/gate/crystal/geometry/setZLength 28. cm
/gate/crystal/placement/setTranslation 0. 0. 0. cm
/gate/crystal/setMaterial NaI
/gate/crystal/vis/setColor yellow
denimos un cristal de tipo caja hecho de yoduro de sodio. Líneas 69 a 76
/gate/SPECThead/daughters/name compartment
/gate/SPECThead/daughters/insert box
/gate/compartment/geometry/setXLength 2.5 cm
/gate/compartment/geometry/setYLength 19. cm
/gate/compartment/geometry/setZLength 28. cm
/gate/compartment/placement/setTranslation 1.75 0. 0. cm
/gate/compartment/setMaterial Glass
/gate/compartment/vis/setColor grey
denimos a compartment de vidrio. Líneas 77 a 88
/gate/world/daughters/name table
/gate/world/daughters/insert box
/gate/table/geometry/setXLength 0.6 cm
/gate/table/geometry/setYLength 8. cm
/gate/table/geometry/setZLength 34. cm
/gate/table/placement/setRotationAxis 0 0 1
/gate/table/placement/setRotationAngle 90 deg
/gate/table/placement/setTranslation 0. -5.3 0. cm
/gate/table/moves/insert translation
/gate/table/translation/setSpeed 0 0 0.04 cm/s
/gate/table/setMaterial Glass
/gate/table/vis/setColor grey
Denimos una mesa
table
de vidrio con una velocidad de movimiento de
cm/s. Líneas 89 a 99
72
vz = 0,04
/gate/table/vis/setColor grey
/gate/world/daughters/name fantasma
/gate/world/daughters/insert cylinder
/gate/fantasma/geometry/setRmax 5. cm
/gate/fantasma/geometry/setRmin 0. cm
/gate/fantasma/geometry/setHeight 20. cm
/gate/fantasma/placement/setTranslation 0. 0. -6. cm
/gate/fantasma/moves/insert translation
/gate/fantasma/translation/setSpeed 0 0 0.04 cm/s
/gate/fantasma/setMaterial Water
/gate/fantasma/vis/setColor blue
/gate/fantasma/vis/forceWireframe
denimos a un fantasma hecho de agua cuya velocidad de movimiento es igual a la de
table. Líneas 100 a 107
/gate/fantasma/daughters/name movsource
/gate/fantasma/daughters/insert cylinder
/gate/movsource/geometry/setRmax 2. cm
/gate/movsource/geometry/setRmin 0. cm
/gate/movsource/geometry/setHeight 5. cm
/gate/movsource/placement/setTranslation 0. 0. -6. cm
/gate/movsource/setMaterial Water
/gate/movsource/vis/setColor magenta
Líneas 108 a 109
/gate/systems/SPECThead/crystal/attach crystal
/gate/systems/SPECThead/describe
adjuntan los volumenes que previamente creados a las subpartes del sistema SPECT.
Líneas 110 a 117
/gate/crystal/attachCrystalSD
/gate/fantasma/attachPhantomSD
/gate/movsource/attachPhantomSD
/gate/table/attachPhantomSD
/gate/compartment/attachPhantomSD
/gate/shielding/attachPhantomSD
/gate/SPECThead/attachPhantomSD
/gate/collimator/attachPhantomSD
adjuntan los volumenes previamente creados a subpartes del detecotor SPECT. Líneas
118 a 125
/gate/physics/addProcess PhotoElectric
/gate/physics/addProcess LowEnergyCompton
/gate/physics/addProcess LowEnergyRayleighScattering
/gate/physics/addProcess ElectronIonisation
/gate/physics/addProcess Bremsstrahlung
/gate/physics/addProcess MultipleScattering e-
73
/gate/physics/processList Enabled
/gate/physics/processList Initialized
Líneas 126 y 127
/gate/physics/Gamma/SetCutInRegion SPECThead 0.1 cm
/gate/physics/Electron/SetCutInRegion SPECThead 1.0 cm
introduce los cortes necesarios en los electrones y fotones, para así evitar divergencias
infrarrojas. Línea 128 /gate/run/initialize
Líneas 129 a 145
/gate/timing/setTime 0. s
/gate/timing/setTime 37.5 s
/gate/timing/setTime 75 s
/gate/timing/setTime 112.5 s
/gate/timing/setTime 150 s
/gate/timing/setTime 187.5 s
/gate/timing/setTime 225 s
/gate/timing/setTime 262.5 s
/gate/timing/setTime 300 s
/gate/timing/setTime 337.5 s
/gate/timing/setTime 375 s
/gate/timing/setTime 412.5 s
/gate/timing/setTime 450 s
/gate/timing/setTime 487.5 s
/gate/timing/setTime 525 s
/gate/timing/setTime 562.5 s
/gate/timing/setTime 600 s
son distintas estampillas de tiempo para observar los que ocurre con la simulación.
Líneas 146 a 156
/gate/source/addSource SourceConnement
/gate/source/SourceConnement/gps/type Volume
/gate/source/SourceConnement/gps/shape Cylinder
/gate/source/SourceConnement/gps/radius 2. cm
/gate/source/SourceConnement/gps/halfz 14.5 cm
/gate/source/SourceConnement/gps/centre 0. 0. 0. cm
/gate/source/SourceConnement/gps/particle gamma
/gate/source/SourceConnement/gps/energy 140. keV
/gate/source/SourceConnement/setActivity 30000. Bq
/gate/source/SourceConnement/gps/angtype iso
/gate/source/SourceConnement/gps/conne movsource
Introducen una fuente de fotones de tipo ciliíndrico y otras propiedades que pueden ser
vistas en los comandos. Líneas 157 a 167
/gate/digitizer/Singles/insert adder
/gate/digitizer/Singles/insert blurring
/gate/digitizer/Singles/blurring/setResolution 0.10
74
/gate/digitizer/Singles/blurring/setEnergyOfReference 140. keV
/gate/digitizer/Singles/insert spblurring
/gate/digitizer/Singles/spblurring/setSpresolution 2.0 mm
/gate/digitizer/Singles/spblurring/verbose 0
/gate/digitizer/Singles/insert thresholder
/gate/digitizer/Singles/thresholder/setThreshold 20. keV
/gate/digitizer/Singles/insert upholder
/gate/digitizer/Singles/upholder/setUphold 190. keV
se simula la parte del digitalizador. Líneas 168 a 174
/gate/output/root/enable
/gate/output/root/setFileName benchSPECT
/gate/output/root/setRootSinglesAdderFlag 1
/gate/output/root/setRootSinglesBlurringFlag 1
/gate/output/root/setRootSinglesSpblurringFlag 1
/gate/output/root/setRootSinglesThresholderFlag 1
/gate/output/root/setRootSinglesUpholderFlag 1
habilitamos la creación de un archivo de salida tipo ROOT en donde guardaremos la
información correspondiente a la digitalización. Líneas 175 a 179
/gate/output/ascii/setOutFileSinglesAdderFlag 0
/gate/output/ascii/setOutFileSinglesSpblurringFlag 0
/gate/output/ascii/setOutFileSinglesBlurringFlag 0
/gate/output/ascii/setOutFileSinglesThresholderFlag 0
/gate/output/ascii/setOutFileSinglesUpholderFlag 0
desabilitamos la creación de un archivo ascii con la información correspondiente a la
digitalización. Líneas 180 a 182
/gate/random/setEngineName Ranlux64
/gate/random/setEngineSeed 123456789
/gate/random/verbose 1
introducimos la información pertinente a la generación de números aleatorios. Líneas
183 a 189
/gate/output/projection/enable
/gate/output/projection/setFileName YourProjection
/gate/output/projection/pixelSizeX 0.904 mm
/gate/output/projection/pixelSizeY 0.904 mm
/gate/output/projection/pixelNumberX 128
/gate/output/projection/pixelNumberY 128
/gate/output/projection/projectionPlane YZ
habilitamos la creación de un archivo llamado YourProjection en donde se muestra la
vista
YZ
del pixel 128 denido en
XY .
Líneas 190 a 192
/gate/application/setTimeSlice 37.5 s
/gate/application/setTimeStart 0. s
/gate/application/setTimeStop 600. s
establece los tiempos inicial y nal, además de la longitud de los cuadros temporales
75
de la simulación. Líneas 193 a 209
/gate/verbose Physic 0
/gate/verbose Cuts 0
/gate/verbose SD 0
/gate/verbose Actions 0
/gate/verbose Actor 0
/gate/verbose Step 0
/gate/verbose Error 0
/gate/verbose Warning 0
/gate/verbose Output 0
/gate/verbose Beam 0
/gate/verbose Volume 0
/gate/verbose Image 0
/gate/verbose Geometry 0
/gate/verbose Core 0
/run/verbose 0
/event/verbose 0
/tracking/verbose 0
son comandos de verborrea. Y nalmente la línea 210 /gate/application/startDAQ empieza la simulación.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/ v i s / open OGLSX
/ v i s / v i e w e r / s e t / v i e w p o i n t T h e t a P h i 60 60
/ v i s / v i e w e r /zoom 1 . 5
/ v i s /drawVolume
/ v i s / viewer / f l u s h
/ tracking / verbose 0
/ tracking / storeTrajectory 1
/ v i s / s c e n e /add/ t r a j e c t o r i e s
/ v i s / s c e n e / endOfEventAction accumulate
/ g a t e / geometry / s e t M a t e r i a l D a t a b a s e G a t e M a t e r i a l s . db
/ g a t e / world / geometry / setXLength 100 cm
/ g a t e / world / geometry / setYLength 100 cm
/ g a t e / world / geometry / s etZL ength 100 cm
/ g a t e / world / d a u g h t e r s /name SPECThead
/ g a t e / world / d a u g h t e r s / i n s e r t box
/ g a t e /SPECThead/ geometry / setXLength 7 . cm
/ g a t e /SPECThead/ geometry / setYLength 2 1 . cm
/ g a t e /SPECThead/ geometry / se tZLen gth 3 0 . cm
/ g a t e /SPECThead/ placement / s e t T r a n s l a t i o n 2 0 . 0 0 . 0 . cm
/ g a t e /SPECThead/ s e t M a t e r i a l Air
/ g a t e /SPECThead/ r e p e a t e r s / i n s e r t r i n g
/ g a t e /SPECThead/ r i n g / setRepeatNumber 4
/ g a t e /SPECThead/ moves / i n s e r t o r b i t i n g
/ g a t e /SPECThead/ o r b i t i n g / s e t S p e e d 0 . 1 5 deg / s
/ g a t e /SPECThead/ o r b i t i n g / s e t P o i n t 1 0 0 0 cm
/ g a t e /SPECThead/ o r b i t i n g / s e t P o i n t 2 0 0 1 cm
/ g a t e /SPECThead/ v i s / f o r c e W i r e f r a m e
76
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/ g a t e /SPECThead/ d a u g h t e r s /name s h i e l d i n g
/ g a t e /SPECThead/ d a u g h t e r s / i n s e r t box
/ g a t e / s h i e l d i n g / geometry / setXLength 7 . cm
/ g a t e / s h i e l d i n g / geometry / setYLength 2 1 . cm
/ g a t e / s h i e l d i n g / geometry / s etZL ength 3 0 . cm
/ g a t e / s h i e l d i n g / placement / s e t T r a n s l a t i o n 0 . 0 . 0 . cm
/ g a t e / s h i e l d i n g / s e t M a t e r i a l Lead
/ gate / s h i e l d i n g / v i s / setColor red
/ gate / s h i e l d i n g / v i s / forceWireframe
/ g a t e /SPECThead/ d a u g h t e r s /name c o l l i m a t o r
/ g a t e /SPECThead/ d a u g h t e r s / i n s e r t box
/ g a t e / c o l l i m a t o r / geometry / setXLength 3 . cm
/ g a t e / c o l l i m a t o r / geometry / setYLength 1 9 . cm
/ g a t e / c o l l i m a t o r / geometry / s etZL ength 2 8 . cm
/ g a t e / c o l l i m a t o r / placement / s e t T r a n s l a t i o n − 2. 0 . 0 . cm
/ g a t e / c o l l i m a t o r / s e t M a t e r i a l Lead
/ gate / c o l l i m a t o r / v i s / setColor red
/ gate / collima tor / v i s / forceWireframe
/ g a t e / c o l l i m a t o r / d a u g h t e r s /name h o l e
/ g a t e / c o l l i m a t o r / d a u g h t e r s / i n s e r t hexagone
/ g a t e / h o l e / geometry / s e t H e i g h t 3 . cm
/ g a t e / h o l e / geometry / s e t R a d i u s . 1 5 cm
/ g a t e / h o l e / placement / s e t R o t a t i o n A x i s 0 1 0
/ g a t e / h o l e / placement / s e t R o t a t i o n A n g l e 90 deg
/ g a t e / h o l e / s e t M a t e r i a l Air
/ gate / hole / r e p e a t e r s / i n s e r t cubicArray
/ g a t e / h o l e / c u b i c A r r a y / setRepeatNumberX 1
/ g a t e / h o l e / c u b i c A r r a y / setRepeatNumberY 52
/ g a t e / h o l e / c u b i c A r r a y / setRepeatNumberZ 44
/ g a t e / h o l e / c u b i c A r r a y / s e t R e p e a t V e c t o r 0 . 0 . 3 6 0 . 6 2 4 cm
/ gate / hole / repeaters / i n s e r t l i n e a r
/ g a t e / h o l e / l i n e a r / setRepeatNumber 2
/ g a t e / h o l e / l i n e a r / s e t R e p e a t V e c t o r 0 . 0 . 1 8 0 . 3 1 2 cm
/ g a t e /SPECThead/ d a u g h t e r s /name c r y s t a l
/ g a t e /SPECThead/ d a u g h t e r s / i n s e r t box
/ g a t e / c r y s t a l / geometry / setXLength 1 . cm
/ g a t e / c r y s t a l / geometry / setYLength 1 9 . cm
/ g a t e / c r y s t a l / geometry / s etZL ength 2 8 . cm
/ g a t e / c r y s t a l / placement / s e t T r a n s l a t i o n 0 . 0 . 0 . cm
/ g a t e / c r y s t a l / s e t M a t e r i a l NaI
/ gate / c r y s t a l / v i s / setColor yellow
/ g a t e /SPECThead/ d a u g h t e r s /name compartment
/ g a t e /SPECThead/ d a u g h t e r s / i n s e r t box
/ g a t e / compartment / geometry / setXLength 2 . 5 cm
/ g a t e / compartment / geometry / setYLength 1 9 . cm
/ g a t e / compartment / geometry / s etZL ength 2 8 . cm
/ g a t e / compartment / placement / s e t T r a n s l a t i o n
1 . 7 5 0 . 0 . cm
/ g a t e / compartment / s e t M a t e r i a l G l a s s
/ g a t e / compartment / v i s / s e t C o l o r g r e y
/ g a t e / world / d a u g h t e r s /name t a b l e
/ g a t e / world / d a u g h t e r s / i n s e r t box
/ g a t e / t a b l e / geometry / setXLength 0 . 6 cm
77
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/ g a t e / t a b l e / geometry / setYLength 8 . cm
/ g a t e / t a b l e / geometry / setZ Leng th 3 4 . cm
/ g a t e / t a b l e / placement / s e t R o t a t i o n A x i s 0 0 1
/ g a t e / t a b l e / placement / s e t R o t a t i o n A n g l e 90 deg
/ g a t e / t a b l e / placement / s e t T r a n s l a t i o n 0 . − 5.3 0 . cm
/ g a t e / t a b l e / moves / i n s e r t t r a n s l a t i o n
/ g a t e / t a b l e / t r a n s l a t i o n / s e t S p e e d 0 0 0 . 0 4 cm/ s
/ gate / table / setMaterial Glass
/ gate / table / v i s / setColor grey
/ g a t e / world / d a u g h t e r s /name fantasma
/ g a t e / world / d a u g h t e r s / i n s e r t c y l i n d e r
/ g a t e / fantasma / geometry /setRmax 5 . cm
/ g a t e / fantasma / geometry / setRmin 0 . cm
/ g a t e / fantasma / geometry / s e t H e i g h t 2 0 . cm
/ g a t e / fantasma / placement / s e t T r a n s l a t i o n 0 . 0 . − 6. cm
/ g a t e / fantasma / moves / i n s e r t t r a n s l a t i o n
/ g a t e / fantasma / t r a n s l a t i o n / s e t S p e e d 0 0 0 . 0 4 cm/ s
/ g a t e / fantasma / s e t M a t e r i a l Water
/ g a t e / fantasma / v i s / s e t C o l o r b l u e
/ g a t e / fantasma / v i s / f o r c e W i r e f r a m e
/ g a t e / fantasma / d a u g h t e r s /name movsource
/ g a t e / fantasma / d a u g h t e r s / i n s e r t c y l i n d e r
/ g a t e / movsource / geometry /setRmax 2 . cm
/ g a t e / movsource / geometry / setRmin 0 . cm
/ g a t e / movsource / geometry / s e t H e i g h t 5 . cm
/ g a t e / movsource / placement / s e t T r a n s l a t i o n 0 . 0 . − 6. cm
/ g a t e / movsource / s e t M a t e r i a l Water
/ g a t e / movsource / v i s / s e t C o l o r magenta
/ g a t e / s y s t e m s /SPECThead/ c r y s t a l / a t t a c h c r y s t a l
/ g a t e / s y s t e m s /SPECThead/ d e s c r i b e
/ gate / c r y s t a l / attachCrystalSD
/ g a t e / fantasma / attachPhantomSD
/ g a t e / movsource / attachPhantomSD
/ g a t e / t a b l e / attachPhantomSD
/ g a t e / compartment / attachPhantomSD
/ g a t e / s h i e l d i n g / attachPhantomSD
/ g a t e /SPECThead/ attachPhantomSD
/ g a t e / c o l l i m a t o r / attachPhantomSD
/ gate / physics / addProcess PhotoElectric
/ g a t e / p h y s i c s / a d d P r o c e s s LowEnergyCompton
/ gate / physics / addProcess LowEnergyRayleighScattering
/ gate / physics / addProcess E l e c t r o n I o n i s a t i o n
/ gate / p h y s i c s / addProcess Bremsstrahlung
/ g a t e / p h y s i c s / a d d P r o c e s s M u l t i p l e S c a t t e r i n g e−
/ g a t e / p h y s i c s / p r o c e s s L i s t Enabled
/ gate / physics / p r o c e s s L i s t I n i t i a l i z e d
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion
SPECThead 0 . 1 cm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion
SPECThead 1 . 0 cm
/ g a t e / run / i n i t i a l i z e
/ g a t e / t i m i n g / setTime 0 . s
/ g a t e / t i m i n g / setTime 3 7 . 5 s
/ g a t e / t i m i n g / setTime 75 s
78
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
/ g a t e / t i m i n g / setTime 1 1 2 . 5 s
/ g a t e / t i m i n g / setTime 150 s
/ g a t e / t i m i n g / setTime 1 8 7 . 5 s
/ g a t e / t i m i n g / setTime 225 s
/ g a t e / t i m i n g / setTime 2 6 2 . 5 s
/ g a t e / t i m i n g / setTime 300 s
/ g a t e / t i m i n g / setTime 3 3 7 . 5 s
/ g a t e / t i m i n g / setTime 375 s
/ g a t e / t i m i n g / setTime 4 1 2 . 5 s
/ g a t e / t i m i n g / setTime 450 s
/ g a t e / t i m i n g / setTime 4 8 7 . 5 s
/ g a t e / t i m i n g / setTime 525 s
/ g a t e / t i m i n g / setTime 5 6 2 . 5 s
/ g a t e / t i m i n g / setTime 600 s
/ g a t e / s o u r c e / addSource SourceConfinement
/ g a t e / s o u r c e / SourceConfinement / gps / type Volume
/ g a t e / s o u r c e / SourceConfinement / gps / shape C y l i n d e r
/ g a t e / s o u r c e / SourceConfinement / gps / r a d i u s 2 . cm
/ g a t e / s o u r c e / SourceConfinement / gps / h a l f z 1 4 . 5 cm
/ g a t e / s o u r c e / SourceConfinement / gps / c e n t r e 0 . 0 . 0 . cm
/ g a t e / s o u r c e / SourceConfinement / gps / p a r t i c l e gamma
/ g a t e / s o u r c e / SourceConfinement / gps / e n e r g y 1 4 0 . keV
/ g a t e / s o u r c e / SourceConfinement / s e t A c t i v i t y 3 0 0 0 0 . Bq
/ g a t e / s o u r c e / SourceConfinement / gps / angtype i s o
/ g a t e / s o u r c e / SourceConfinement / gps / c o n f i n e movsource
/ g a t e / d i g i t i z e r / S i n g l e s / i n s e r t adder
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t blurring
/ gate / d i g i t i z e r / S i n g l e s / blurring / setResolution 0.10
/ g a t e / d i g i t i z e r / S i n g l e s / b l u r r i n g / s e t E n e r g y O f R e f e r e n c e 1 4 0 . keV
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t spblurring
/ g a t e / d i g i t i z e r / S i n g l e s / s p b l u r r i n g / s e t S p r e s o l u t i o n 2 . 0 mm
/ gate / d i g i t i z e r / S i n g l e s / spblurring / verbose 0
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t thresholder
/ g a t e / d i g i t i z e r / S i n g l e s / t h r e s h o l d e r / s e t T h r e s h o l d 2 0 . keV
/ gate / d i g i t i z e r / S i n g l e s / i n s e r t upholder
/ g a t e / d i g i t i z e r / S i n g l e s / u p h o l d e r / setUphold 1 9 0 . keV
/ g a t e / output / r o o t / e n a b l e
/ g a t e / output / r o o t / s etF ileN ame benchSPECT
/ g a t e / output / r o o t / s e t R o o t S i n g l e s A d d e r F l a g 1
/ g a t e / output / r o o t / s e t R o o t S i n g l e s B l u r r i n g F l a g 1
/ g a t e / output / r o o t / s e t R o o t S i n g l e s S p b l u r r i n g F l a g 1
/ g a t e / output / r o o t / s e t R o o t S i n g l e s T h r e s h o l d e r F l a g 1
/ g a t e / output / r o o t / s e t R o o t S i n g l e s U p h o l d e r F l a g 1
/ g a t e / output / a s c i i / s e t O u t F i l e S i n g l e s A d d e r F l a g 0
/ g a t e / output / a s c i i / s e t O u t F i l e S i n g l e s S p b l u r r i n g F l a g 0
/ g a t e / output / a s c i i / s e t O u t F i l e S i n g l e s B l u r r i n g F l a g 0
/ g a t e / output / a s c i i / s e t O u t F i l e S i n g l e s T h r e s h o l d e r F l a g 0
/ g a t e / output / a s c i i / s e t O u t F i l e S i n g l e s U p h o l d e r F l a g 0
/ g a t e /random/ setEngineName Ranlux64
/ g a t e /random/ s e t E n g i n e S e e d 123456789
/ g a t e /random/ v e r b o s e 1
/ g a t e / output / p r o j e c t i o n / e n a b l e
79
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
/ g a t e / output / p r o j e c t i o n / set File Name Y o u r P r o j e c t i o n
/ g a t e / output / p r o j e c t i o n / p i x e l S i z e X 0 . 9 0 4 mm
/ g a t e / output / p r o j e c t i o n / p i x e l S i z e Y 0 . 9 0 4 mm
/ g a t e / output / p r o j e c t i o n / pixelNumberX 128
/ g a t e / output / p r o j e c t i o n / pixelNumberY 128
/ g a t e / output / p r o j e c t i o n / p r o j e c t i o n P l a n e YZ
/ gate / a p p l i c a t i o n / setTimeSlice
37.5 s
/ gate / a p p l i c a t i o n / setTimeStart
0.
s
/ g a t e / a p p l i c a t i o n / setTimeStop
600. s
/ gate / verbose Physic
0
/ g a t e / v e r b o s e Cuts
0
/ g a t e / v e r b o s e SD
0
/ gate / verbose Actions
0
/ g a t e / v e r b o s e Actor
0
/ g a t e / v e r b o s e Step
0
/ gate / verbose Error
0
/ g a t e / v e r b o s e Warning
0
/ g a t e / v e r b o s e Output
0
/ g a t e / v e r b o s e Beam
0
/ g a t e / v e r b o s e Volume
0
/ g a t e / v e r b o s e Image
0
/ g a t e / v e r b o s e Geometry 0
/ g a t e / v e r b o s e Core
0
/ run / v e r b o s e 0
/ event / verbose 0
/ tracking / verbose 0
/ g a t e / a p p l i c a t i o n / startDAQ
80
2.6.
Radioterapia y Dosimetría en GATE
En esta sección se muestra un ejemplo de código que simula un proceso de radioterapia. Este ejemplo no contiene comandos de visualización, así que es enviable a la GRID
sin necesidad de hacerle ninguna modicación. Para dejar un código sin comandos de
visualización, basta con borrar todos los comandos en donde se encuentre el comando
/vis/.
Los procesos físicos son procesos avanzados de física núclear los cuales no se tratarán
en detalle en este manual. Las líneas 37 y 38 son
/gate/physics/processes/MultipleScattering/setGeometricalStepLimiterType e- distanceToBoundary
/gate/physics/processes/MultipleScattering/setGeometricalStepLimiterType e+ distanceToBoundary
Se deja de tarea que el estudiante haga el diagrama de volumenes lógicos del siguiente
código.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/ gate / verbose Physic
1
/ g a t e / v e r b o s e Cuts
1
/ g a t e / v e r b o s e SD
0
/ gate / verbose Actions
0
/ g a t e / v e r b o s e Actor
0
/ g a t e / v e r b o s e Step
0
/ gate / verbose Error
1
/ g a t e / v e r b o s e Warning
1
/ g a t e / v e r b o s e Output
0
/ g a t e / v e r b o s e Beam
0
/ g a t e / v e r b o s e Volume
0
/ g a t e / v e r b o s e Image
0
/ g a t e / v e r b o s e Geometry 2
/ g a t e / geometry / s e t M a t e r i a l D a t a b a s e G a t e M a t e r i a l s . db
/ g a t e / world / geometry / setXLength 5 m
/ g a t e / world / geometry / setYLength 5 m
/ g a t e / world / geometry / s etZL ength 5 m
/ g a t e / world / s e t M a t e r i a l Air
/ g a t e / world / d a u g h t e r s /name
mainbox
/ g a t e / world / d a u g h t e r s / i n s e r t
box
/ g a t e / mainbox / geometry / setXLength 40 cm
/ g a t e / mainbox / geometry / setYLength 40 cm
/ g a t e / mainbox / geometry / setZ Lengt h 40 cm
/ g a t e / mainbox / placement / s e t T r a n s l a t i o n 0 . 0 0 . 0 25 cm
/ g a t e / mainbox / s e t M a t e r i a l Water
/ g a t e / geometry / s e t I o n i s a t i o n P o t e n t i a l Water 75 eV
/ g a t e / geometry / s e t I o n i s a t i o n P o t e n t i a l Air 8 5 . 7 eV
/ gate / physics / addProcess PhotoElectric
/ g a t e / p h y s i c s / a d d P r o c e s s Compton
/ g a t e / p h y s i c s / a d d P r o c e s s GammaConversion
/ gate / physics / addProcess E l e c t r o n I o n i s a t i o n
/ g a t e / p h y s i c s / p r o c e s s e s / E l e c t r o n I o n i s a t i o n / s e t S t e p F u n c t i o n e+ 0 . 2 0 . 1 mm
/ g a t e / p h y s i c s / p r o c e s s e s / E l e c t r o n I o n i s a t i o n / s e t S t e p F u n c t i o n e− 0 . 2 0 . 1 mm
81
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/ gate / p h y s i c s / addProcess Bremsstrahlung
/ gate / physics / addProcess P o s i t r o n A n n i h i l a t i o n
/ gate / physics / addProcess M u l t i p l e S c a t t e r i n g
/ g a t e / p h y s i c s / p r o c e s s e s / M u l t i p l e S c a t t e r i n g / s e t G e o m e t r i c a l S t e p L i m i t e r T y p e e− distanceToBou
/ g a t e / p h y s i c s / p r o c e s s e s / M u l t i p l e S c a t t e r i n g / s e t G e o m e t r i c a l S t e p L i m i t e r T y p e e+ distanceToBou
/ gate / physics / addProcess HadronIonisation
/ gate / p h y s i c s / removeProcess HadronIonisation deuteron
/ gate / p h y s i c s / removeProcess HadronIonisation t r i t o n
/ g a t e / p h y s i c s / r e m o v e P r o c e s s H a d r o n I o n i s a t i o n He3
/ gate / p h y s i c s / removeProcess HadronIonisation alpha
/ gate / p h y s i c s / removeProcess HadronIonisation GenericIon
/ g a t e / p h y s i c s / p r o c e s s e s / H a d r o n I o n i s a t i o n / s e t S t e p F u n c t i o n p r o t o n 0 . 2 0 . 0 5 mm
/ g a t e / p h y s i c s / p r o c e s s e s / H a d r o n I o n i s a t i o n / s e t S t e p F u n c t i o n p i+
0 . 2 0 . 0 5 mm
/ g a t e / p h y s i c s / p r o c e s s e s / H a d r o n I o n i s a t i o n / s e t S t e p F u n c t i o n pi −
0 . 2 0 . 0 5 mm
/ gate / physics / addProcess I o n I o n i s a t i o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I o n i s a t i o n / s e t S t e p F u n c t i o n G e n e r i c I o n 0 . 1 0 . 0 2 mm
/ gate / phys ics / p r o c e s s e s / I o n I o n i s a t i o n / setStepFunction alpha
0 . 1 0 . 0 2 mm
/ gate / physics / p r o c e s s e s / I o n I o n i s a t i o n / setStepFunction deuteron
0 . 1 0 . 0 2 mm
/ gate / physics / processes / I o n I o n i s a t i o n / setStepFunction t r i t o n
0 . 1 0 . 0 2 mm
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I o n i s a t i o n / s e t S t e p F u n c t i o n He3
0 . 1 0 . 0 2 mm
/ gate / physics / addProcess HadronElastic GenericIon
/ g a t e / p h y s i c s / p r o c e s s e s / H a d r o n E l a s t i c / setModel G 4 L E l a s t i c G e n e r i c I o n
/ g a t e / p h y s i c s / a d d P r o c e s s UHadronElastic
/ g a t e / p h y s i c s / p r o c e s s e s / UHadronElastic / setModel G4HadronElastic
/ g a t e / p h y s i c s / p r o c e s s e s / UHadronElastic / s e t D a t a S e t G4HadronElasticDataSet
/ gate / physics / addProcess P r o t o n I n e l a s t i c
/ g a t e / p h y s i c s / p r o c e s s e s / P r o t o n I n e l a s t i c / setModel G4BinaryCascade
/ g a t e / p h y s i c s / p r o c e s s e s / P r o t o n I n e l a s t i c / G4BinaryCascade / setEmin 170 MeV
/ g a t e / p h y s i c s / p r o c e s s e s / P r o t o n I n e l a s t i c / G4BinaryCascade / setEmax 500 GeV
/ g a t e / p h y s i c s / p r o c e s s e s / P r o t o n I n e l a s t i c / setModel PreCompound
/ g a t e / p h y s i c s / p r o c e s s e s / P r o t o n I n e l a s t i c /PreCompound/ setEmin 0 MeV
/ g a t e / p h y s i c s / p r o c e s s e s / P r o t o n I n e l a s t i c /PreCompound/ setEmax 170 MeV
/ gate / physics / addProcess I o n I n e l a s t i c
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / setModel G 4 B i n a r y L i g h t I o n R e a c t i o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / setModel G 4 L E D e u t e r o n I n e l a s t i c d e u t e r o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / setModel G 4 L E T r i t o n I n e l a s t i c t r i t o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / setModel G 4 L E A l p h a I n e l a s t i c a l p h a
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 B i n a r y L i g h t I o n R e a c t i o n / setEmin 80 MeV d e u t e r o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 B i n a r y L i g h t I o n R e a c t i o n / setEmax 20 GeV d e u t e r o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 B i n a r y L i g h t I o n R e a c t i o n / setEmin 80 MeV t r i t o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 B i n a r y L i g h t I o n R e a c t i o n / setEmax 20 GeV t r i t o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 B i n a r y L i g h t I o n R e a c t i o n / setEmin 80 MeV a l p h a
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 B i n a r y L i g h t I o n R e a c t i o n / setEmax 20 GeV a l p h a
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 L E D e u t e r o n I n e l a s t i c / setEmin 0 MeV d e u t e r o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 L E D e u t e r o n I n e l a s t i c / setEmax 80 MeV d e u t e r o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 L E T r i t o n I n e l a s t i c / setEmin 0 MeV t r i t o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 L E T r i t o n I n e l a s t i c / setEmax 80 MeV t r i t o n
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 L E A l p h a I n e l a s t i c / setEmin 0 MeV a l p h a
/ g a t e / p h y s i c s / p r o c e s s e s / I o n I n e l a s t i c / G 4 L E A l p h a I n e l a s t i c / setEmax 80 MeV a l p h a
/ gate / physics / p r o c e s s e s / I o n I n e l a s t i c / setDataSet G4IonsShenCrossSection GenericIon
/ gate / physics / p r o c e s s e s / I o n I n e l a s t i c / setDataSet G4TripathiLightCrossSection deuteron
/ gate / physics / processes / I o n I n e l a s t i c / setDataSet G4TripathiLightCrossSection t r i t o n
82
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/ gate / physics / p r o c e s s e s / I o n I n e l a s t i c / setDataSet G4TripathiLightCrossSection alpha
/ gate / physics / addProcess P i o n P l u s I n e l a s t i c
/ g a t e / p h y s i c s / p r o c e s s e s / P i o n P l u s I n e l a s t i c / setModel G 4 L E P i o n P l u s I n e l a s t i c
/ gate / physics / addProcess PionMinusInelastic
/ g a t e / p h y s i c s / p r o c e s s e s / P i o n M i n u s I n e l a s t i c / setModel G4LEPionMinusInelastic
/ g a t e / p h y s i c s / a d d P r o c e s s NeutronCapture
/ g a t e / p h y s i c s / p r o c e s s e s / NeutronCapture / setModel G4LCapture
/ gate / physics / addProcess F i s s i o n
/ g a t e / p h y s i c s / p r o c e s s e s / F i s s i o n / setModel G4LFission
/ gate / physics / addProcess N e u t r o n I n e l a s t i c
/ g a t e / p h y s i c s / p r o c e s s e s / N e u t r o n I n e l a s t i c / setModel PreCompound
/ g a t e / p h y s i c s / a d d P r o c e s s Decay
/ g a t e / p h y s i c s / setEMin 0 . 1 keV
/ g a t e / p h y s i c s /setEMax 10 GeV
/ g a t e / p h y s i c s / setDEDXBinning 220
/ g a t e / p h y s i c s / setLambdaBinning 220
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion world 1 mm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion world 1 mm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion world 1 mm
/ g a t e / p h y s i c s /Gamma/ SetCutInRegion mainbox 0 . 1 mm
/ g a t e / p h y s i c s / E l e c t r o n / SetCutInRegion mainbox 0 . 1 mm
/ g a t e / p h y s i c s / P o s i t r o n / SetCutInRegion mainbox 0 . 1 mm
/ g a t e / p h y s i c s / SetMaxStepSizeInRegion world 1 mm
/ gate / phys ics / ActivateStepLimiter proton
/ gate / physics / ActivateStepLimiter deuteron
/ gate / physics / ActivateStepLimiter t r i t o n
/ gate / physics / ActivateStepLimiter alpha
/ gate / physics / ActivateStepLimiter GenericIon
/ gate / physics / displayCuts
/ g a t e / a c t o r / addActor DoseActor d o s e D i s t r i b u t i o n
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / s a v e output / Config −p r o t o n . t x t
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / attachTo mainbox
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / stepHitType random
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / s e t P o s i t i o n 0 0 0 cm
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / s e t R e s o l u t i o n 1 1 400
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / saveEveryNSeconds 60
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / enableEdep t r u e
/ gate / actor / d o se D i s t r ib u t i on / enableUncertaintyEdep f a l s e
/ gate / actor / d o s e D i s t r i b u t i o n / enableDose true
/ gate / actor / doseDistribution / enableUncertaintyDose true
/ g a t e / a c t o r / d o s e D i s t r i b u t i o n / enableNumberOfHits f a l s e
/ g a t e / a c t o r / addActor S i m u l a t i o n S t a t i s t i c A c t o r s t a t
/ g a t e / a c t o r / s t a t / s a v e output / s t a t −p r o t o n . t x t
/ g a t e / a c t o r / s t a t / saveEveryNSeconds 60
/ g a t e / run / i n i t i a l i z e
/ g a t e / s o u r c e / addSource mybeam gps
/ g a t e / s o u r c e /mybeam/ gps / p a r t i c l e p r o t o n
/ g a t e / s o u r c e /mybeam/ gps / pos / type Beam
/ g a t e / s o u r c e /mybeam/ gps / pos / r o t 1 0 1 0
/ g a t e / s o u r c e /mybeam/ gps / pos / r o t 2 1 0 0
/ g a t e / s o u r c e /mybeam/ gps / pos / shape C i r c l e
/ g a t e / s o u r c e /mybeam/ gps / pos / c e n t r e 0 0 0 mm
83
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/ g a t e / s o u r c e /mybeam/ gps / pos /sigma_x 3 mm
/ g a t e / s o u r c e /mybeam/ gps / pos /sigma_y 3 mm
/ g a t e / s o u r c e /mybeam/ gps / ene /mono 150 MeV
/ g a t e / s o u r c e /mybeam/ gps / ene / type Gauss
/ g a t e / s o u r c e /mybeam/ gps / ene / sigma 2 . 0 MeV
/ g a t e / s o u r c e /mybeam/ gps / d i r e c t i o n 0 0 1
/ tracking / storeTrajectory 1
/ gate / verbose Physic 1
/ g a t e / v e r b o s e Cuts 1
/ g a t e / v e r b o s e SD 0
/ gate / verbose Actions 0
/ g a t e / v e r b o s e Actor 0
/ g a t e / v e r b o s e Step 0
/ gate / verbose Error 1
/ g a t e / v e r b o s e Warning 1
/ g a t e / v e r b o s e Output 0
/ g a t e / v e r b o s e Beam 0
/ g a t e / v e r b o s e Volume 0
/ g a t e / v e r b o s e Image 0
/ g a t e / v e r b o s e Geometry 2
/ g a t e /random/ setEngineName MersenneTwister
/ g a t e /random/ s e t E n g i n e S e e d 1000
/ g a t e / a p p l i c a t i o n / noGlobalOutput
/ g a t e / a p p l i c a t i o n / setTotalN umberOfP rimaries 1000
/ gate / a p p l i c a t i o n / s t a r t
84
Capítulo 3
MÓDULO 3
3.1.
Tipos de códigos en ROOT
ROOT [8] es una plataforma orientada a objetos que fue desarrollada en el CERN
para analizar datos provenientes de los experimentos que allá se desarrollan. La plataforma computacional de ROOT fue escrita en C++ y C. Luego la sintaxis de ROOT
corresponde a la de los lenguages previamente mencionados.
En ROOT existen tres tipos distintos de códigos, que son:
1. los interpretados por el intérprete del lenguaje C++ (CINT); el cual fue desarrollado independientemente por Masaharu Goto,
2. los compilados por el Compilador Automático de Librerias de CINT (ACLIC), y
3. los que son compilados como si fueran códigos de C++.
Actualmente se esta desarrollando el intérprete CLING que lidiará con las nuevas
funcionalidades del nuevo C++ estandár C++11X.
3.1.1.
Códigos tipo CINT
Los códigos interpretados son códigos que son leidos por el intérprete linea por linea.
Cada vez que lee una linea, la traduce a su equivalente en lenguaje maquina. Cuando
un intérprete entra a un bucle, el intérprete generará un código máquina por cada linea
de iteración dentro del bucle. Dentro de esta categoría existen dos subclases: los códigos
que presentan una función sin nombre, y los que presentan una función con nombre.
Función sin nombre.
A continuación veremos un ejemplo de un código que imprime
desde ROOT por medio de CINT, éste código se llama hola.C .
85
Hola Mundo
ejecutado
1 {
2
c o u t << " \ nHola "
3
p r i n t f ( " Mundo\n" )
4 }
Y para ejecutarlo haremos:
$ root -l
root [0] .x hola.C
Hola Mundo
root [1]
y para salir de root hacemos:
root [1] .q
$
notese que en las lineas 2 y 3 de hola.C se encuentran las funciones cout y printf,
de C++ y C, respectivamente. En estas lineas en un código compilado de C o de
C++, nos haría falta agregar al nal de la linea el carácter
;
el cual puede ser omitido
en CINT sin ningún problema. También notable el hecho de no tener que agregar
#include<iostream>, ni #include<stdio.h>, las cuales
cout y printf respectivamente. Para correr el código,
la linea de comandos con la opción -l la cual lanza a root
desnuda. Y para Ejecutarlo lo hacemos con .x hola.C. El
librerias del preprocesador via
son necesarias para poder usar
invocamos a ROOT desde
sin la imagén de la mujer
comando en root
.x
queda por su abreviación de la palabra en inglés
eXecute.
Los
corchetes de las lineas 1 y 4 signican que todo lo que esta dentro de estas lineas es
parte de una función; en este caso, una función sin nombre.
Función con nombre.
Ahora veamos un ejemplo de un código con una función con nombre, este código se
llama hola2.C y contiene lo siguiente:
1 void s a l u d a ( )
2 {
3
c o u t << " \ nHola " ;
4
p r i n t f ( " Mundo\n" ) ;
5 }
y se ejecuta de la siguiente manera:
$ root -l
root [0] .L hola2.C
root [1] saluda()
Hola Mundo
root [2] .q
$
86
Para correr o ejecutar este tipo de códigos, una vez estando dentro de root, en la linea
0 se hizo
.L hola2.C,
la cual carga (Load) el contenido del código dentro de CINT.
Luego en la linea 1 simplemente llamamos a nuestra función por su respectivo nombre y
saluda(). Luego vemos el mensaje Hola Mundo, y posteriormente
.q. jemonos en la primera linea del código la que
dice void saluda(), en esta linea se especica que la función saluda no toma ningún
argumento (porque no hay nada entre los paréntesis) y además que la función saluda
no devuelve ningún tipo de valor, o lo que es lo mismo, que saluda devuelve un void.
En las lineas 3 y 4 tenemos que agregar el ; o de lo contrario CINT nos arrojará el
argumentos, es decir,
en la linea 2 salimos de root mediante
mensaje de error:
Syntax Error: cout<<"\nHola" printf(" Mundo\n") Maybe missing ';' hola2.C:5:
*** Interpreter error recovered ***
Los códigos de ROOT que actualmente puede procesar la GRID de GISELA, son códigos
que presentan funciones sin nombre interpretados por CINT.
3.2.
ROOT ejemplo por ejemplo
Los códigos ROOT usan la sintaxis de C/C++ debido a que fue construido sobre
estos lenguages computacionales. ROOT internamente renombra algunos tipos de datos
de C/C++ por unos tipos de nombre parecidos, que son:
1.
char
2.
float
3.
double
por
Char_t.
por
Float_t.
por
Double_t.
4. etcétera etcétera. Para mas información sobre estos aliases, el usuario puede ver
el archivo
$ROOTSYS/core/base/inc/Rtypes.h
en donde están todos los aliases
que utiliza ROOT. Vale la pena decir que todas los arhivos de cabecera de ROOT
incluyen a Rtypes.h, así que los usuarios generalmente no tienen que incluirlo,
además de esto, el usuario puede usar indistintamente los tipos C/C++ en lugar
de los de ROOT sin ningún problema.
También es bueno volver a repetir que en los códigos ROOT que enviaremos a GISELA,
no agregaremos archivos de cabecera via include. Por otro lado, ROOT tiene varios
apuntadores globales que facilitan el trabajo a la hora de escribir código, los apuntadores
globales mas usados son:
1.
gROOT,
este apuntador tiene acceso a toda la información de la sesión actual por
medio de una instancia del objeto TROOT. La mayor parte de los usos es a través
de llamadas a los siguientes métodos:
87
gROOT->GetListOfClasses()
gROOT->GetListOfColors()
gROOT->GetListOfTypes()
gROOT->GetListOfGlobals()
gROOT->GetListOfGlobalFunctions()
gROOT->GetListOfFiles()
gROOT->GetListOfMappedFiles()
gROOT->GetListOfSockets()
gROOT->GetListOfCanvases()
gROOT->GetListOfStyles()
gROOT->GetListOfFunctions()
gROOT->GetListOfSpecials()
gROOT->GetListOfGeometries()
gROOT->GetListOfBrowsers()
gROOT->GetListOfMessageHandlers()
Estos métodos devuelven una
TSeqCollection,
es decir, una lista de objetos
en secuencia, que pueden ser usados para aplicarles alguna operación tal como
encontrar un objeto, o recorrer la lista y llamar a un método para cada uno de
los miembros de la lista. Por ejemplo:
gROOT->GetListOfCanvases()->FindObject("c1");
Se acostumbra a reestablecer a ceros las sesiones de ROOT al inicio de las mismas
por medio del comando
gROOT->Reset()
2.
gFile,
3.
gDirectory,
este apuntador tiene acceso al archivo abierto actual.
este apuntador tiene acceso al directorio actual de la clase contene-
doras de ROOT que se esté analizando.
4.
gPad,
un objeto gráco siempre se dibuja en el pad activo actual. Es conveniente
poder acceder al pad activo. Para eso está gPad que siempre está apuntando al
pad activo. Por ejemplo, si uno quiere cambiar el color de llenado del pad activo
a azúl, pero el usuario no sabe el nombre de él (el pad activo), entonces puede
usar gPad.
5.
6.
gRandom,
gEnv,
accede al generador de números aleatorios actual.
accede a la información de las variables del ambiente computacional en
el que se esta trabajando. Un ejemplo sería imprimir la información del nodo
de la GRID de GISELA en donde nuestro código esta corriendo. Esto se puede
conseguir mediante el comando
gEnv->Print();
88
.
3.2.1.
Análisis del archivo ROOT proveniente del código DEMO
Recordemos el código ROOT del demo de GISELA, el cual era:
1 {
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 }
gROOT−>Reset ( ) ;
TFile * f = new TFile ( " phsp . r o o t " ) ;
TTree * PhaseSpace = ( TTree * ) g D i r e c t o r y −>Get ( " PhaseSpace " ) ;
// D e c l a r a t i o n o f l e a v e s t y p e s − TTree PhaseSpace
Ekine ;
Weight ;
X;
Y;
// Float_t
Z;
Float_t
dX ;
Float_t
dY ;
Float_t
dZ ;
Char_t volumeName [ 6 4 ] ;
Char_t p a r t i c l e N a m e [ 6 4 ] ;
Char_t procName [ 6 4 ] ;
Float_t
Float_t
Float_t
Float_t
// S e t branch a d d r e s s e s − TTree PhaseSpace
PhaseSpace −>SetBranchAddress ( " ParticleName " ,& p a r t i c l e N a m e ) ;
PhaseSpace −>SetBranchAddress ( " ProductionVolume " ,&volumeName ) ;
PhaseSpace −>SetBranchAddress ( " P r o d u c t i o n P r o c e s s " ,&procName ) ;
PhaseSpace −>SetBranchAddress ( " Ekine " ,& Ekine ) ;
PhaseSpace −>SetBranchAddress ( " Weight " ,&Weight ) ;
PhaseSpace −>SetBranchAddress ( "X" ,&X ) ;
PhaseSpace −>SetBranchAddress ( "Y" ,&Y ) ;
// PhaseSpace −>SetBranchAddress ( "Z",&Z ) ;
PhaseSpace −>SetBranchAddress ( "dX" ,&dX ) ;
PhaseSpace −>SetBranchAddress ( "dY" ,&dY ) ;
PhaseSpace −>SetBranchAddress ( "dZ" ,&dZ ) ;
Int_t n e n t r i e s = PhaseSpace −>G e t E n t r i e s ( ) ;
cout<<" n e n t r i e s :
Int_t n b y t e s = 0 ;
"<<
n e n t r i e s <<e n d l ;
// l o o p on t h e e v e n t s i n t h e TTree PhaseSpace
f o r ( Int_t i =0; i <n e n t r i e s ; i ++)
{
n b y t e s += PhaseSpace −>GetEntry ( i ) ;
cout<<pa rt icl eNa me <<" −−−Ek = "<<Ekine<<" MeV"<<e n d l ;
}
En este código vemos que en ROOT al igual que en C++, las líneas comentadas empiezan con doble slash //. En este tutorial las líneas comentadas de ROOT aparecerán
89
en verde. Otra manera de comentar muchas líneas es colocar /* al comienzo del bloque
a ser comentado, y */ al nal del bloque a ser comentado. En la línea 2 del antiguo
código se puede ver el comando gROOT->Reset(); el cual reestablece todas las variables y apuntadores globales de ROOT a sus valores predeterminados. Luego la línea
3
TFile *f = new TFile("phsp.root");
nos indica que se abra el archivo llamado phsp.root. La línea 5
TTree *PhaseSpace = (TTree*)gDirectory->Get("PhaseSpace");
nos dice que mediante gDirectory (que actualmente está apuntando al archivo activo
del TFile) se acceda al apuntador a arbol llamado PhaseSpace. (TTree *) nos indica que el tipo de dato devuelto luego de atrapar a PhaseSpace mediante gDirectory,
sea convertido a un apuntador a TTree. TTree *PhaseSpace = nos indica que almacenaremos el resultado de la expresión del lado derecho en un apuntador a TTree
llamado PhaseSpace. Desde la línea 7 hasta la línea 14 se denen 7 variables de tipo
otante llamadas: Ekine, Weight, X, Y, dX, dY, y dZ. Desde la línea 15 hasta la línea
17 vemos como se denen 3 arrays de carácteres de largo 64 llamados: volumeName,
particleName, y procName. Las líneas 21 a 31 utilizan el métdo SetBranchAddres de la
clase TTree. Este método esta tomando 2 argumentos aunque normalmente se usa con
3 argumentos. En este momento explicaremos la versión que toma 2 argumentos:
verb|PhaseSpace->SetBranchAddress("variable",&variable);|
el primer argumento hace referencia al nombre que se le va a dar a la variable en
nuestro programa, mientras que el segundo argumento hace referencia al nombre de la
variable que se encuentra dentro del árbol. Es fácil ver esto por el ampersand & que se
encuentra a la izquierda de la variable, en ese sentido pasamos la dirección de variable
dentro de árbol a la función SetBranchAddress. La línea 33
Int_t nentries = PhaseSpace->GetEntries
inicializa a nentries con el número de entradas que tiene el árbol PhaseSpace. La línea
35 imprime en pantalla el valor de nentries
cout<<"nentries:
"<< nentries << endl;
La línea 36
Int_t nbytes = 0;
declara e inicializa nbytes a cero. El bucle de las líneas 40 hasta 44
for (Int_t i=0; i<nentries;i++)
{
nbytes += PhaseSpace->GetEntry(i);
cout<<particleName<<" ---Ek = "<<Ekine<<" MeV"<<endl;
}
recorre todas las entradas dentro del árbol PhaseSpace imprime el nombre de la partícula y su energía cinética.
90
3.2.2.
Histogramas
Una poderosa herramienta que posee ROOT son los histogramas. Los histogramas
pueden ser usados dentro de los códigos tipo root con las variables guardadas en los
archivos .root creados en un código GATE. Para denir un histograma debemos denir
el intervalo mediante un límite inferior y un límite superior, también debemos denir
el número de bines del histograma, junto con un nombre del histograma y un título del
histograma. Por ejemplo para denir un histograma de números otantes, usaremos la
línea.
1 TH1F *h = new TH1F( "nombre" , " t i t u l o " , 2 5 , − 5 , 5 ) ;
aquí 25 es el número de bines, -5 es el límite inferior y 5 es el límite superior. Luego
tendremos que llenar el histograma con el comando Fill. Por ejemplo:
1 f o r ( int i = − 5000; i <=5000; i ++){
2
h−>F i l l ( i * 0 . 0 0 1 ) ;
3
h−>F i l l ( 0 ) ;
4 }
en el ejemplo anterior,
i*0.001
era la variable de tipo otante. Para guardar el histogra-
ma usamos el comando SaveAs.
1 h−>SaveAs ( " h i s t o . j p g " ) ;
Este ejemplo produce el siguiente archivo:
Figura 3.1: Histograma generado en el código anterior.
Finalmente los histogramas pueden ser de tipo int TH1I, de tipo double TH1D y de
tipo char TH1C.
91
Bibliografía
[1] Gate hereda todos los conceptos de geant4, página web de geant4.
cern.ch/support/userdocuments.shtml.
http://geant4.
http://wiki.opengatecollaboration.
org/index.php/Users_Guide:Architecture_of_the_simulation.
[2] Arquitectura de una simulación en gate.
[3] Denición de: Salida, entrada, y error estándar.
Standard_streams.
[4] La librería gráca abierta.
[5] El servidor x.
[6] Coordenadas
esfericas.
[7]
http://en.wikipedia.org/wiki/
http://www.opengl.org/.
http://www.x.org/wiki/.
esféricas.
http://es.wikipedia.org/wiki/Coordenadas_
http://wiki.opengatecollaboration.org/index.php/Users_Guide_V6:
Data_output.
[8] R. Brun and F. Rademakers. ROOT: An object oriented data analysis framework.
Nucl.Instrum.Meth., A389:8186, 1997.
92
Descargar