Geant4

toc =1. Quick start= Geant4 (Geometry and Tracking), es una herramienta para la simulación del paso de partículas a através de materia. Se basa en rutinas Monte Carlo y se encuentra desarrollado en C++. Set trata de un conjunto de librerías, no de una aplicación. Por lo tanto, el usuario deberá generar sus propias aplicaciones a partir del conjunto de librerías que proporciona Geant4. Las aplicaciones desarrolladas pueden ejecutarse mediante macro lenguaje.

Los campos de aplicación incluyen: física de altas energías, nuclear, ciencia espacial y medicina entre otras.

1.1 Instalación
La instalación es para sistemas operativos LINUX. Descarga Geant4 code format="bash" usuario@maquina:~$ mkdir Geant4; cd Geant4 usuario@maquina:~$ tar zxf geant4.9.6.p02.tar.gz usuario@maquina:~$ mkdir geant4-build geant4-install usuario@maquina:~$ cd geant4-buid usuario@maquina:~$ cmake -DGEANT4_INSTALL_DATA=OFF -DGEANT4_USE_OPENGL_X11=ON -DGEANT4_USE_RAYTRACER_X11=ON ../geant4.9.6.p02 usuario@maquina:~$ make -j8    # si  tienes 8 procesadores usuario@maquina:~$ make install code Por el momento, se desactivan los //DATA// //files// con las tablas de secciones eficaces para ahorrar tiempo en la descarga. Con forme a las necesidades de las aplicaciones desarrolladas se pueden ir agregando con el tiempo. Por ejemplo, la librería [|G4EMLOW] será agregada al la variable de entorno G4LEDATA mediante

code format="bash" usuario@maquina:~$ cd Geant4 usuario@maquina:~$ mkdir G4DATA; cd G4DATA usuario@maquina:~$ tar zxf /lugar/donde/este/G4EMLOW6.32.tar.gz usuario@maquina:~$ export G4LEDATA=$HOME/Geant4/G4DATA/G4EMLOW6.32 code Una vez instalado, asegurarse de definir las siguientes variables de entorno: code format="perl" usuario@maquina:~$ export G4LEDATA=$HOME/Geant4/G4DATA/G4EMLOW6.32 usuario@maquina:~$ export G4NEUTRONHPDATA=$HOME/Geant4/G4DATA/G4NDL4.2 # si se descargó usuario@maquina:~$ export G4RADIOACTIVEDTA=$HOME/Geant4/G4DATA/RadioactiveDecay3.6 # si se descargó

usuario@maquina:~$ cd $HOME/Geant4/geant4.9.6.p02/examples/novice usuario@maquina:~$ cmake. usuario@maquina:~$ make -j8 -f Makefile usuario@maquina:~$ ./N03 idle> /run/beamOn 222 idle> exit
 * 1) Una prueba

code

=2. Conceptos básicos=

2.1 G4Run
G4Run es una colección de eventos, los cuales comparten las mismas condiciones físicas dentro del mismo detector. Para iniciar la simulación (Run), debe invocarse el comando: code format="python" Idle>/run/beamOn 3 code Después de esto, la geometría no puede modificarse (agregar sólidos, materiales, etc) ni agregarse o definirse más procesos físicos (ya incluidos por el usuario)
 * 1) Esto es un comentario. El número 3 es arbitrario en este ejemplo

2.1.1 Uso de G4Run
Se debe incluir en el archivo main de la siguiente manera: code format="cpp"
 * 1) include "G4RunManger.hh"

void main{ ... G4RunManager* runManager = new G4RunManager; ... runManger->SetUserInitialization(physics); ... G4UserRunAction* run_action = new UserDefinedRunAction; runManager->SetUserAction(run_action); runManager->SetUserAction(gen_action);

delete runManager; } code

2.2 G4Event
Es la unidad básica de simulación en Geant4, el siguiente diagrama muestra el proceso G4Event.



2.2.1 Uso de G4Event.
code format="cpp" // Fragmento del archivo UserEventAction.cc // implementado por el usuario a partir de G4Event.hh
 * Entrada: Lista de partículas primarias.
 * Salida: la colección de interacciones y trayectorias.
 * Se implementa aquí el análisis y llenado de histogramas


 * 1) include "G4Event.hh"
 * 2) include "G4EventManager.hh"
 * 3) include "UserEventAction.hh" // Desarrolado por el usuario

UserEventAction::UserEventAction {} UserEventAction::~UserEventAction {}

void UserEventAction::BeginOfEventAction(const G4Event*) { // Puede definir parámetros para salida de datos } void UserEventAction::EndOfEventAction(const G4Event*) { // Llenar histogramas: energía, tiempo, posición } code

2.3 G4Track
Puede verse como una "fotografía instantánea" de la partícula, debido a que mantiene las cantidades físicas de la interacción actual de la partícula. Se actualiza si el anterior:
 * Sale de "world
 * Desaparece (e.g. decae o se aniquila)
 * Su energía cinética es cero.
 * Por medio de umbrales es descartado

2.4 G4Step
Contiene información en tiempo de vuelo de la partícula: Energia/tiempo finales - energía/tiempo inicial. Éste "conoce" el material y volumen en cada punto y finaliza en la frontera con otro material o volumen. Esto permite la solución de problemas de frontera/interfaces.

2.4 G4Particle
Se auxila de tres clases para definir una partícula: G4Track, G4Dymamic Particle y G4ParticleDefinition.



2.5 Tracking and Process
Es esta parte, se generan partículas secundarias y se determina la duración del step. Además se listan los procesos físicos aplicables a cada partícula: electromagnéticos por ejemplo. Se considera su implementación: AtRest (e.g. decaimiento), AlongStep (e.g. Cerenkov) y PostStep (e.g. Compton)

=3. Construyendo una simulación= Antes de construir una simulación, considérese lo siguiente, defina

3.1 Geometría
Considere las siguientes clases:
 * G4VUserDetectorConstruction (Obligatoria)
 * G4UserDetectorConstruction (Definida por el usuario)
 * Materiales, volumen, sensitive detector. (En Construct de G4UserDetectorConstruction)
 * Visualización.

3.2 Física

 * G4VUserPhysicsList (Obligatoria)
 * Definir las partículas necesarias: e+, e-, gamma, etc
 * Los procesos físicos para cada partícula: EM, Hadrónicos, etc.
 * Rangos de corte: geométrico (sale del world), físico (energía de corte, etc)

3.3 Cómo se inicia el evento: partículas primarias.

 * G4VUserPrimaryGeneratorAction (Obligatoria)
 * G4ParticleGun (Genera distribución incial de emisión de partículas)
 * Se puede realizar interfaces con: CLHEP, CORSIKA, etc.
 * G4GeneralParticleSource (Opcional para distribuciones predefinidas)

3.4 Extraer información

 * Se invoca durante el "BeamOn", se constuye en el main vía RunManager
 * G4UserRunAction (inicia/llenado de histogramas)
 * G4UserEventAction (inicia/llenado de histogramas)
 * G4UserSteppingAction (estado del Step)
 * G4UserTrackingAction (estado del Track)

3.4.1 Construir G4RunManager y agregarle las clases

 * G4VUserDetectorConstruction
 * G4VUserPhysicsList
 * G4VUserPrimaryGeneratorAction
 * Clases definidas por el usuario: AnalisisManager, Verbosidad, etc

3.4.2 Construir G4UIsession e invocar sessionStart

 * G4UIterminal, G4UIBatch

3.4.3 Definir G4VisManager de acuerdo a los drivers instalados

 * OpenGL
 * DAWN
 * WIRED
 * VRML
 * Otros

=4. Sistema de unidades y macro lenguaje=

4.1 Sistema de unidades
Geant4 permite el uso de cantidades con unidades (mm, eV, kelvin) y prefijos (Mega, mili, nano) desde el código fuente: code format="cpp" // Permitiendo definir nuevas a partir de las del SI milimetro = mm = 1; metro = m = 1000*mm; m3 = m*m*m;

// Para utilizarlas se debe dar la unidad de los datos que se // van a introducir G4double energia = 10.4*GeV; G4double densidad = 11*g/cm3; code O desde línea de comandos code format="cpp" /gun/energy 1.3 GeV /gun/position 0.2 0 0 m code Al imprimir o guardar los datos se debe dividir entre la unidad con prefijo, e.g code format="cpp" G4cout << "Energia particula" << Energia / MeV << " MeV" << G4endl; G4cout << "Posicion x      " << Posicion / m  << " m  " << G4endl; code Para definir nuevas unidades (dentro del código fuente), se procede code format="cpp" static const G4double pulgada = 2.54*cm;
 * 1) include "SystemOfUnits.hh"

// implementada longitud = 3.4*pulgada;

// Otro ejemplo G4UnitDefinition(nombre, simbolo, categoria, valor) G4UnitDefinition("km/hora", "km/h", "Rapidez", km/ (3600*s)); code

4.2 Macro-Lenguaje
El macro lenguaje es un pseudo lenguaje basado en comandos. Al utilizar Geant4 se utilizan comandos definidos intrínsecamente por el programa, o nuevos comandos definidos por el usuario en la aplicación que se ha desarrollado. Los comandos se clasifican en code format="perl" preInit> /Directorio/subdirectorio/comando parámetro
 * 1) Directorio
 * 2) Subdirectorio
 * 3) Comando
 * 4) Parámetro

idle> # Esto es un comentario idle> # ejemplo de macro lenguaje para Geant4 idle> /control/verbose 0 idle> /run/verbose 0 idle> /vis/disable idle> /gps/particle e+ idle> /gps/pos/type Plane idle> /gps/pos/shape Square idle> /gps/pos/centre 0. 0. 0. cm idle> /gps/pos/halfx 0.2 mm idle> /gps/pos/halfy 0.2 mm idle> /gps/pos/halfz 0.2 mm idle> /gps/ang/type iso idle> /gps/ene/type Gauss idle> /gps/ene/mono 511 keV idle> /gps/ene/sigma 100. keV idle> # Ahora inicia la simulacion idle> /run/beamOn 100000

code A. Apéndice 1 Variables de entorno a definir: Obligatorias Para procesos físicos: secciones transversales.
 * 1) G4INSTALL
 * 2) G4WORKDIR
 * 3) G4SYSTEM
 * 4) CLHEP_BASE_DIR
 * 5) LD_LIBRARY_PATH
 * 1) G4LEVELGAMMADATA
 * 2) G4RADIOACTIVEDATA
 * 3) G4LEDATA
 * 4) G4NEUTRONHPDATA
 * 5) G4ABLEDATA
 * 6) G4REALSURFACEDATA