GAMOS - PowerPoint PPT Presentation

About This Presentation
Title:

GAMOS

Description:

Pedro Arce GAMOS 26 Mayo 2006. 3. GAMOS debe ser capaz de permitir que un usuario ... photon-epdl: low energy Evaluated Particle Data Library ... – PowerPoint PPT presentation

Number of Views:179
Avg rating:3.0/5.0
Slides: 56
Provided by: ifca
Category:
Tags: gamos | evaluated

less

Transcript and Presenter's Notes

Title: GAMOS


1
  • GAMOS
  • (Geant4 Architecture for
  • Medicine-Oriented Simulations)
  • Pedro Arce Dubois
  • Pedro Rato Mendes
  • Grupo de Fisica Médica del CIEMAT
  • 26 Mayo 2006

2
Indice
  • Introducción
  • Objetivos de GAMOS
  • Qué es un plug-in
  • Geometría
  • Generador
  • Física
  • Acciones de usuario
  • Detectores sensitivos y hits
  • Histogramas
  • Visualización
  • Utilidades
  • Manejo de parámetros
  • Manejo de verbosidad
  • Manejo de ficheros de input
  • Output para reconstrucción
  • Ejemplos
  • PET e ITACA
  • Histogramas
  • Resumen
  • Primer
  • Uso de GAMOS

3
GAMOS (Geant4 Architecture for Medicine-Oriented
Simulations)
  • GAMOS debe ser capaz de permitir que un usuario
  • Simule su proyecto sin conocer nada GEANT4, ni
    C
  • Pueda añadir una nueva funcionalidad y a la vez
    reutilizar toda la funcionalidad que quiera de
    GAMOS
  • Debe ser completo, flexible, ampliable y fácil de
    usar
  • COMPLETO
  • Proporcione la funcionalidad que pueda necesitar
    quien quiera simular un proyecto de física médica
  • Imposible cubrir todo lo que un usuario pueda
    necesitar
  • Ha de ser ampliable
  • Irá creciendo con el tiempo

4
GAMOS (Geant4 Architecture for Medicine-Oriented
Simulations)
  • FLEXIBLE
  • Lo que hace se puede decidir desde el exterior,
    con un fichero de comandos
  • Con comandos se pueden combinar distintos
    módulos a gusto del usuario
  • Cambiar la geometría pero no los histogramas
  • Cambiar el tipo de detector sensitivo pero dejar
    la clasificación PET
  • ...
  • MODULAR Cada clase, cada programa hace una y
    solo una cosa, bien definida y a la vez lo más
    general posible

5
GAMOS (Geant4 Architecture for Medicine-Oriented
Simulations)
  • AMPLIABLE
  • Fácil de añadir cualquier nueva funcionalidad
  • Reutilizar la funcionalidad existente con
    mínimos cambios
  • Basado en plug-ins, de modo que se pueden
    añadir módulos sin afectar a otros
  • FÁCIL DE USAR
  • Casi todo se pueda hacer con un fichero de
    comandos
  • Un buen diseño, aplicando las técnicas de
    ingeniería del software
  • Bien documentado

6
Que es un plug-in?
  • El programa principal de GAMOS no tiene
    componentes predefinidos
  • En run-time se elige que componentes se cargan
    según la lista de input
  • El usuario tiene plena libvgertad en la elección
    de componentes
  • Los componente se cambian en el macro de input,
    sin tener que escribir código C y recompilar
  • El usuario puede definir un componente no
    previsto por GAMOS
  • Lo puede usar con añadirlo a la lista en el
    fichero de input
  • Puede mezclarlo con cualquier otro componente
    suyo o de GAMOS
  • Para la implementación de plug-in's en GAMOS se
    ha elegido la librería del CERN SEAL

7
Geometría
  • Cuatro modos de definirla
  • Con código C
  • De la manera usual en GEANT4
  • La clase se convierte en un plug-in para poder
    seleccionarla en el macro de input
  • Con GDML (GEANT4 Detector Modeling Language)
  • Escribe la geometría en GDML
  • Selecciona
  • /gamos/selectGeometry GDMLDetectorConstruction
  • Con GAG (GEANT4 Adaptative GUI)
  • Con un GUI se escribe la geometría
  • EL output es C o GDML
  • Usando los ejemplos de GAMOS
  • PET se puede definir con un fichero de 8
    parámetros (n_crystals, crystal_x/y/z, radius, )
  • ...

8
GDML document
  • lt?xml version"1.0" encoding"UTF-8"?gt
  • ltgdml xsinoNamespaceSchemaLocation"GDMLSchema/gd
    ml.xsd"gt
  • ltdefinegt
  • ltposition name"TrackerinWorldpos" unit"mm"
    x"0" y"0" z"100"/gt
  • lt/definegt
  • ltmaterialsgt
  • ltmaterial formula" " name"Air" gt
  • ltD value"1.290" unit"mg/cm3"/gt
  • ltfraction n"0.7" ref"Nitrogen" /gt
  • ltfraction n"0.3" ref"Oxygen" /gt
  • lt/materialgt
  • lt/materialsgt
  • ltsolidsgt
  • ltbox lunit"mm" name"Tracker" x"50" y"50"
    z"50"/gt
  • lt/solidsgt
  • ltstructuregt

positions, rotations
materials
solids
geometry tree
'world' volume
9
GAG
10
GAG
11
GAG
12
Utilidades de Geometría
  • Utilidades que pueden ser usadas con un comando o
    desde cualquier lugar del código de usuario
  • Fábrica de materiales
  • GAMOS lee una larga lista de materiales de un
    fichero
  • Construye un G4Material a demanda del usuario
  • G4Material bgo GamosMaterialMgrGetInstance()
    -gtGetG4Material(BGO)
  • Imprimir lista de
  • Materiales
  • Sólidos
  • Volúmenes lógicos
  • Volúmenes físicos
  • Touchables
  • Encontrar un volumen por nombre
  • Borrar un volumen de la geometría

TO BE DONE...
13
Generador de sucesos
  • Con código C
  • De la manera usual en GEANT4
  • La clase se convierte en un plug-in para poder
    seleccionarla en el macro de input
  • Usando GAMOS generator
  • Combina cualquier número de partículas o
    isótopos que decaen a e, e-, g
  • Cada partícula o isótopo puede tener una
    combinación distinta de distribuciones de tiempo,
    energía, posición y ángulo

14
GAMOS Generator
  • Basado en G4GeneralParticleSource, añadiéndole
  • Espectros de tiempo
  • 1 o muchas partículas 1 o muchos isotópos que
    decaen al mismo tiempo
  • Algunas distribuciones extra

Time spectrum

constant
decay
beta decay
logical volume(s)
15
Física
  • Con código C
  • De la manera usual en GEANT4
  • La clase se convierte en un plug-in para poder
    seleccionarla en el macro de comandos
  • Usando GAMOS physics list
  • Basada en el ejemplo avanzado de GEANT4 sobre
    hadroterapia
  • Se pueden combinar diferentes listas de física
    para fotones, electrones, positrones, muones,
    protones, e iones
  • fotones
  • photon-epdl low energy Evaluated Particle Data
    Library
  • photon-standard standard electromagnetic
    processes (no low energy)
  • photon-penelope processes a' la Penelope
  • electrones
  • electron-eedl low energy Evaluated Particle
    Data Library
  • electron-standard standard electromagnetic
    processes (no low energy)
  • electron-penelope processes a' la Penelope

16
Física
  • positrones
  • positron-standard standard electromagnetic
    processes (no low energy)
  • positron-penelope processes a' la Penelope
  • muones
  • muon-standard standard electromagnetic
    processes (no low energy)
  • protones
  • proton-precompound precompound evaporation
    model
  • proton-precompoundFermi precompound evaporation
    plus Fermi break-up models
  • proton-precompoundGEM precompound GEM
    evaporation model
  • proton-precompoundGEMFermi precompound GEM
    evaporation plus Fermi break-up models
  • proton-precompund-binary binary cascade model
    with the default precompound

17
Física
  • iones
  • ion-LowE low energy processes, with CIRU49 as
    stopping power parameterisation
  • ion-standard standard electromagnetic processes
    (no low energy)
  • ion-LowE-ziegler1977 low energy processes, with
    Ziegler 1977 as stopping parameterisation
  • ion-LowE-ziegler1985 low energy processes, with
    Ziegler 1985 as stopping parameterisation
  • ion-LowE-ziegler2000 low energy processes, with
    SRIM2000 as stopping parameterisation

18
Acciones de usuario
  • Son el modo como interaccionar con la ejecución
    del programa y extraer información o modificarlo
  • Al principio/fin de cada Run, al principio/fin
    de cada Event, al principio/fin de cada Track,
    después de cada Step
  • GAMOS user actions
  • Se pueden tener varias acciones de usuario del
    mismo tipo
  • Permite separar las distintas funcionalidades
  • Se puede activar/desactivar una acción de
    usuario con una línea de comando

19
Detectores sensitivos y Hits
  • Para producir hits en GEANT4 el usuario tiene
    que
  • Definir una clase que herede de
    G4VSensitiveDetector
  • Asociarla a un G4LogicalVolume
  • Crear hits cada vez que una partícula atraviese
    el volumen sensitivo
  • Limpiar la lista de hits al final de cada suceso
  • En GAMOS esto se puede hacer con un comando
  • /gamos/assocSD2LogVol SD_CLASS SD_TYPE
    LOGVOL_NAME
  • Hay dos clases de SD en GAMOS
  • Simple a cada volumen se le asocia un SD ? un
    hit
  • VirtuallySegmented un volumen se segmenta y se
    construye un hit diferente en cada trozo

20
GAMOS hits
  • Cada vez que una traza deposita energía en un
    volumen que tiene asociado un SD, se crea un hit
  • Si en el mismo suceso se deposita energía en el
    mismo volumen, la energía se añade al hit
    existente
  • Un hit tiene la información
  • G4int theDetUnitID ID de la copia del volumen
    sensitivo
  • G4int theEventID
  • G4double theEnergy
  • G4double theTimeMin tiempo del primer depósito
    de E
  • G4double theTimeMax tiempo del último depósito
    de E
  • G4ThreeVector thePosition
  • stdsetltG4intgt theTrackIDs lista de todas
    las trazas que forman el hit
  • stdsetltG4intgt theOriginalTrackIDs lista
    de los fotones que produjeran las trazas que
    forman el hit
  • stdvectorltGamosEDepogt theEDepos lista de
    energías depositadas
  • G4String theSDType

21
GAMOS clusters de hits
  • GAMOS puede unir varios hits en uno (cluster)
  • Para recuperar 511 keV si ha habido una
    interacción Compton previamente
  • Para unir los hits de la misma cascada
    electromagnética de un electrón
  • Dos tipos de clusterizer
  • GamosClusterizerByDistance une hits que estén
    separados menos de una distancia definida por el
    usuario
  • GamosClusterizerByBlock une hits que estén en
    el mismo bloque de cristales
  • GAMOS clusterizers son plug-ins se activan
    con un comando en el fichero de input
  • /gamos/clusterizer GamosClusterizerByDistance

22
Simulación del tiempo de medida
  • Un detector no es capaz de separar señales de
    sucesos diferentes si tienen un tiempo menor que
    un cierto valor
  • GamosHitsEventMgr
  • Acumula los hits de todos los sucesos
  • Construye una lista con los hits cuyo tiempo sea
    mayor que tiempo del suceso tiempo de medida
  • Con esta lista de hits se construyen los
    clusters
  • El tiempo de medida se puede establecer en el
    fichero de input
  • Un tiempo distinto para cada tipo de SD
  • /gamos/setParam SDHitsMeasuringTimeCalor 10.ns

23
Simulación del tiempo muerto
  • Cuando se crea un hit en un cristal, ese cristal
    (o un grupo de cristales) no es capaz de tomar
    nuevos datos durante un tiempo
  • GamosHitsEventMgr
  • Guarda una lista de los cristales que han tomado
    datos en un tiempo mayor que tiempo del suceso
    tiempo muerto del detector
  • Cuando hace la lista de hits buenos, chequea que
    el cristal que contiene al hit no esté en esa
    lista
  • El tiempo de medida se puede establecer en el
    fichero de input
  • Un tiempo distinto para cada tipo de SD
  • /gamos/setParam SDHitsDeadTimeCalor 100.ns

24
Digitalización
  • Para el ClearPET es necesario simular en detalle
    todos los efectos de la toma de datos
  • simulación del pulso de señal
  • ruido electrónico
  • filtreo de la señal
  • muestreo y conversión en cuentas de ADC
  • lógica del trigger
  • ...
  • eficiencias y resoluciones de los detectores
  • Pedro Rato está trabajando en ello

25
Histogramas
  • Varios formatos soportados ROOT, AIDA, HBOOK
  • El mismo código para crear y rellenar
    histogramas independiente del formato
  • GAMOS se encarga de escribir el fichero en el
    formato elegido al final del job
  • Tipos de histogramas 1D, 2D, Profile1D,
    Profile2D
  • GamosAnalysisMgr guarda una lista de histogramas
    para que puedan ser accedidos desde cualquier
    parte del código, por número o por nombre
  • GamosHitsEventMgrGetInstance(pet)-gtGetHisto1(1
    234) -gtFill(ener)
  • GamosHitsEventMgrGetInstance(pet)-gtGetHisto1(
    CalorSD hits energy)-gtFill(ener)
  • Se pueden tener varios ficheros cada uno con sus
    histogramas
  • Al crear un histograma se elige el nombre del
    fichero

26
Visualización
  • En GAMOS se pueden usar las mismas herramientas
    que en GEANT4
  • ASCIITree
  • GAGTree
  • OGLIX
  • OGLSX
  • DAWN
  • DAWNFILE
  • RayTracer
  • G4HepRep
  • G4HepRepFile
  • VRML1
  • VRML2
  • VRML1File
  • VMRL2File

27
Visualización
Simulación PET CTI ECAT Exact (922) Desintegraci
ones F18 distribuidas en NEMA94
28
Visualización con IGUANA
  • También es posible visualizar con IGUANA
    (Interactive Graphics for User ANAlysis)
  • Visualización 3D interactiva
  • Menú despegable de la jerarquía de volúmenes
  • Seleccionables individualmente y por jerarquía
  • Muestra por logical volume o physical volume
  • Enseña las propiedades de un volumen al hacer
    click en él
  • clip planes
  • slicers
  • Cambios de luz y colores
  • ...

29
Visualización con IGUANA
30
Manejo de parámetros
  • Algunos algoritmos dependen de parámetros que el
    usuario puede cambiar
  • GamosParameterMgr ayuda al usuario a definir un
    nuevo parámetro de forma sencilla
  • Se define un parámetro en el fichero de input
  • /gamos/setParam SDHitsEnergyResolution 0.1
  • Se accede a ese valor en cualquier parte del
    código
  • float enerResol GamosParameterMgrGetInstance()
  • -gtGetNumericValue(SDHitsEnergyResolution,0.)
  • Al usar un parámetro en el código siempre hay que
    definir un valor por defecto (para el caso de que
    no aparezca en el fichero de input)
  • Los parámetros pueden ser números o caracteres

31
Manejo de verbosidad
  • En modo normal el usuario quiere que haya poco
    output por suceso, pero cuando hay algún problema
    quiere mucho output
  • En GAMOS se puede controlar cuanta verbosidad se
    quiere desde el fichero de input
  • /gamos/verbosity GamosSDVerb 3
  • En el código se usa fácilmente
  • G4cout ltlt SDVerb(3) ltlt starting SD
    construction ltlt G4endl
  • 5 1 niveles de verbosidad
  • SilentVerb -1
  • ErrorVerb 0 (valor por defecto)
  • WarningVerb 1
  • InfoVerb 2
  • DebugVerb 3
  • TestVerb 4
  • Se pueden definir diferentes grupos de verbosidad

32
Manejo de verbosidad
  • TrackingVerbose
  • Se puede elegir para cuales sucesos y cuales
    trazas se activa el comando tracking/verbose
    (imprime cada step de cada traza)
  • /gamos/userAction TrackingVerboseUA
  • /gamos/setParam TrackingVerboseEventMin 1000
  • /gamos/setParam TrackingVerboseEventMax 1010
  • /gamos/setParam TrackingVerboseTrackMin 10
  • /gamos/setParam TrackingVerboseTrackMax 20
  • TrackCount
  • Se imprime el numero de suceso simulado cada N
    sucesos con el número de trazas del último suceso
    y acumuladas
  • /gamos/userAction TrackCountUA
  • /gamos/setParam TrackCountEachNEvent 1000

33
Manejo de ficheros de input
  • Algunos algoritmos necesitan leer un fichero con
    una lista de datos
  • En GAMOS no es necesario tener el fichero en el
    mismo directorio donde se corre el programa
  • Más fácil de utilizar el mismo fichero para
    varios programas..
  • La variable GAMOS_SEARCH_PATH contiene una lista
    de directorios donde GAMOS busca el fichero
  • Se pueden añadir más directorios

34
Output para reconstrucción
  • GAMOS escribe un fichero con la información de
    los clusters para los sucesos clasificados como
    buenos sucesos PET o ITACA
  • Antiguamente era un fichero texto, ahora queremos
    que sea binario
  • Formato PET binario ya ha sido probado (Oscar
    Vela)
  • Formato ITACA está aún en discusión

35
Ejemplos
  • Ejemplos de los casos más comunes en física
    médica
  • Como introducción a GAMOS
  • Para poder ser reutilizados por quien quiera
    implementar un caso parecido
  • Ejemplos de histogramas lo más generales
    posibles para ser reutilizados

36
Ejemplos de física médica
  • Ejemplo PET
  • Ver presentación de P. Rato
  • Ejemplo ITACA
  • Basado en el ejemplo de J.M. Pérez
  • Geometría esférica, segmentada virtualmente en
    R, theta y phi
  • Clasificación como sucesos ITACA
  • Suceso PET un par de clusters in Tracker y
    Calor con energía igual a la del tercer fotón

37
(No Transcript)
38
(No Transcript)
39
(No Transcript)
40
(No Transcript)
41
(No Transcript)
42
(No Transcript)
43
(No Transcript)
44
Ejemplos de histogramas
  • HistosPositron
  • Histogramas sobre la historia del positrón
  • energía inicial
  • rango
  • energía en la aniquilación
  • tiempo entre sucesos
  • energía de los fotones resultantes

45
Ejemplos de histogramas
  • HistosGammaAtPhantom
  • Histogramas sobre la historia de los fotones
    originales en el phantom
  • Clasificación por tipos de interacción
  • DCA fotones en la creación
  • DCA fotones al salir del phantom

46
Ejemplos de histogramas
  • HistosGammaAtSD
  • Histogramas sobre la historia de los fotones
    originales en los volúmenes sensitivos
  • Clasificación por tipos de interacción
  • energía pérdida
  • desviación en ángulo

47
Ejemplos de histogramas
  • HistosHitsAndClusters
  • Histogramas sobre los hits and clusters en cada
    tipo de SD
  • energía
  • número de deposiciones de energía / número de
    hits
  • distancia entre deposiciones de energía / entre
    hits
  • diferencia de tiempos

48
Ejemplos de histogramas
  • ITACAEventClassifier
  • Histogramas sobre la clasificación en sucesos
    PET e ITACA
  • Clasificación
  • Número de clusters 511 / EE_3erFotón
  • Distancia línea - origen / cono - origen

49
GAMOS Primer (I)
  • Ejemplo más básico en GAMOS
  • Instalar GAMOS
  • Soportado para Scientific Linux 3 y para Fedora
    Core 4
  • Utilizar los scripts de instalación automática
    (todavía hay que mejorarlos...)
  • Ir al directorio
  • cd gamos/GAMOS_0_2_0/src/PET/PETgeometry
  • Configurar GAMOS
  • gamosconf
  • Construir el fichero de input más básico
    myfile.in
  • /gamos/geometry PETgeometry
  • /gamos/physicsList GamosEMLowEnPhysics
  • /gamos/generator GamosGenerator
  • /gamos/generator/addActiveIsotope F18
  • /run/initialize
  • /run/beamOn 10
  • Correr GAMOS
  • gamos myfile.in

50
GAMOS Primer (II)
  • Añadiéndole funcionalidad
  • Añadiendo líneas de comando en el fichero de
    entrada
  • Definir un Sensitive Detector y crear hits
  • /gamos/SD/assocSD2LogVol Simple Calor crystal
  • Hacer cluster de hits
  • /gamos/clusterizer GamosClusterizerByBlock
  • Clasificar los sucesos
  • /gamos/userAction ITACAEventClassifierUA
  • Añadir histogramas
  • /gamos/userAction ItemGammaAtSD
  • Cambiar la precicisión para definir un cluster
    511
  • /gamos/setParam ITACAEvtClassPET511EPrec 0.2
  • Visualizar la geometría y las trazas al tiempo
    que se corre
  • /control/execute vis.OGLIX
  • Correr GAMOS guardando el output en un fichero
  • gamos myfile.in tee gamos.output
  • Producirá un fichero de histogramas item.root

51
GAMOS Primer (II)
  • Añadiéndole funcionalidad no existente
  • Geometría
  • Define tu geometría a la GEANT4
  • Dale un nombre (MiDetector)
  • Selecciónalo en tu fichero de input
  • /gamos/geometry MiDetector
  • Distribución de la posición del isótopo
  • Define tu nueva distribución (basada en
    GmVGenerDistPosition)
  • Dale un nombre (PosicionSegunTAC)
  • Selecciónalo en tu fichero de input
  • /gamos/generator/positionDist F18
    PosicionSegunTAC
  • Igual se puede hacer para
  • Física
  • Distribución de energía, tiempo o dirección del
    generador
  • Detector sensitivo
  • clusterizer
  • Acciones de usuario
  • Histogramas

52
Uso de GAMOS
  • ClearPET en CIEMAT
  • ClearPET
  • Simular geometría instalada en CIEMAT
  • Simular digitalización
  • Tracker
  • Simular geometría instalada en CIEMAT
  • Simular digitalización
  • Comparar y ajustar resultados con datos reales

53
Uso de GAMOS
  • Concepto ITACA Estudiar el rendimiento en
    condiciones realistas
  • Simular un PET animal tracker
  • Anillo virtualmente segmentado en cristales
  • Definir parámetros objetivos para la medida del
    rendimiento (sin olvidar el valor de las
    imágenes)
  • Fuentes puntuales resolución y eficiencia
  • Casos realistas cifras que midan de modo
    objetivo como de bien se detecta un punto
    caliente sobre el fondo
  • Buenas propiedades estadísticas (test de
    student)
  • Casos a simular
  • Esferas de 1 mm en aire
  • Esferas de 1 mm en agua (ratón)
  • Esferas NEMA
  • Ratón enfermo

54
Uso de GAMOS
  • Optimización de los parámetros del detector
    ITACA
  • Distancia calor tracker
  • Grosores calor tracker
  • Número de cuentas (para conseguir ventajas en
    ITACA sobre PET)
  • Resolución en energía
  • Resolución en posición
  • Tamaño del cristal
  • Medida de la posición radial
  • Resolución temporal
  • Tiempo muerto
  • Clusterificación
  • ...

55
Resumen
  • GAMOS permite simular diferentes geometrías,
    lista de física, generadores, hits, cluster de
    hits y clasifica los sucesos como PET o ITACA
  • Tiene utilidades para histogramas, manejo de
    parámetros, manejo de verbosidad, manejo de
    ficheros de input, ...
  • Tiene ejemplos de PET, ITACA y de varios
    conjuntos de histogramas
  • Gracias a la ayuda de Pedro Rato la
    funcionalidad principal de GAMOS está bastante
    debugueada
  • Podemos pensar en comenzar a simular ClearPET y
    el detector ideal de ITACA
Write a Comment
User Comments (0)
About PowerShow.com