La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Pedro Arce GAMOS 26 Mayo 2006 1 GAMOS (Geant4 Architecture for Medicine-Oriented Simulations) Pedro Arce Dubois Pedro Rato Mendes Grupo de Fisica Médica."— Transcripción de la presentación:

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

2 Pedro Arce GAMOS 26 Mayo 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 Indice 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 Pedro Arce GAMOS 26 Mayo 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… GAMOS (Geant4 Architecture for Medicine-Oriented Simulations)

4 Pedro Arce GAMOS 26 Mayo 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 GAMOS (Geant4 Architecture for Medicine-Oriented Simulations)

5 Pedro Arce GAMOS 26 Mayo 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 GAMOS (Geant4 Architecture for Medicine-Oriented Simulations)

6 Pedro Arce GAMOS 26 Mayo 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 Que es un plug-in?

7 Pedro Arce GAMOS 26 Mayo 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, …)... Geometría

8 Pedro Arce GAMOS 26 Mayo GDML document … … … … positions, rotations materials solids geometry tree 'world' volume

9 Pedro Arce GAMOS 26 Mayo GAG:

10 Pedro Arce GAMOS 26 Mayo GAG:

11 Pedro Arce GAMOS 26 Mayo GAG:

12 Pedro Arce GAMOS 26 Mayo 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 = GamosMaterialMgr::GetInstance() ->GetG4Material(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 Utilidades de Geometría

13 Pedro Arce GAMOS 26 Mayo 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-, Cada partícula o isótopo puede tener una combinación distinta de distribuciones de tiempo, energía, posición y ángulo

14 Pedro Arce GAMOS 26 Mayo GAMOS Generator constant decay beta decay Time spectrum logical volume(s) 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

15 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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; std::set$ $ theTrackIDs; lista de todas las trazas que forman el hit std::set$ $ theOriginalTrackIDs; lista de los fotones que produjeran las trazas que forman el hit std::vector$ $ theEDepos; lista de energías depositadas G4String theSDType;

21 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 SD:Hits:MeasuringTime:Calor 10.*ns

23 Pedro Arce GAMOS 26 Mayo 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 SD:Hits:DeadTime:Calor 100.*ns

24 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 GamosHitsEventMgr::GetInstance(pet)->GetHisto1(1234) ->Fill(ener); GamosHitsEventMgr::GetInstance(pet)->GetHisto1(CalorSD: hits energy)->Fill(ener); Se pueden tener varios ficheros cada uno con sus histogramas Al crear un histograma se elige el nombre del fichero

26 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo Visualización Simulación PET CTI ECAT Exact (922) Desintegraciones F18 distribuidas en NEMA94

28 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo Visualización con IGUANA

30 Pedro Arce GAMOS 26 Mayo 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 SD:Hits:EnergyResolution 0.1 Se accede a ese valor en cualquier parte del código float enerResol = GamosParameterMgr::GetInstance() ->GetNumericValue(SD:Hits:EnergyResolution,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 Pedro Arce GAMOS 26 Mayo 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 << SDVerb(3) << starting SD construction << G4endl; 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 Pedro Arce GAMOS 26 Mayo 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 TrackingVerbose:EventMin 1000 /gamos/setParam TrackingVerbose:EventMax 1010 /gamos/setParam TrackingVerbose:TrackMin 10 /gamos/setParam TrackingVerbose:TrackMax 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 TrackCount:EachNEvent 1000

33 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo

38 Pedro Arce GAMOS 26 Mayo

39 Pedro Arce GAMOS 26 Mayo

40 Pedro Arce GAMOS 26 Mayo

41 Pedro Arce GAMOS 26 Mayo

42 Pedro Arce GAMOS 26 Mayo

43 Pedro Arce GAMOS 26 Mayo

44 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo Ejemplos de histogramas ITACAEventClassifier: Histogramas sobre la clasificación en sucesos PET e ITACA Clasificación Número de clusters 511 / E=E_3erFotón Distancia línea - origen / cono - origen

49 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 ITACA:EvtClass:PET511EPrec 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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 Pedro Arce GAMOS 26 Mayo 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


Descargar ppt "Pedro Arce GAMOS 26 Mayo 2006 1 GAMOS (Geant4 Architecture for Medicine-Oriented Simulations) Pedro Arce Dubois Pedro Rato Mendes Grupo de Fisica Médica."

Presentaciones similares


Anuncios Google