diff --git a/Flujos/auto_simulaciones.sh b/Flujos/auto_simulaciones.sh
new file mode 100755
index 0000000000000000000000000000000000000000..cd373251be1086a3e3ff902b2065bee58633bd45
--- /dev/null
+++ b/Flujos/auto_simulaciones.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+declare -a valores=(0 5 10 15 20 25 30 35 40 45)
+
+for i in "${!valores[@]}"
+do
+	h="${valores[$i]}"
+
+        #echo "$i"
+
+	mkdir humedadc7-1kev-$h
+	cd humedadc7-1kev-$h
+
+	cmake -DGeant4_DIR6=/opt/geant4/lib/Geant4-10.3.3/ ../"direccion del directorio"/Simulacion_neutrones_monoenergeticos; make -j2 
+	./wcd -m input.in 
+	cd
+        
+        #sleep 30
+
+	cd humedad6/codigo/src
+
+	Archivo="PrimaryGeneratorAction.cc"
+ 
+	#echo "$i"
+        #"El índice es $i y el valor es $h"
+	# para realizar las modificaciones necesarias
+	echo "e" | vim -c "44 + $i" -c "normal i//" -c "45 + $i" -c "normal 2|xxx" -c "wq" "$Archivo"
+	#echo "$i"
+	cd
+	
+
+done
+
+echo "terminado"
diff --git a/Flujos/flujo_artificial.py b/Flujos/flujo_artificial.py
new file mode 100644
index 0000000000000000000000000000000000000000..03cf46b3ee0aba6498eeae9fd52f1a6940c8049b
--- /dev/null
+++ b/Flujos/flujo_artificial.py
@@ -0,0 +1,66 @@
+import random
+import numpy as np
+from scipy.stats import skewnorm
+
+# Neutrones rapidos
+# Abrir un archivo para escritura
+with open('salidasimu.shw', 'w') as f:
+    # Escribir los nombres de las columnas en la primera línea
+    f.write('#CorsikaID px py pz x y z shower_id prm_id prm_energy prm_theta prm_phi\n')
+
+    a = 1.1  # Pendiente deseada
+
+    total_samples = 1000000  # El número de muestras que deseas generar
+
+    # Genera datos uniformemente distribuidos en el rango deseado
+    data_uniform = np.random.uniform(low=1e-3, high=1e5, size= int(total_samples*0.3))# energia neutrones 1e-3eV- 1e5eV
+
+    # Aplicar la transformación logarítmica inversa
+    data_pendiente_positiva = np.exp(np.log(data_uniform) / a)
+
+    data_lognormal2 = np.random.lognormal(mean=15.7, sigma=0.9, size= int(total_samples*0.3)) #energia neutrones 1e5eV- 1e7eV
+
+    data_lognormal3 = np.random.lognormal(mean=19.5, sigma=0.9, size= int(total_samples*0.4)) #energia neutrones 1e7eV- +
+
+    energia_flujo = np.concatenate([data_pendiente_positiva, data_lognormal2, data_lognormal3])
+
+    # Mezcla los datos de forma aleatoria
+    np.random.shuffle(energia_flujo)
+
+   m = 0.939  # Masa del neutrón en GeV/c^2
+   prim_phi = np.random.uniform(low=-180, high=180, size=total_samples)  # Aleatorio para el ángulo azimutal
+   prim_theta = np.random.uniform(low=0, high=90, size=total_samples)  # Aleatorio para el ángulo cenital
+   p = np.sqrt(2 * m * energia_flujo/1e8)  # Calculamos el momento
+   # Calculamos las componentes del momento
+   px = p * np.sin(np.radians(prim_theta)) * np.cos(np.radians(prim_phi))
+   py = p * np.sin(np.radians(prim_theta)) * np.sin(np.radians(prim_phi))
+   pz = p * np.cos(np.radians(prim_theta))
+
+
+    # Escribir los datos en el archivo (mismo orden de un archivo de dalida de CORSIKA)
+    for i in range(total_samples):
+        # Escribir el CorsicaID
+        f.write('13 ')
+        num_format = "{:+013.6e}"
+
+        f.write(num_format.format(px[i]) + ' ')
+        f.write(num_format.format(py[i]) + ' ')
+        f.write(num_format.format(abs(pz[i])) + ' ')
+
+        # Escribir valores aleatorios para x, y, z
+        f.write(num_format.format(random.normalvariate(0, 25)) + ' ')
+        f.write(num_format.format(random.normalvariate(0, 25)) + ' ')
+        f.write(num_format.format(1) + ' ')
+
+        # Escribir valores aleatorios para shower_id, prm_id
+        f.write("{:03d}".format(random.randint(0, 100)) + ' ')
+        f.write("{:03d}".format(random.randint(0, 100)) + ' ')
+
+        # Escribir valores aleatorios para prm_energy
+        f.write(num_format.format(energia_flujo[i]) + ' ')
+
+        # Escribir los ángulos prim_theta y prim_phi
+        f.write("{:+010.6f}".format(prim_theta[i]) + ' ')
+        f.write("{:+011.6f}".format(prim_phi[i]) + '\n')
+
+
diff --git a/Flujos/salidasimu.shw.bz2 b/Flujos/salidasimu.shw.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..0f212e38b9fcd97dcc69cf75e79e289bfcd7b1db
Binary files /dev/null and b/Flujos/salidasimu.shw.bz2 differ
diff --git a/README.md b/README.md
index ad56cc8baab9ee743ba311b90cb32056844401e6..482029bc7ba2adfc1dab044bc7110d85a67815db 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,47 @@
-# Mitesis
+<<<<<<< README.md
 
+# Proyecto de Simulación de Interacción de Neutrones con Suelo
 
+Este repositorio contiene dos carpetas principales que abordan las simulaciones realizadas para la interacción de neutrones con suelo húmedo.
 
-## Getting started
+## 1. Simulación de Flujo de Neutrones Monoenergeticos
 
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+La carpeta `Simular_flujo_de_neutrones` contiene archivos para simular la interacción de neutrones con suelo húmedo, contándolos a través de 6 anillos concéntricos de 2 metros, con radios de 10, 25, 45, 95, 145 y 195 metros. El sistema físico consta de un bloque de suelo de 800,000 m² dividido en tres partes. Durante las simulaciones, se varía únicamente la humedad de la primera capa. En la ubicación `Simular_flujo_de_neutrones/src/`, se encuentra el archivo `PrimaryGeneratorAction.cc`, que define la inyección de neutrones, su dirección y energía.
 
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+Para las simulaciones, se inyectaron 10,000 neutrones primarios en ángulos cenitales (θ) que variaban desde 0 grados hasta 45 grados, con incrementos de 5 grados. Asimismo, los neutrones son monoenergéticos en el rango de 1 eV a 10 MeV, aumentando de a 1 década.
 
-## Add your files
+La salida del código es un archivo .root que contiene 6 histogramas, uno para cada contador. Cada barra en estos histogramas representa el número de partículas que llegan a cada contador. El orden de las partículas en los histogramas es el siguiente:
 
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
+1. Electrones y positrones
+2. Gammas
+3. Protones
+4. Neutrones
 
-```
-cd existing_repo
-git remote add origin https://gitmilab.redclara.net/mirandal/mitesis.git
-git branch -M main
-git push -uf origin main
-```
+Es posible realizar un seguimiento por paso de los siguientes parámetros: "ID", "X", "Y", "Z". 
+:  ID de la partícula y posición de la partícula.
 
-## Integrate with your tools
+Para imprimir lo anterior en pantalla, es necesario descomentar las líneas 130 a 133 en el archivo `PrimaryGeneratorAction.cc`. Al realizar esta acción, se mostrará en la pantalla el ID del neutrón y su posición en cada paso de la simulación.
 
-- [ ] [Set up project integrations](https://gitmilab.redclara.net/mirandal/mitesis/-/settings/integrations)
+Lo anterior se realiza descomentando las lineas 130 - 133, realizando esto se imprime en la pantalla el ID del neutron y su posicion en cada step. 
 
-## Collaborate with your team
+## 2. Simulación de un Flujo de Neutrones 
 
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
+En la carpeta `Simular_neutrones_monoenergeticos`, se encuentran los archivos necesarios para simular la interacción de neutrones con suelo húmedo. El sistema físico consiste en un bloque de suelo de 400,000 m² y un contador en forma de cubo con arista de 2 metros, elevado a 3 metros sobre el suelo. Las simulaciones implican cambios en la humedad del bloque de suelo, y la modificación del flujo de neutrones se logra mediante el archivo `salidasimu.shw.bz2` en la carpeta `flujos`. 
 
-## Test and Deploy
+La salida del codigo en un archivo .root donde se generan 2 histogramas.
 
-Use the built-in continuous integration in GitLab.
+1. Numero de neutrones que llegan al contador
+2. Energia de los neutrones que llegan al contador
 
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
 
-***
+Es posible realizar un seguimiento por paso de los siguientes parámetros: "N", "ID", "X", "Y", "Z", "PX", "PY", "PZ", "THETA", "PHY".
+: ID de la partícula, posición de la partícula, momento de la partícula, y ángulos cenital y azimutal de la partícula. 
 
-# Editing this README
+Para imprimir lo anterior en pantalla, es necesario descomentar las líneas 167 a 176 en el archivo `PrimaryGeneratorAction.cc`. Al realizar esta acción, se mostrará en la pantalla el numero del evento, el ID del neutrón, su posición, su momento y los angulos cenital y asumutal en cada paso de la simulación.
 
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
+## Archivos Adicionales
 
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
+- En la carpeta `flujos`, el archivo `salidasimu.shw.bz2` contiene el flujo de neutrones sobre Bucaramanga (956 m s.n.m) se debe rehubicar en la carpeta `Simular_flujo_de_neutrones`.
+- En la carpeta `flujos`, el script `flujo_artificial.py` genera un flujo artificial de neutrones con las características deseadas.
+- En la carpeta `flujos`, el script `auto_simulaciones.sh` automatiza las simulaciones de un flujo monoenergético de neutrones. Si se desea utilizar, es necesario cambiar la energía de los neutrones antes de compilar este código.
 
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
-
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
diff --git a/Simular_flujo_de_neutrones/CMakeLists.txt b/Simular_flujo_de_neutrones/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8f4a4e75362a887b9cdd9de6ad5c6c6439977280
--- /dev/null
+++ b/Simular_flujo_de_neutrones/CMakeLists.txt
@@ -0,0 +1,72 @@
+#----------------------------------------------------------------------------
+# Setup the project
+cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
+project(wcd)
+
+#----------------------------------------------------------------------------
+# Find Geant4 package, activating all available UI and Vis drivers by default
+# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
+# to build a batch mode only executable
+#
+option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
+if(WITH_GEANT4_UIVIS)
+  find_package(Geant4 REQUIRED ui_all vis_all)
+else()
+  find_package(Geant4 REQUIRED)
+endif()
+
+#----------------------------------------------------------------------------
+# Setup Geant4 include directories and compile definitions
+#
+include(${Geant4_USE_FILE})
+
+#----------------------------------------------------------------------------
+# Locate sources and headers for this project
+#
+include_directories(${PROJECT_SOURCE_DIR}/include 
+                    ${Geant4_INCLUDE_DIR})
+file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
+file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
+
+#----------------------------------------------------------------------------
+# Add the executable, and link it to the Geant4 libraries
+#
+add_executable(wcd wcd.cc ${sources} ${headers})
+target_link_libraries(wcd ${Geant4_LIBRARIES} )
+
+#----------------------------------------------------------------------------
+# Copy all scripts to the build directory, i.e. the directory in which we
+# build OpNovice. This is so that we can run the executable directly because it
+# relies on these scripts being in the current working directory.
+#
+set(wcd_SCRIPTS
+    init_vis.mac
+    input.in
+    optPhoton.mac
+    gui.mac
+    vis.mac
+    loop.sh
+    salidasimu.shw.bz2
+  )
+
+foreach(_script ${wcd_SCRIPTS})
+  configure_file(
+    ${PROJECT_SOURCE_DIR}/${_script}
+    ${PROJECT_BINARY_DIR}/${_script}
+    COPYONLY
+    )
+endforeach()
+#----------------------------------------------------------------------------
+# For internal Geant4 use - but has no effect if you build this
+# example standalone
+#
+add_custom_target(wcd-pmt-2 DEPENDS wcd)
+
+
+
+
+#----------------------------------------------------------------------------
+# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
+#
+install(TARGETS wcd DESTINATION bin)
+
diff --git a/Simular_flujo_de_neutrones/GNUmakefile b/Simular_flujo_de_neutrones/GNUmakefile
new file mode 100644
index 0000000000000000000000000000000000000000..1ce08cf34b7d0813e9a89b58a8467cbe48fe92be
--- /dev/null
+++ b/Simular_flujo_de_neutrones/GNUmakefile
@@ -0,0 +1,21 @@
+# $Id: GNUmakefile 68752 2013-04-05 10:23:47Z gcosmo $
+# --------------------------------------------------------------
+# GNUmakefile for examples module.  Gabriele Cosmo, 06/04/98.
+# --------------------------------------------------------------
+
+name := wcd
+G4TARGET := $(name)
+G4EXLIB := true
+
+ifndef G4INSTALL
+  G4INSTALL = ../../..
+endif
+
+.PHONY: all
+all: lib bin
+
+include $(G4INSTALL)/config/binmake.gmk
+
+visclean:
+	rm -f g4*.prim g4*.eps g4*.wrl
+	rm -f .DAWN_*
diff --git a/Simular_flujo_de_neutrones/README.md b/Simular_flujo_de_neutrones/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..adff8582ebaf992edb6407c4b5e4030db829f244
--- /dev/null
+++ b/Simular_flujo_de_neutrones/README.md
@@ -0,0 +1,26 @@
+# Archivos de la Tesis
+
+
+Para compilar el código en una carpeta diferente, utiliza el siguiente comando:
+
+```
+cmake -DGeant4_DIR=/opt/geant4/lib/Geant4-10.3.3/ ../"direccion del directorio"/Simulacion_flujo_de_neutrones; make -j2
+```
+
+Para ejecutar el código, utiliza el siguiente comando:
+
+```
+./wcd -m input.in > archivo.txt
+```
+
+Si deseas cambiar la humedad, accede a la siguiente dirección: `/"direccion del directorio"/Simulacion_flujo_de_neutrones/src/`. Luego, ingresa al archivo `DetectorConstruction.cc` con el editor de texto de tu preferencia.
+
+En la línea 103, escribe:
+
+- `sueloBS` (0% de humedad),
+- `sueloBH5` (5% de humedad),
+- `sueloBH15` (15% de humedad),
+- `sueloBH25` (25% de humedad),
+- `sueloBH30` (30% de humedad).
+
+
diff --git a/Simular_flujo_de_neutrones/gui.mac b/Simular_flujo_de_neutrones/gui.mac
new file mode 100644
index 0000000000000000000000000000000000000000..821e9c7ff705382516d2cb1453b508e9d92f601e
--- /dev/null
+++ b/Simular_flujo_de_neutrones/gui.mac
@@ -0,0 +1,45 @@
+#
+# This file permits to customize, with commands,
+# the menu bar of the G4UIXm, G4UIQt, G4UIWin32 sessions.
+# It has no effect with G4UIterminal.
+#
+# Process vis.mac (and draw geometry)
+#
+/control/execute vis.mac
+#
+# File menu :
+/gui/addMenu file File
+/gui/addButton file Quit exit
+#
+# Run menu :
+/gui/addMenu run Run
+/gui/addButton run "beamOn 1" "/run/beamOn 1"
+#/gui/addButton run run1 "/control/execute run1.mac"
+#/gui/addButton run run2 "/control/execute run2.mac"
+#
+# Gun menu :
+/gui/addMenu gun Gun
+/gui/addButton gun "50 MeV"  "/gun/energy 50 MeV"
+/gui/addButton gun "1 GeV"   "/gun/energy 1 GeV"
+/gui/addButton gun "10 GeV"  "/gun/energy 10 GeV"
+/gui/addButton gun "e-"      "/gun/particle e-"
+/gui/addButton gun "pi0"     "/gun/particle pi0"
+/gui/addButton gun "pi+"     "/gun/particle pi+"
+/gui/addButton gun "neutron" "/gun/particle neutron"
+/gui/addButton gun "proton"  "/gun/particle proton"
+#
+# Field menu :
+#/gui/addMenu field Field
+#/gui/addButton field "off"       "/B2/det/setField 0.2 tesla"
+#/gui/addButton field "0.2 tesla" "/B2/det/setField 0.2 tesla"
+#/gui/addButton field "2.0 tesla" "/B2/det/setField 2.0 tesla"
+#
+# Viewer menu :
+/gui/addMenu viewer Viewer
+/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
+/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
+/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
+/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
+/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
+/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
+#
diff --git a/Simular_flujo_de_neutrones/include/ActionInitialization.hh b/Simular_flujo_de_neutrones/include/ActionInitialization.hh
new file mode 100644
index 0000000000000000000000000000000000000000..4bdce6079098e442178f4d91dcb0ca2c721b8fb7
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/ActionInitialization.hh
@@ -0,0 +1,53 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
+//
+/// \file ActionInitialization.hh
+/// \brief Definition of the ActionInitialization class
+
+#ifndef ActionInitialization_h
+#define ActionInitialization_h 1
+
+#include "G4VUserActionInitialization.hh"
+
+class B4DetectorConstruction;
+
+/// Action initialization class.
+///
+
+class ActionInitialization : public G4VUserActionInitialization
+{
+  public:
+    ActionInitialization();
+    virtual ~ActionInitialization();
+
+    virtual void BuildForMaster() const;
+    virtual void Build() const;
+
+    virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/DetectorConstruction.hh b/Simular_flujo_de_neutrones/include/DetectorConstruction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..6df5d1e97f5f70350d5894bcc25ae88a0cba71e5
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/DetectorConstruction.hh
@@ -0,0 +1,47 @@
+#ifndef DetectorConstruction_h
+#define DetectorConstruction_h 1
+
+
+// Geant4 Libraries
+//
+#include "globals.hh"
+#include "G4VUserDetectorConstruction.hh"
+#include "G4Cache.hh"
+#include "G4Material.hh"
+#include "G4Element.hh"
+#include "G4LogicalVolume.hh"
+#include "G4Box.hh"
+#include "G4Ellipsoid.hh"
+#include "G4Tubs.hh"
+#include "G4OpticalSurface.hh"
+
+
+// Local Libraries
+//
+//#include "PMTSD.hh"
+
+class G4LogicalVolume; 
+
+
+class DetectorConstruction : public G4VUserDetectorConstruction
+{
+  public:
+    DetectorConstruction();
+    virtual ~DetectorConstruction();
+
+  public:
+    virtual G4VPhysicalVolume* Construct();
+    
+  /*  G4VPhysicalVolume* GetWaterVolume() const 
+    {
+       return fwaterVolume;
+    }*/
+
+  private:
+
+
+
+    
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/EventAction.hh b/Simular_flujo_de_neutrones/include/EventAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c20f6d9b58340c8f73f5f0a6eb3cd39be0f85b16
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/EventAction.hh
@@ -0,0 +1,32 @@
+#ifndef EventAction_h
+#define EventAction_h 1
+
+
+// Geant libraries
+//
+#include "G4UserEventAction.hh"
+#include "globals.hh"
+
+
+class RunAction;
+
+
+class EventAction : public G4UserEventAction
+{
+	public:
+		EventAction(RunAction* runAction);
+		virtual ~EventAction();
+
+		virtual void BeginOfEventAction(const G4Event* event);
+		//virtual void EndOfEventAction(const G4Event* event);
+
+		void AddEdep(G4double edep)
+		{
+			fEdep += edep;
+		}
+
+	private:
+		RunAction* fRunAction;
+		G4double fEdep;
+};
+#endif
diff --git a/Simular_flujo_de_neutrones/include/ExtraPhysics.hh b/Simular_flujo_de_neutrones/include/ExtraPhysics.hh
new file mode 100644
index 0000000000000000000000000000000000000000..479f4b700a0e6fc182c04c62efcccbbb6571c609
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/ExtraPhysics.hh
@@ -0,0 +1,54 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ExtraPhysics.hh 68752 2013-04-05 10:23:47Z gcosmo $
+//
+/// \file optical//include/ExtraPhysics.hh
+/// \brief Definition of the ExtraPhysics class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef ExtraPhysics_h
+#define ExtraPhysics_h 1
+
+#include "globals.hh"
+
+#include "G4VPhysicsConstructor.hh"
+
+class ExtraPhysics : public G4VPhysicsConstructor
+{
+  public:
+
+    ExtraPhysics();
+    virtual ~ExtraPhysics();
+
+    virtual void ConstructParticle();
+    virtual void ConstructProcess();
+
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/OpticalPhysics.hh b/Simular_flujo_de_neutrones/include/OpticalPhysics.hh
new file mode 100644
index 0000000000000000000000000000000000000000..774fbf254cebacabe658c0676ddf4dd57de08137
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/OpticalPhysics.hh
@@ -0,0 +1,84 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: OpticalPhysics.hh 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//include/OpticalPhysics.hh
+/// \brief Definition of the OpticalPhysics class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef OpticalPhysics_h
+#define OpticalPhysics_h 1
+
+#include "globals.hh"
+
+#include "G4OpWLS.hh"
+#include "G4Cerenkov.hh"
+#include "G4Scintillation.hh"
+
+#include "G4OpMieHG.hh"
+#include "G4OpRayleigh.hh"
+#include "G4OpAbsorption.hh"
+#include "G4OpBoundaryProcess.hh"
+
+#include "G4VPhysicsConstructor.hh"
+
+class OpticalPhysics : public G4VPhysicsConstructor
+{
+  public:
+
+    OpticalPhysics(G4bool toggle=true);
+    virtual ~OpticalPhysics();
+
+    virtual void ConstructParticle();
+    virtual void ConstructProcess();
+
+    G4OpWLS* GetProcess() {return fProcess;}
+    G4Cerenkov* GetCerenkovProcess() {return fCerenkovProcess;}
+    G4Scintillation* GetScintillationProcess() {return fScintProcess;}
+    G4OpAbsorption* GetAbsorptionProcess() {return fAbsorptionProcess;}
+    G4OpRayleigh* GetRayleighScatteringProcess() {return fRayleighScattering;}
+    G4OpMieHG* GetMieHGScatteringProcess() {return fMieHGScatteringProcess;}
+    G4OpBoundaryProcess* GetBoundaryProcess() { return fBoundaryProcess;}
+
+    void SetNbOfPhotonsCerenkov(G4int);
+
+private:
+
+    G4OpWLS*             fProcess;
+    G4Cerenkov*          fCerenkovProcess;
+    G4Scintillation*     fScintProcess;
+    G4OpAbsorption*      fAbsorptionProcess;
+    G4OpRayleigh*        fRayleighScattering;
+    G4OpMieHG*           fMieHGScatteringProcess;
+    G4OpBoundaryProcess* fBoundaryProcess;
+ 
+    G4bool fAbsorptionOn;
+
+};
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PMTHit.hh b/Simular_flujo_de_neutrones/include/PMTHit.hh
new file mode 100644
index 0000000000000000000000000000000000000000..be988a11c30b6a5eb45d8474056773b3102f6c7b
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PMTHit.hh
@@ -0,0 +1,40 @@
+#ifndef PMTHit_h
+#define PMTHit_h 1
+
+
+// Geant4 Libraries
+//
+#include "G4VHit.hh"
+#include "G4THitsCollection.hh"
+#include "G4Allocator.hh"
+#include "G4ThreeVector.hh"
+#include "G4LogicalVolume.hh"
+#include "G4Transform3D.hh"
+#include "G4RotationMatrix.hh"
+#include "G4VPhysicalVolume.hh"
+
+#include "tls.hh"
+
+
+// Local Libraries
+//
+
+
+class G4VTouchable;
+
+
+class PMTHit //: public G4VHit
+{
+
+  public:
+
+    PMTHit();
+    virtual ~PMTHit();
+    G4int askDetected(G4double);
+    void reset();
+
+  private:
+    void GetWavelength(G4double);
+    G4double waveLength;
+};
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PMTSD.hh b/Simular_flujo_de_neutrones/include/PMTSD.hh
new file mode 100644
index 0000000000000000000000000000000000000000..758aa241007845334c76aa438bc03e3e3137c375
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PMTSD.hh
@@ -0,0 +1,42 @@
+#ifndef PMTSD_h
+#define PMTSD_h 1
+
+
+// Geant4 Libraries
+//
+//#include "G4DataVector.hh"
+//#include "G4VSensitiveDetector.hh"
+
+
+// Local Libraries
+//
+#include "PMTHit.hh"
+
+
+// C++ Libraries
+//
+//#include <vector>
+
+class G4Step;
+class G4HCofThisEvent;
+
+
+class PMTSD //: public G4VSensitiveDetector
+{
+
+  public:
+    PMTSD();//G4String name);
+    virtual ~PMTSD();
+    virtual G4int ProcessHits(const G4Step* aStep);
+    void resetPMTSD();
+    G4double getPhoDetected()
+    { 
+      return phoDetec;
+    }
+
+  private:
+   PMTHit *phoHit;
+   G4int phoDetec;
+   G4double kinEnergy;
+};
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PhysicsList.hh b/Simular_flujo_de_neutrones/include/PhysicsList.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c21ad7347af6c6cf98d14b85caaa31ce2181b501
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PhysicsList.hh
@@ -0,0 +1,68 @@
+#ifndef PhysicsList_h
+#define PhysicsList_h 1
+
+
+// Geant4 Libraries
+//
+#include "globals.hh"
+#include "G4VModularPhysicsList.hh"
+
+
+class G4VPhysicsConstructor;
+class PhysicsListMessenger;
+
+class StepMax;
+class OpticalPhysics;
+
+
+class PhysicsList: public G4VModularPhysicsList
+{
+  public:
+
+    PhysicsList(G4String);
+    virtual ~PhysicsList();
+
+    void SetCuts();
+    void SetCutForGamma(G4double);
+    void SetCutForElectron(G4double);
+    void SetCutForPositron(G4double);
+
+    void SetStepMax(G4double);
+    StepMax* GetStepMaxProcess();
+    void AddStepMax();
+
+    /// Remove specific physics from physics list.
+    void RemoveFromPhysicsList(const G4String&);
+
+    /// Make sure that the physics list is empty.
+    void ClearPhysics();
+
+    virtual void ConstructParticle();
+    virtual void ConstructProcess();
+
+    // Turn on or off the absorption process
+    void SetAbsorption(G4bool);
+
+    void SetNbOfPhotonsCerenkov(G4int);
+
+    void SetVerbose(G4int);
+
+private:
+
+    G4double fCutForGamma;
+    G4double fCutForElectron;
+    G4double fCutForPositron;
+
+    StepMax* fStepMaxProcess;
+
+    OpticalPhysics* fOpticalPhysics;
+
+    PhysicsListMessenger* fMessenger;
+
+    G4bool fAbsorptionOn;
+    
+    G4VMPLData::G4PhysConstVectorData* fPhysicsVector;
+
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PhysicsListMessenger.hh b/Simular_flujo_de_neutrones/include/PhysicsListMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..d6da3fe27ba40e53ee8ad65d46234f73741cb180
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PhysicsListMessenger.hh
@@ -0,0 +1,95 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: PhysicsListMessenger.hh 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//include/PhysicsListMessenger.hh
+/// \brief Definition of the PhysicsListMessenger class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef PhysicsListMessenger_h
+#define PhysicsListMessenger_h 1
+
+#include "globals.hh"
+#include "G4UImessenger.hh"
+
+#include "G4ParticleTable.hh"
+#include "G4ParticleDefinition.hh"
+
+#include "G4DecayTable.hh"
+#include "G4VDecayChannel.hh"
+
+class PhysicsList;
+
+class G4UIdirectory;
+class G4UIcmdWithABool;
+class G4UIcmdWithAString;
+class G4UIcmdWithAnInteger;
+class G4UIcmdWithoutParameter;
+class G4UIcmdWithADoubleAndUnit;
+
+/// Provide control of the physics list and cut parameters
+
+class PhysicsListMessenger : public G4UImessenger
+{
+  public:
+
+    PhysicsListMessenger(PhysicsList* );
+    virtual ~PhysicsListMessenger();
+
+    virtual void SetNewValue(G4UIcommand*, G4String);
+
+  private:
+
+    PhysicsList* fPhysicsList;
+
+    G4UIdirectory* fDirectory;
+    G4UIdirectory* fDecayDirectory;
+
+    G4UIcmdWithABool* fSetAbsorptionCMD;
+
+    G4UIcmdWithAnInteger* fVerboseCmd;
+    G4UIcmdWithAnInteger* fCerenkovCmd;
+
+    G4UIcmdWithADoubleAndUnit* fGammaCutCMD;
+    G4UIcmdWithADoubleAndUnit* fElectCutCMD;
+    G4UIcmdWithADoubleAndUnit* fPosCutCMD;
+    G4UIcmdWithADoubleAndUnit* fAllCutCMD;
+    G4UIcmdWithADoubleAndUnit* fStepMaxCMD;
+
+    G4UIcmdWithAString*        fRemovePhysicsCMD;
+    G4UIcmdWithoutParameter*   fClearPhysicsCMD;
+
+    G4UIcmdWithoutParameter*   fListCMD;
+
+    G4UIcmdWithoutParameter* fPienuCMD;
+    G4UIcmdWithoutParameter* fPimunuCMD;
+
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PrimaryGeneratorAction.hh b/Simular_flujo_de_neutrones/include/PrimaryGeneratorAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..487a145cd913fd5469db6cdc22dee0487aefc4a9
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PrimaryGeneratorAction.hh
@@ -0,0 +1,78 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/PrimaryGeneratorAction.hh
+/// \brief Definition of the PrimaryGeneratorAction class
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PrimaryGeneratorAction_h
+#define PrimaryGeneratorAction_h 1
+
+#include "G4VUserPrimaryGeneratorAction.hh"
+#include "globals.hh"
+#include "G4ParticleGun.hh"
+
+#include "PrimarySpectrum.hh"
+
+class G4ParticleGun;
+class G4Event;
+class PrimaryGeneratorMessenger;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
+{
+  public:
+    PrimaryGeneratorAction();
+    virtual ~PrimaryGeneratorAction();
+
+  public:
+    virtual void GeneratePrimaries(G4Event*);
+    const G4ParticleGun* GetParticleGun() const
+		{
+			return fParticleGun;
+		}
+    void SetOptPhotonPolar();
+    void SetOptPhotonPolar(G4double);
+
+  private:
+    G4double enerPart;
+    G4ParticleGun* fParticleGun;
+    PrimarySpectrum parPosDir;
+    PrimaryGeneratorMessenger* fGunMessenger;
+
+
+
+
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif /*PrimaryGeneratorAction_h*/
diff --git a/Simular_flujo_de_neutrones/include/PrimaryGeneratorMessenger.hh b/Simular_flujo_de_neutrones/include/PrimaryGeneratorMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..1326eebe6c0bbe1471f0cc292e482faa5bf06e54
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PrimaryGeneratorMessenger.hh
@@ -0,0 +1,64 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/PrimaryGeneratorMessenger.hh
+/// \brief Definition of the PrimaryGeneratorMessenger class
+//
+//
+//
+// 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PrimaryGeneratorMessenger_h
+#define PrimaryGeneratorMessenger_h 1
+
+#include "G4UImessenger.hh"
+#include "globals.hh"
+
+class PrimaryGeneratorAction;
+class G4UIdirectory;
+class G4UIcmdWithADoubleAndUnit;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PrimaryGeneratorMessenger: public G4UImessenger
+{
+  public:
+    PrimaryGeneratorMessenger(PrimaryGeneratorAction* );
+    virtual ~PrimaryGeneratorMessenger();
+ 
+    virtual void SetNewValue(G4UIcommand*, G4String);
+ 
+  private:
+    PrimaryGeneratorAction* fAction;
+    G4UIdirectory*                  fGunDir;
+    G4UIcmdWithADoubleAndUnit*      fPolarCmd;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PrimarySpectrum.hh b/Simular_flujo_de_neutrones/include/PrimarySpectrum.hh
new file mode 100644
index 0000000000000000000000000000000000000000..fb1ba2e4a456bf29f0fdcedb9a0f8a34e615ec0a
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PrimarySpectrum.hh
@@ -0,0 +1,67 @@
+#ifndef PrimarySpectrum_h
+#define PrimarySpectrum_h 1
+
+
+//Geant libraries
+//
+#include "globals.hh"
+#include "G4ThreeVector.hh"
+
+
+// c++ libraries
+//
+#include <math.h>
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <stdlib.h>
+#include <string>
+#include <iomanip>
+
+
+class PrimarySpectrumMessenger;
+
+
+class PrimarySpectrum
+{
+	public:
+		PrimarySpectrum();
+		~PrimarySpectrum();
+
+		void primaryPosition();
+
+		G4ThreeVector particlePosition;
+		G4ThreeVector particleDirection;
+		G4String parId;
+
+		void primaryMomento();
+    std::string inputFile; //[] = "tmpMachin24h.shw.bz2";
+		int openFile(std::string name);
+
+
+	private:
+		G4double pi;
+		G4double Ro;
+		G4double initx;
+		G4double inity;
+		G4double initz;
+		float r;
+    float theta;
+		
+		G4int crkId;
+		G4double px;
+		G4double py;
+		G4double pz;
+		G4double x;
+		G4double y;
+		G4double z;
+		G4int shwId;
+		G4int prmId;
+		G4double prmEner;
+		G4double prmThe;
+		G4double prmPhi;
+
+		FILE *inFile = NULL;
+    PrimarySpectrumMessenger* fSpectMessenger;
+};
+#endif
diff --git a/Simular_flujo_de_neutrones/include/PrimarySpectrumMessenger.hh b/Simular_flujo_de_neutrones/include/PrimarySpectrumMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..ba7c92e5bc0545ae25b066a372508827da513dcc
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/PrimarySpectrumMessenger.hh
@@ -0,0 +1,30 @@
+#ifndef PrimarySpectrumMessenger_h
+#define PrimarySpectrumMessenger_h 1
+
+
+// Geant4 Libraries
+#include "G4UImessenger.hh"
+#include "globals.hh"
+
+
+class PrimarySpectrum;
+class G4UIdirectory;
+class G4UIcmdWithAString;
+
+
+class PrimarySpectrumMessenger: public G4UImessenger
+{
+  public:
+    PrimarySpectrumMessenger(PrimarySpectrum* spectrum);
+    virtual ~PrimarySpectrumMessenger();
+ 
+    virtual void SetNewValue(G4UIcommand*, G4String);
+    
+  
+  private:
+    PrimarySpectrum* fSpectrum;
+    G4UIdirectory* fSpecDir;
+
+    G4UIcmdWithAString* inFile;
+};
+#endif
diff --git a/Simular_flujo_de_neutrones/include/RunAction.hh b/Simular_flujo_de_neutrones/include/RunAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..794abe985aa71ad447acaf8ef25fd31f4557612a
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/RunAction.hh
@@ -0,0 +1,61 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/RunAction.hh
+/// \brief Definition of the RunAction class
+//
+//
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef RunAction_h
+#define RunAction_h 1
+
+#include "globals.hh"
+#include "G4UserRunAction.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4Timer;
+class G4Run;
+
+class RunAction : public G4UserRunAction
+{
+  public:
+    RunAction();
+    virtual ~RunAction();
+
+  public:
+    virtual void BeginOfRunAction(const G4Run* aRun);
+    virtual void EndOfRunAction(const G4Run* aRun);
+
+  private:
+    G4Timer* fTimer;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif /*RunAction_h*/
diff --git a/Simular_flujo_de_neutrones/include/StackingAction.hh b/Simular_flujo_de_neutrones/include/StackingAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..db88ffcc73ee035ebd3643faa838b0e4be91c3fe
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/StackingAction.hh
@@ -0,0 +1,28 @@
+#ifndef StackingAction_H
+#define StackingAction_H 1
+
+
+// Geant4 Libraries
+//
+#include "globals.hh"
+#include "G4UserStackingAction.hh"
+
+
+class StackingAction : public G4UserStackingAction
+{
+  public:
+    StackingAction();
+    virtual ~StackingAction();
+
+  public:
+    virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
+    virtual void NewStage();
+    virtual void PrepareNewEvent();
+
+  private:
+    G4int fScintillationCounter;
+    G4int fCerenkovCounter;
+    G4double lengthMax; 
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/StepMax.hh b/Simular_flujo_de_neutrones/include/StepMax.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e89fd2e6fe2e28948744dbc237d32e4039a9a8a4
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/StepMax.hh
@@ -0,0 +1,81 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: StepMax.hh 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//include/StepMax.hh
+/// \brief Definition of the StepMax class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef StepMax_h
+#define StepMax_h 1
+
+#include "globals.hh"
+
+#include "G4Step.hh"
+#include "G4VDiscreteProcess.hh"
+#include "G4ParticleDefinition.hh"
+
+class StepMax : public G4VDiscreteProcess
+{
+  public:
+
+    StepMax(const G4String& processName = "UserStepMax");
+    StepMax(StepMax &);
+
+    virtual ~StepMax();
+
+    virtual G4bool IsApplicable(const G4ParticleDefinition&);
+
+    void SetStepMax(G4double);
+
+    G4double GetStepMax() {return fMaxChargedStep;};
+
+    virtual G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
+                                                  G4double previousStepSize,
+                                                  G4ForceCondition* condition);
+
+    virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
+
+  protected:
+
+    G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*);
+
+  private:
+
+    // hide assignment operator as private
+    StepMax & operator=(const StepMax &right);
+    StepMax(const StepMax&);
+
+  private:
+
+    G4double fMaxChargedStep;
+
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/SteppingAction.hh b/Simular_flujo_de_neutrones/include/SteppingAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..427d78a546d5f0b972ba08b80408f0b98182e304
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/SteppingAction.hh
@@ -0,0 +1,50 @@
+#ifndef SteppingAction_h
+#define SteppingAction_h 1
+
+
+// Geant4 Libraries
+//
+#include "G4UserSteppingAction.hh"
+#include "globals.hh"
+
+
+// Local Libraries
+//
+#include "DetectorConstruction.hh"
+#include "PMTSD.hh"
+#include "iostream"
+//#include "PrimarySpectrum.hh"
+
+using namespace std;
+/// Stepping action class
+/// 
+
+class SteppingAction : public G4UserSteppingAction
+{
+  public:
+    SteppingAction();
+    virtual ~SteppingAction();
+
+    // method from the base class
+    virtual void UserSteppingAction(const G4Step*);
+
+  private:
+    const DetectorConstruction *detectorConstruction;
+    G4int fEventNumber;
+    G4int alsuelo;
+    G4int generadas;
+    G4double ener_e;
+    G4double ener_g;
+    G4double ener_n;
+    G4double ener_p;
+    G4int detect_g;
+    G4int detect_e;
+    G4double ener_e_det;
+    G4double ener_g_det;
+    G4String thePostPV;
+    G4String thePrePV;
+
+ 
+};
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/SteppingVerbose.hh b/Simular_flujo_de_neutrones/include/SteppingVerbose.hh
new file mode 100644
index 0000000000000000000000000000000000000000..93e0e403b63c2c08f7df50b6ac82f89b60570806
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/SteppingVerbose.hh
@@ -0,0 +1,58 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/SteppingVerbose.hh
+/// \brief Definition of the SteppingVerbose class
+//
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class SteppingVerbose;
+
+#ifndef SteppingVerbose_h
+#define SteppingVerbose_h 1
+
+#include "G4SteppingVerbose.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class SteppingVerbose : public G4SteppingVerbose
+{
+ public:
+
+   SteppingVerbose();
+   virtual ~SteppingVerbose();
+
+   virtual void StepInfo();
+   virtual void TrackingStarted();
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/Simular_flujo_de_neutrones/include/UserEventAction.hh b/Simular_flujo_de_neutrones/include/UserEventAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..2d3930f2a60b1bc34347427bb37154328937ee79
--- /dev/null
+++ b/Simular_flujo_de_neutrones/include/UserEventAction.hh
@@ -0,0 +1,30 @@
+#ifndef UserEventAction_h 
+#define UserEventAction_h 1
+
+
+// Geant4 Libraries
+//
+#include "G4UserEventAction.hh"
+#include "G4Event.hh"
+
+
+// Local Libraries
+//
+
+
+//class G4Event;
+
+
+class UserEventAction : public G4UserEventAction
+{
+  public:
+    UserEventAction();
+    virtual ~UserEventAction();
+
+    virtual void BeginOfEventAction(const G4Event *event);
+    virtual void EndOfEventAction(const G4Event *event);
+
+};
+
+#endif
+
diff --git a/Simular_flujo_de_neutrones/init_vis.mac b/Simular_flujo_de_neutrones/init_vis.mac
new file mode 100644
index 0000000000000000000000000000000000000000..8e460329fb2abb9c53abacd635ad2afef893027b
--- /dev/null
+++ b/Simular_flujo_de_neutrones/init_vis.mac
@@ -0,0 +1,16 @@
+# Macro file for the initialization of example B1
+# in interactive session
+#
+# Set some default verbose
+/control/verbose 2
+/control/saveHistory
+/run/verbose 2
+#
+# Change the default number of threads (in multi-threaded mode)
+#/run/numberOfThreads 4
+#
+# Initialize kernel
+/run/initialize
+#
+# Visualization setting
+/control/execute vis.mac
diff --git a/Simular_flujo_de_neutrones/input.in b/Simular_flujo_de_neutrones/input.in
new file mode 100644
index 0000000000000000000000000000000000000000..c5731efe196156b24401b6d4b41d83944fe63500
--- /dev/null
+++ b/Simular_flujo_de_neutrones/input.in
@@ -0,0 +1,16 @@
+/control/cout/useBuffer true
+/control/verbose 2
+/tracking/verbose 0
+#
+#/gun/particle mu-
+#/gun/energy 5 MeV
+#
+#/gun/momentum 1.0 0. 0. GeV
+/wcd/phys/verbose 0
+#
+#/run/beamOn 38553330 #10h
+#/run/beamOn 23131998 #6h
+#/run/beamOn 11565999 #3h
+#/run/beamOn 3855333 #1h
+# El numero de horas * 4625 Neutrones/m²*hora
+/run/beamOn 100000 
diff --git a/Simular_flujo_de_neutrones/loop.sh b/Simular_flujo_de_neutrones/loop.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ca9186267117850961a4b62d9b1768ab09d3bc2a
--- /dev/null
+++ b/Simular_flujo_de_neutrones/loop.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+srun ./wcd -m input.in
diff --git a/Simular_flujo_de_neutrones/loop2.sh b/Simular_flujo_de_neutrones/loop2.sh
new file mode 100644
index 0000000000000000000000000000000000000000..17b933d826099ad6be800a0bdbcd7361981df680
--- /dev/null
+++ b/Simular_flujo_de_neutrones/loop2.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+export OMP_NUM_THREADS=4
+srun ./wcd -m input.in -t 4
diff --git a/Simular_flujo_de_neutrones/optPhoton.mac b/Simular_flujo_de_neutrones/optPhoton.mac
new file mode 100644
index 0000000000000000000000000000000000000000..3ff011888ef5db028c0695b20c0e2a494bcfbf8c
--- /dev/null
+++ b/Simular_flujo_de_neutrones/optPhoton.mac
@@ -0,0 +1,14 @@
+/control/verbose 2
+/tracking/verbose 3
+#
+/gun/particle opticalphoton
+/gun/energy 3 eV
+#
+/gun/direction 5 -3 0
+/OpNovice/gun/optPhotonPolar
+/run/beamOn 1
+#
+/gun/position 30 40 50 cm
+/gun/direction 1 1 1
+/OpNovice/gun/optPhotonPolar
+/run/beamOn 1
diff --git a/Simular_flujo_de_neutrones/src/ActionInitialization.cc b/Simular_flujo_de_neutrones/src/ActionInitialization.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7a5837424942987a5da73a659c10a19ea5d66f8f
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/ActionInitialization.cc
@@ -0,0 +1,77 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
+//
+/// \file ActionInitialization.cc
+/// \brief Implementation of the ActionInitialization class
+
+#include "ActionInitialization.hh"
+#include "PrimaryGeneratorAction.hh"
+#include "RunAction.hh"
+#include "SteppingAction.hh"
+#include "StackingAction.hh"
+#include "SteppingVerbose.hh"
+#include "UserEventAction.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ActionInitialization::ActionInitialization()
+ : G4VUserActionInitialization()
+{
+   //G4cout << "...ActionInitialization..." << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ActionInitialization::~ActionInitialization()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ActionInitialization::BuildForMaster() const
+{
+  SetUserAction(new RunAction());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ActionInitialization::Build() const
+{
+  SetUserAction(new PrimaryGeneratorAction());
+  SetUserAction(new RunAction());
+  SetUserAction(new UserEventAction());
+  SetUserAction(new SteppingAction());
+  SetUserAction(new StackingAction());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4VSteppingVerbose* ActionInitialization::InitializeSteppingVerbose() const
+{
+  return new SteppingVerbose();
+}  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_flujo_de_neutrones/src/DetectorConstruction.cc b/Simular_flujo_de_neutrones/src/DetectorConstruction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5432f8ced95aaa2b21ff5ea30394efacc61576cd
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/DetectorConstruction.cc
@@ -0,0 +1,355 @@
+
+// Geant4 Libraries
+//
+#include "G4Material.hh"
+#include "G4Element.hh"
+
+#include "G4LogicalBorderSurface.hh"
+#include "G4LogicalSkinSurface.hh"
+#include "G4OpticalSurface.hh"
+#include "G4MultiFunctionalDetector.hh"
+#include "G4VPrimitiveScorer.hh"
+#include "G4PSEnergyDeposit.hh"
+#include "G4VPhysicalVolume.hh"
+
+#include "G4Box.hh"
+#include "G4LogicalVolume.hh"
+#include "G4ThreeVector.hh"
+#include "G4PVPlacement.hh"
+#include "G4SystemOfUnits.hh"
+#include "G4NistManager.hh"
+#include "G4UnitsTable.hh"
+#include "G4PhysicalConstants.hh"
+#include "G4UserLimits.hh"
+#include "G4RunManager.hh"
+#include "G4Cons.hh"
+#include "G4Orb.hh"
+#include "G4Sphere.hh"
+#include "G4Trd.hh"
+
+// Local Libraries
+//
+#include "DetectorConstruction.hh"
+#include "PMTSD.hh"
+
+DetectorConstruction::DetectorConstruction()
+ : G4VUserDetectorConstruction()
+{ 
+ /*   O = H = C = NULL;
+  water = glass = alum = NULL;
+  expHall_mat = glass = alum = NULL;
+*/ 
+}
+
+
+DetectorConstruction::~DetectorConstruction()
+{}
+
+
+// ****************************
+// Doing Elements and Materials
+// ****************************
+G4VPhysicalVolume* DetectorConstruction::Construct()
+{
+
+G4NistManager* nist = G4NistManager::Instance();
+
+G4double z, a, density;
+G4String name, symbol;
+G4int ncomponents, natoms;
+
+a = 1.01*g/mole;
+G4Element* elH  = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
+
+a = 16.00*g/mole;
+G4Element* elO  = new G4Element(name="Oxygen"  ,symbol="O" , z= 8., a);
+
+a= 14.00*g/mole;
+G4Element* elN = new G4Element(name="Nitrogen", symbol="N", z= 7., a);
+
+a = 26.98*g/mole;
+G4Element* elAl = new G4Element(name="Aluminium", symbol="Al", z=13., a);
+
+a = 28.09*g/mole;
+G4Element* elSi = new G4Element(name="Silicon", symbol="Si", z=14., a);
+
+a = 22.98*g/mole;
+G4Element* elNa = new G4Element(name="Sodium", symbol="Na", z=11., a);
+
+a = 39.09*g/mole;
+G4Element* elK = new G4Element(name="Potassium", symbol="K", z=19., a);
+
+a = 40.07*g/mole;
+G4Element* elCa = new G4Element(name="Calcium", symbol="Ca", z=20., a);
+
+a = 24.31*g/mole;
+G4Element* elMg = new G4Element(name="Magnesium", symbol="Mg", z=12., a);
+
+a = 32.07*g/mole;
+G4Element* elS= new G4Element(name="Sulphur", symbol="S", z=16., a);
+
+a = 30.97*g/mole;
+G4Element* elP = new G4Element(name="Phosphorus", symbol="P", z=15., a);
+
+a = 47.87*g/mole;
+G4Element* elTi = new G4Element(name="Titanium", symbol="Ti", z=22., a);
+
+a = 55.85*g/mole;
+G4Element* elFe = new G4Element(name="Iron"    ,symbol="Fe", z=26., a);
+
+a=12.00*g/mole;
+G4Element* elC =new G4Element(name="Carbon",symbol="C", z=6., a);
+
+G4double  fractionmass;
+
+//TIPOS DE SUELO
+//Suelo base seca
+density=2700*kg/m3;
+G4Material* SueloBS= new G4Material(name="SueloBS",density, ncomponents=14);
+SueloBS->AddElement(elO, fractionmass=49*perCent);
+SueloBS->AddElement(elSi, fractionmass=33*perCent);
+SueloBS->AddElement(elAl, fractionmass=7.13*perCent);
+SueloBS->AddElement(elNa, fractionmass=0.63*perCent);
+SueloBS->AddElement(elK, fractionmass=1.36*perCent);
+SueloBS->AddElement(elCa, fractionmass=1.37*perCent);
+SueloBS->AddElement(elFe, fractionmass=3.80*perCent);
+SueloBS->AddElement(elMg, fractionmass=0.60*perCent);
+SueloBS->AddElement(elC, fractionmass=2.0*perCent);
+SueloBS->AddElement(elS, fractionmass=0.08*perCent);
+SueloBS->AddElement(elN, fractionmass=0.10*perCent);
+SueloBS->AddElement(elP, fractionmass=0.09*perCent);
+SueloBS->AddElement(elTi, fractionmass=0.46*perCent);
+SueloBS->AddElement(elH, fractionmass=0.38*perCent);
+
+
+//Agua
+G4Material* elH2O= nist->FindOrBuildMaterial("G4_WATER");
+
+//Suelo base humeda 1, 5% humedad
+density=2700*kg/m3;
+G4Material* SueloBH5= new G4Material(name="SueloBH5",density, ncomponents=2); 
+SueloBH5->AddMaterial(SueloBS, fractionmass=95*perCent);
+SueloBH5->AddMaterial(elH2O, fractionmass=5*perCent);
+
+//Suelo base humeda 1, 10% humedad
+density=2700*kg/m3;
+G4Material* SueloBH10= new G4Material(name="SueloBH10",density, ncomponents=2); 
+SueloBH10->AddMaterial(SueloBS, fractionmass=90*perCent);
+SueloBH10->AddMaterial(elH2O, fractionmass=10*perCent);
+
+//Suelo base humeda 1, 15% humedad
+density=2700*kg/m3;
+G4Material* SueloBH15= new G4Material(name="SueloBH15",density, ncomponents=2); 
+SueloBH15->AddMaterial(SueloBS, fractionmass=85*perCent);
+SueloBH15->AddMaterial(elH2O, fractionmass=15*perCent);
+
+/*//Suelo base humeda 1, 10% humedad
+density=2700*kg/m3;
+G4Material* SueloBH1= new G4Material(name="SueloBH1",density, ncomponents=2); 
+SueloBH1->AddMaterial(SueloBS, fractionmass=90*perCent);
+SueloBH1->AddMaterial(elH2O, fractionmass=10*perCent);
+*/
+//Suelo base humeda 2, 25% humedad
+density=2700*kg/m3;
+G4Material* SueloBH25= new G4Material(name="SueloBH25",density, ncomponents=2);  
+SueloBH25->AddMaterial(SueloBS, fractionmass=75*perCent);
+SueloBH25->AddMaterial(elH2O, fractionmass=25*perCent);
+
+
+//Suelo base humeda, 30%humedad
+density=2700*kg/m3;
+G4Material* SueloBH30= new G4Material(name="SueloBH30",density, ncomponents=2); 
+SueloBH30->AddMaterial(SueloBS, fractionmass=70*perCent);
+SueloBH30->AddMaterial(elH2O, fractionmass=30*perCent);
+
+
+// ****************************
+// Doing the geometries
+// ****************************
+   
+G4bool checkOverlaps = true;
+
+  //
+  // First World
+  //
+  G4double fworld_sizeX = 105.*m;
+  G4double fworld_sizeY = 105.*m;
+  G4double fworld_sizeZ = 5.2*m;
+  G4Material* fworld_mat = nist->FindOrBuildMaterial("G4_AIR");
+  
+  G4Box* fsolidWorld =    
+    new G4Box("fWorld",
+		fworld_sizeX,
+		fworld_sizeY,
+		fworld_sizeZ);    
+      
+  G4LogicalVolume* flogicWorld =                   
+    new G4LogicalVolume(fsolidWorld, 
+			fworld_mat,
+               		"fWorld",
+			0,0,0);  
+         
+  G4VPhysicalVolume* fphysWorld =                         
+    new G4PVPlacement(0,                    
+                      G4ThreeVector(),       
+                      flogicWorld,   
+                      "fWorld",  
+                      0,   
+                      false,   
+                      0,    
+                      checkOverlaps);    
+
+
+  //     
+  // World
+  //
+  G4double world_sizeX = 102.*m;
+  G4double world_sizeY = 102.*m;
+  G4double world_sizeZ = 5.1*m;
+  G4Material* world_mat = nist->FindOrBuildMaterial("G4_AIR");
+  
+  G4Box* solidWorld =    
+    new G4Box("World",
+		world_sizeX,
+		world_sizeY,
+		world_sizeZ);    
+      
+  G4LogicalVolume* logicWorld =                   
+    new G4LogicalVolume(solidWorld, 
+			world_mat,
+               		"World",
+			0,0,0);  
+                                   
+  new G4PVPlacement(0,                    
+                      G4ThreeVector(),       
+                      logicWorld,   
+                      "World",  
+                      flogicWorld,   
+                      false,   
+                      0,    
+                      checkOverlaps);
+
+  //G4UserLimits* userLimits = new G4UserLimits(1.0*cm);
+  //logicWorld->SetUserLimits(userLimits);
+
+  //     
+  //Suelo_0
+  //     
+  G4double suelo_0_sizeX = 100*m;
+  G4double suelo_0_sizeY = 100*m;
+  G4double suelo_0_sizeZ = 0.5*m;
+  
+  G4Box* solidsuelo_0 =    
+    new G4Box("suelo_0",
+       		suelo_0_sizeX,
+		suelo_0_sizeY,
+		suelo_0_sizeZ);     
+      
+  G4LogicalVolume*  logicsuelo_0 =                         
+    new G4LogicalVolume(solidsuelo_0, 
+                        SueloBH30,//cambiar aquí el material del suelo
+                        "suelo_0",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0.,-0.5*m),       
+                      logicsuelo_0,          
+                      "suelo_0",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+
+
+  //
+  //detector                     
+  // 
+  
+ /* G4Material* detector_mat = nist->FindOrBuildMaterial("G4_AIR");
+
+  G4Orb* soliddetector =
+  	new G4Orb("detector", 1*m);
+  
+  G4LogicalVolume* logicdetector =
+  	new G4LogicalVolume(soliddetector,
+  				elH2O,
+  				"detector",
+  				0,0,0);
+  
+  	new G4PVPlacement(0, 
+  			G4ThreeVector(0.,0.,3*m),
+  			logicdetector,
+  			"detctor",
+  			logicWorld,                
+  			false,                   
+  			0,                       
+  			checkOverlaps);
+	
+	G4UserLimits * fStepLimit = new G4UserLimits(1.*cm);
+	logicdetector->SetUserLimits(fStepLimit);*/
+
+    //     
+    // detector
+    //      
+    G4double detector_sizeX = 1.*m;
+    G4double detector_sizeY = 1.*m;
+    G4double detector_sizeZ = 1*m;
+    G4Material* detector_mat = nist->FindOrBuildMaterial("G4_AIR");
+                     
+    G4Box* soliddetector =    
+    	new G4Box("detector",
+    		detector_sizeX,
+   		detector_sizeY,
+    		detector_sizeZ);    
+     
+    G4LogicalVolume* logicdetector =                   
+    	new G4LogicalVolume(soliddetector, 
+    		        detector_mat,
+    			"detector",
+    			0,0,0);  
+
+    	new G4PVPlacement(0,                    
+    			G4ThreeVector(0.,0.,3*m),       
+                        logicdetector,   
+   			"detector",  
+    			logicWorld,   
+    			false,   
+    			0,    
+   			checkOverlaps);  
+
+  //
+  //Ground
+  //
+  G4double ground_sizeX = 100*m;
+  G4double ground_sizeY = 100*m;
+  G4double ground_sizeZ = 0.5*cm;
+  
+  G4Box* solidground =    
+    new G4Box("ground",
+       		ground_sizeX,
+		ground_sizeY,
+		ground_sizeZ);     
+                
+  G4LogicalVolume* logicground =                         
+    new G4LogicalVolume(solidground, 
+                        world_mat,     
+                        "ground",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0.,-0.6*cm),       
+                      logicground,          
+                      "ground",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);   
+  
+
+     
+  
+  //always return the physical World
+  return fphysWorld;
+
+
+}
diff --git a/Simular_flujo_de_neutrones/src/ExtraPhysics.cc b/Simular_flujo_de_neutrones/src/ExtraPhysics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b78afe07a6b9eb24c34266ba33e6ac8e5a447750
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/ExtraPhysics.cc
@@ -0,0 +1,93 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ExtraPhysics.cc 100260 2016-10-17 08:03:33Z gcosmo $
+//
+/// \file optical//src/ExtraPhysics.cc
+/// \brief Implementation of the ExtraPhysics class
+//
+//
+#include "globals.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4ParticleTable.hh"
+#include "G4ProcessManager.hh"
+
+#include "G4UserSpecialCuts.hh"
+#include "G4StepLimiter.hh"
+
+#include "ExtraPhysics.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ExtraPhysics::ExtraPhysics()
+    : G4VPhysicsConstructor("Extra") { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ExtraPhysics::~ExtraPhysics() { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ExtraPhysics::ConstructParticle() { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ExtraPhysics::ConstructProcess()
+{
+    G4cout << "ExtraPhysics:: Add Extra Physics Processes"
+              << G4endl;
+
+    auto particleIterator=GetParticleIterator();
+    particleIterator->reset();
+
+    while ((*particleIterator)()) {
+        G4ParticleDefinition* particle = particleIterator->value();
+        G4ProcessManager* pmanager = particle->GetProcessManager();
+        G4String particleName = particle->GetParticleName();
+        G4double charge = particle->GetPDGCharge();
+
+        if (!pmanager) {
+            std::ostringstream o;
+            o << "Particle " << particleName << "without a Process Manager";
+            G4Exception("ExtraPhysics::ConstructProcess()","",
+                         FatalException,o.str().c_str());
+        }
+
+        if (particleName == "opticalphoton") break;
+
+        if (charge != 0.0) {
+           // All charged particles should have a step limiter
+           // to make sure that the steps do not get too long.
+           pmanager->AddDiscreteProcess(new G4StepLimiter());
+           pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
+        } else if (particleName == "neutron") {
+          // time cuts for ONLY neutrons:
+          pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
+        } else {
+          // Energy cuts for all other neutral particles
+          pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
+        }
+    }
+}
diff --git a/Simular_flujo_de_neutrones/src/OpticalPhysics.cc b/Simular_flujo_de_neutrones/src/OpticalPhysics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..263312e43e9025307987064ba72526ac4abb43a9
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/OpticalPhysics.cc
@@ -0,0 +1,147 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: OpticalPhysics.cc 100260 2016-10-17 08:03:33Z gcosmo $
+//
+/// \file optical//src/OpticalPhysics.cc
+/// \brief Implementation of the OpticalPhysics class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#include "G4LossTableManager.hh"
+#include "G4EmSaturation.hh"
+
+#include "OpticalPhysics.hh"
+
+OpticalPhysics::OpticalPhysics(G4bool toggle)
+    : G4VPhysicsConstructor("Optical")
+{
+  fProcess                = NULL;
+  fScintProcess              = NULL;
+  fCerenkovProcess           = NULL;
+  fBoundaryProcess           = NULL;
+  fAbsorptionProcess         = NULL;
+  fRayleighScattering        = NULL;
+  fMieHGScatteringProcess    = NULL;
+
+  fAbsorptionOn              = toggle;
+}
+
+OpticalPhysics::~OpticalPhysics() { }
+
+#include "G4OpticalPhoton.hh"
+
+void OpticalPhysics::ConstructParticle()
+{
+  G4OpticalPhoton::OpticalPhotonDefinition();
+}
+
+#include "G4ProcessManager.hh"
+
+void OpticalPhysics::ConstructProcess()
+{
+    G4cout << "OpticalPhysics:: Add Optical Physics Processes"
+           << G4endl;
+
+  fProcess = new G4OpWLS();
+
+  fScintProcess = new G4Scintillation();
+  fScintProcess->SetScintillationYieldFactor(1.);
+  fScintProcess->SetTrackSecondariesFirst(true);
+
+  fCerenkovProcess = new G4Cerenkov();
+  fCerenkovProcess->SetMaxNumPhotonsPerStep(300);
+  fCerenkovProcess->SetTrackSecondariesFirst(true);
+
+  fAbsorptionProcess      = new G4OpAbsorption();
+  fRayleighScattering     = new G4OpRayleigh();
+  fMieHGScatteringProcess = new G4OpMieHG();
+  fBoundaryProcess        = new G4OpBoundaryProcess();
+
+  G4ProcessManager* pManager =
+                G4OpticalPhoton::OpticalPhoton()->GetProcessManager();
+
+  if (!pManager) {
+     std::ostringstream o;
+     o << "Optical Photon without a Process Manager";
+     G4Exception("OpticalPhysics::ConstructProcess()","",
+                  FatalException,o.str().c_str());
+  }
+
+  if (fAbsorptionOn) pManager->AddDiscreteProcess(fAbsorptionProcess);
+
+  //pManager->AddDiscreteProcess(fRayleighScattering);
+  //pManager->AddDiscreteProcess(fMieHGScatteringProcess);
+
+  pManager->AddDiscreteProcess(fBoundaryProcess);
+
+  fProcess->UseTimeProfile("delta");
+  //fProcess->UseTimeProfile("exponential");
+
+  pManager->AddDiscreteProcess(fProcess);
+
+  fScintProcess->SetScintillationYieldFactor(1.);
+  fScintProcess->SetScintillationExcitationRatio(0.0);
+  fScintProcess->SetTrackSecondariesFirst(true);
+
+  // Use Birks Correction in the Scintillation process
+
+  G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
+  fScintProcess->AddSaturation(emSaturation);
+
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while ( (*particleIterator)() ){
+
+    G4ParticleDefinition* particle = particleIterator->value();
+    G4String particleName = particle->GetParticleName();
+
+    pManager = particle->GetProcessManager();
+    if (!pManager) {
+       std::ostringstream o;
+       o << "Particle " << particleName << "without a Process Manager";
+       G4Exception("OpticalPhysics::ConstructProcess()","",
+                    FatalException,o.str().c_str());
+    }
+
+    if(fCerenkovProcess->IsApplicable(*particle)){
+      pManager->AddProcess(fCerenkovProcess);
+      pManager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
+    }
+    if(fScintProcess->IsApplicable(*particle)){
+      pManager->AddProcess(fScintProcess);
+      pManager->SetProcessOrderingToLast(fScintProcess,idxAtRest);
+      pManager->SetProcessOrderingToLast(fScintProcess,idxPostStep);
+    }
+
+  }
+}
+
+void OpticalPhysics::SetNbOfPhotonsCerenkov(G4int maxNumber)
+{
+  fCerenkovProcess->SetMaxNumPhotonsPerStep(maxNumber);
+}
diff --git a/Simular_flujo_de_neutrones/src/PMTHit.cc b/Simular_flujo_de_neutrones/src/PMTHit.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3a6a67c25b5919c7339adce2b4c29c4b8d26029e
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PMTHit.cc
@@ -0,0 +1,110 @@
+
+// Geant4 Libraries
+// 
+#include "G4SystemOfUnits.hh"
+#include "Randomize.hh"
+
+
+// Local Libraries
+// 
+#include "PMTHit.hh"
+
+
+G4ThreadLocal G4Allocator<PMTHit>* PMTHitAllocator=0;
+
+
+PMTHit::PMTHit()
+  : waveLength(0.)
+{}
+
+
+PMTHit::~PMTHit()
+{}
+
+G4int PMTHit::askDetected(G4double phoEner)
+{
+
+  this->GetWavelength(phoEner);
+  
+  if(waveLength >= 250.*nm && waveLength < 300.*nm)
+  {
+    if(G4UniformRand() <= 0.01)
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 300.*nm && waveLength < 350.*nm)
+  {
+    if(G4UniformRand() <= 0.03) 
+      return 1;
+    else
+      return 0;
+  }
+  else if(waveLength >= 350.*nm && waveLength < 400.*nm)
+  {
+    if(G4UniformRand() <= 0.2) 
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 400.*nm && waveLength < 450.*nm)
+  {
+    if(G4UniformRand() <= 0.25)
+      return 1;
+    else
+      return 0;
+  }
+  else if(waveLength >= 450.*nm && waveLength < 500.*nm)
+  {
+    if(G4UniformRand() <= 0.2) 
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 500.*nm && waveLength < 550.*nm)
+  {
+    if(G4UniformRand() <= 0.14) 
+      return 1;
+    else
+      return 0;
+  }
+  else if(waveLength >= 550.*nm && waveLength < 600.*nm)
+  {
+    if(G4UniformRand() <= 0.07)
+      return 1;
+    else 
+      return
+        0;
+  }
+  else if(waveLength >= 600.*nm && waveLength < 650.*nm)
+  {
+    if(G4UniformRand() <= 0.03) 
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 650.*nm && waveLength < 700.*nm)
+  {
+    if(G4UniformRand() <= 0.06)
+      return 1;
+    else 
+      return 0;
+  }
+  else
+   return 0;
+}
+
+
+void PMTHit::GetWavelength(G4double ener)
+{
+  waveLength = (0.00124 / ener)*nm;
+ /*G4cout << "lambda"
+	<< " " 
+        << waveLength
+	<< " " 
+	<< "energia"
+	<< " " 
+        << ener
+        << G4endl;*/
+}
+
diff --git a/Simular_flujo_de_neutrones/src/PMTSD.cc b/Simular_flujo_de_neutrones/src/PMTSD.cc
new file mode 100644
index 0000000000000000000000000000000000000000..aa80ffbe3b463e4744823a8d2213ebccf05196e3
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PMTSD.cc
@@ -0,0 +1,56 @@
+
+// Geant4 Libraries
+//
+#include "G4VPhysicalVolume.hh"
+#include "G4LogicalVolume.hh"
+#include "G4Track.hh"
+#include "G4Step.hh"
+#include "G4VTouchable.hh"
+#include "G4TouchableHistory.hh"
+#include "G4ios.hh"
+#include "G4ParticleTypes.hh"
+#include "G4ParticleDefinition.hh"
+
+
+// Local Libraries
+//
+#include "PMTSD.hh"
+#include "PMTHit.hh"
+#include "DetectorConstruction.hh"
+//#include "UserTrackInformation.hh"
+
+
+// C++ Libraries
+//
+
+
+PMTSD::PMTSD()
+  : phoHit(),
+  phoDetec(0.)
+//  : G4VSensitiveDetector(name),
+{
+  //G4cout << "...PMTSD..." << G4endl;
+  phoHit = new PMTHit;
+  kinEnergy = 0.;
+  phoDetec = 0;
+}
+
+
+PMTSD::~PMTSD()
+{}
+
+
+G4int PMTSD::ProcessHits(const G4Step* aStep)
+{
+  kinEnergy = aStep->GetTrack()->GetTotalEnergy();
+  phoDetec = phoHit->askDetected(kinEnergy);
+
+  return phoDetec;
+}
+
+
+void PMTSD::resetPMTSD()
+{
+  phoDetec = 0;
+  kinEnergy = 0.;
+}
diff --git a/Simular_flujo_de_neutrones/src/PhysicsList.cc b/Simular_flujo_de_neutrones/src/PhysicsList.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1d6ec9b85a3bef4761e7540dc69ba1493e2f45a3
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PhysicsList.cc
@@ -0,0 +1,309 @@
+// Geant4 Libraries
+//
+#include "G4LossTableManager.hh"
+#include "G4ProcessManager.hh"
+#include "G4ParticleTypes.hh"
+#include "G4ParticleTable.hh"
+#include "FTFP_BERT.hh"
+#include "QGSP_BERT_HP.hh"
+#include "G4Gamma.hh"
+#include "G4Electron.hh"
+#include "G4Positron.hh"
+#include "G4ProcessTable.hh"
+#include "G4PionDecayMakeSpin.hh"
+#include "G4DecayWithSpin.hh"
+#include "G4DecayTable.hh"
+#include "G4MuonDecayChannelWithSpin.hh"
+#include "G4MuonRadiativeDecayChannelWithSpin.hh"
+#include "G4RadioactiveDecayPhysics.hh"
+#include "G4SystemOfUnits.hh"
+
+
+// Local Libraries
+// 
+#include "PhysicsListMessenger.hh"
+#include "StepMax.hh"
+#include "PhysicsList.hh"
+#include "ExtraPhysics.hh"
+#include "OpticalPhysics.hh"
+
+
+
+PhysicsList::PhysicsList(G4String physName) : G4VModularPhysicsList()
+{
+    G4LossTableManager::Instance();
+
+    defaultCutValue  = 1.*mm;
+    fCutForGamma     = defaultCutValue;
+    fCutForElectron  = defaultCutValue;
+    fCutForPositron  = defaultCutValue;
+
+//    G4PhysListFactory factory;
+    G4VModularPhysicsList* phys = NULL;
+    if (physName == "QGSP_BERT_HP") {
+       phys = new QGSP_BERT_HP;
+    } else {
+       phys = new FTFP_BERT;
+    }
+//    if (factory.IsReferencePhysList(physName)) {
+//       phys = factory.GetReferencePhysList(physName);
+//       if(!phys)G4Exception("PhysicsList::PhysicsList","InvalidSetup",
+//                            FatalException,"PhysicsList does not exist");
+       fMessenger = new PhysicsListMessenger(this);
+//    }
+
+    for (G4int i = 0; ; ++i) {
+       G4VPhysicsConstructor* elem =
+                  const_cast<G4VPhysicsConstructor*> (phys->GetPhysics(i));
+       if (elem == NULL) break;
+       G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl;
+       RegisterPhysics(elem);
+    }
+
+    fAbsorptionOn = true;
+    
+    RegisterPhysics(new ExtraPhysics());
+    RegisterPhysics(fOpticalPhysics = new OpticalPhysics(fAbsorptionOn));
+
+    RegisterPhysics(new G4RadioactiveDecayPhysics());
+
+    fStepMaxProcess = new StepMax();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsList::~PhysicsList()
+{
+    delete fMessenger;
+
+    delete fStepMaxProcess;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ClearPhysics()
+{
+    for (G4PhysConstVector::iterator p  = fPhysicsVector->begin();
+                                     p != fPhysicsVector->end(); ++p) {
+        delete (*p);
+    }
+    fPhysicsVector->clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructParticle()
+{
+    G4VModularPhysicsList::ConstructParticle();
+
+    G4DecayTable* MuonPlusDecayTable = new G4DecayTable();
+    MuonPlusDecayTable -> Insert(new
+                           G4MuonDecayChannelWithSpin("mu+",0.986));
+    MuonPlusDecayTable -> Insert(new
+                           G4MuonRadiativeDecayChannelWithSpin("mu+",0.014));
+    G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable);
+
+    G4DecayTable* MuonMinusDecayTable = new G4DecayTable();
+    MuonMinusDecayTable -> Insert(new
+                            G4MuonDecayChannelWithSpin("mu-",0.986));
+    MuonMinusDecayTable -> Insert(new
+                            G4MuonRadiativeDecayChannelWithSpin("mu-",0.014));
+    G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable);
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructProcess()
+{
+    G4VModularPhysicsList::ConstructProcess();
+
+    SetVerbose(0);
+
+    G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin();
+
+    G4ProcessTable* processTable = G4ProcessTable::GetProcessTable();
+
+    G4VProcess* decay;
+    decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus());
+
+    G4ProcessManager* pManager;
+    pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(decayWithSpin);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
+      pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
+    }
+
+    decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus());
+
+    pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(decayWithSpin);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
+      pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
+    }
+
+    G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin();
+
+    decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus());
+
+    pManager = G4PionPlus::PionPlus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(poldecay);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(poldecay, idxPostStep);
+      pManager ->SetProcessOrdering(poldecay, idxAtRest);
+    }
+
+    decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus());
+
+    pManager = G4PionMinus::PionMinus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(poldecay);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(poldecay, idxPostStep);
+      pManager ->SetProcessOrdering(poldecay, idxAtRest);
+    }
+
+    AddStepMax();
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::RemoveFromPhysicsList(const G4String& name)
+{
+    G4bool success = false;
+    for (G4PhysConstVector::iterator p  = fPhysicsVector->begin();
+                                     p != fPhysicsVector->end(); ++p) {
+        G4VPhysicsConstructor* e = (*p);
+        if (e->GetPhysicsName() == name) {
+           fPhysicsVector->erase(p);
+           success = true;
+           break;
+        }
+    }
+    if (!success) {
+       G4ExceptionDescription message;
+       message << "PhysicsList::RemoveFromEMPhysicsList "<< name << "not found";
+       G4Exception("example PhysicsList::RemoveFromPhysicsList()",
+       "ExamPhysicsList01",FatalException,message);
+    }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetAbsorption(G4bool toggle)
+{
+       fAbsorptionOn = toggle;
+       RemoveFromPhysicsList("Optical");
+       fPhysicsVector->
+                    push_back(fOpticalPhysics = new OpticalPhysics(toggle));
+       fOpticalPhysics->ConstructProcess();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCuts()
+{
+    if (verboseLevel >0) {
+        G4cout << "PhysicsList::SetCuts:";
+        G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length")
+               << G4endl;
+    }
+
+    // set cut values for gamma at first and for e- second and next for e+,
+    // because some processes for e+/e- need cut values for gamma
+    SetCutValue(fCutForGamma, "gamma");
+    SetCutValue(fCutForElectron, "e-");
+    SetCutValue(fCutForPositron, "e+");
+
+    if (verboseLevel>0) DumpCutValuesTable();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCutForGamma(G4double cut)
+{
+    fCutForGamma = cut;
+    SetParticleCuts(fCutForGamma, G4Gamma::Gamma());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCutForElectron(G4double cut)
+{
+    fCutForElectron = cut;
+    SetParticleCuts(fCutForElectron, G4Electron::Electron());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCutForPositron(G4double cut)
+{
+    fCutForPositron = cut;
+    SetParticleCuts(fCutForPositron, G4Positron::Positron());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetStepMax(G4double step)
+{
+  fStepMaxProcess->SetStepMax(step);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax* PhysicsList::GetStepMaxProcess()
+{
+  return fStepMaxProcess;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::AddStepMax()
+{
+  // Step limitation seen as a process
+
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while ((*particleIterator)()){
+      G4ParticleDefinition* particle = particleIterator->value();
+      G4ProcessManager* pmanager = particle->GetProcessManager();
+
+      if (fStepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
+      {
+         if (pmanager) pmanager ->AddDiscreteProcess(fStepMaxProcess);
+      }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetNbOfPhotonsCerenkov(G4int maxNumber)
+{
+   fOpticalPhysics->SetNbOfPhotonsCerenkov(maxNumber);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetVerbose(G4int verbose)
+{
+   fOpticalPhysics->GetCerenkovProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetScintillationProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetAbsorptionProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetRayleighScatteringProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetMieHGScatteringProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetBoundaryProcess()->SetVerboseLevel(verbose);
+}
diff --git a/Simular_flujo_de_neutrones/src/PhysicsListMessenger.cc b/Simular_flujo_de_neutrones/src/PhysicsListMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d2215e7e685561ebceffd01e3c0bd4d691bfd1ff
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PhysicsListMessenger.cc
@@ -0,0 +1,234 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: PhysicsListMessenger.cc 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//src/PhysicsListMessenger.cc
+/// \brief Implementation of the PhysicsListMessenger class
+//
+//
+#include "globals.hh"
+
+#include "PhysicsListMessenger.hh"
+#include "PhysicsList.hh"
+
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithABool.hh"
+#include "G4UIcmdWithAString.hh"
+#include "G4UIcmdWithAnInteger.hh"
+#include "G4UIcmdWithoutParameter.hh"
+#include "G4UIcmdWithADoubleAndUnit.hh"
+
+#include "G4PhaseSpaceDecayChannel.hh"
+#include "G4PionRadiativeDecayChannel.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
+  : fPhysicsList(pPhys)
+{
+
+    fDirectory = new G4UIdirectory("/wcd/phys/");
+    fDirectory->SetGuidance("PhysicsList control");
+ 
+    fSetAbsorptionCMD = new G4UIcmdWithABool("/wcd/setAbsorption", this);
+    fSetAbsorptionCMD->SetGuidance("Turn on or off absorption process");
+    fSetAbsorptionCMD->AvailableForStates(G4State_Idle);
+
+    fVerboseCmd = new G4UIcmdWithAnInteger("/wcd/phys/verbose",this);
+    fVerboseCmd->SetGuidance("set verbose for physics processes");
+    fVerboseCmd->SetParameterName("verbose",true);
+    fVerboseCmd->SetDefaultValue(1);
+    fVerboseCmd->SetRange("verbose>=0");
+    fVerboseCmd->AvailableForStates(G4State_Idle);
+ 
+    fCerenkovCmd =
+                new G4UIcmdWithAnInteger("/wcd/phys/cerenkovMaxPhotons",this);
+    fCerenkovCmd->SetGuidance("set max nb of photons per step");
+    fCerenkovCmd->SetParameterName("MaxNumber",false);
+    fCerenkovCmd->SetRange("MaxNumber>=0");
+    fCerenkovCmd->AvailableForStates(G4State_Idle);
+
+    fGammaCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/gammaCut",this);
+    fGammaCutCMD->SetGuidance("Set gamma cut");
+    fGammaCutCMD->SetParameterName("Gcut",false);
+    fGammaCutCMD->SetUnitCategory("Length");
+    fGammaCutCMD->SetRange("Gcut>0.0");
+    fGammaCutCMD->SetDefaultUnit("mm");
+    fGammaCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fElectCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/electronCut",this);
+    fElectCutCMD->SetGuidance("Set electron cut");
+    fElectCutCMD->SetParameterName("Ecut",false);
+    fElectCutCMD->SetUnitCategory("Length");
+    fElectCutCMD->SetRange("Ecut>0.0");
+    fElectCutCMD->SetDefaultUnit("mm");
+    fElectCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fPosCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/positronCut",this);
+    fPosCutCMD->SetGuidance("Set positron cut");
+    fPosCutCMD->SetParameterName("Pcut",false);
+    fPosCutCMD->SetUnitCategory("Length");
+    fPosCutCMD->SetRange("Pcut>0.0");
+    fPosCutCMD->SetDefaultUnit("mm");
+    fPosCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fAllCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/allCuts",this);
+    fAllCutCMD->SetGuidance("Set cut for all");
+    fAllCutCMD->SetParameterName("cut",false);
+    fAllCutCMD->SetUnitCategory("Length");
+    fAllCutCMD->SetRange("cut>0.0");
+    fAllCutCMD->SetDefaultUnit("mm");
+    fAllCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fStepMaxCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/stepMax",this);
+    fStepMaxCMD->SetGuidance("Set max. step length in the detector");
+    fStepMaxCMD->SetParameterName("mxStep",false);
+    fStepMaxCMD->SetUnitCategory("Length");
+    fStepMaxCMD->SetRange("mxStep>0.0");
+    fStepMaxCMD->SetDefaultUnit("mm");
+    fStepMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fClearPhysicsCMD =
+                  new G4UIcmdWithoutParameter("/wcd/phys/clearPhysics",this);
+    fClearPhysicsCMD->SetGuidance("Clear the physics list");
+    fClearPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fRemovePhysicsCMD = new G4UIcmdWithAString("/wcd/phys/removePhysics",this);
+    fRemovePhysicsCMD->
+                     SetGuidance("Remove a physics process from Physics List");
+    fRemovePhysicsCMD->SetParameterName("PList",false);
+    fRemovePhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fListCMD = new G4UIcmdWithoutParameter("/wcd/phys/list",this);
+    fListCMD->SetGuidance("Available Physics Lists");
+    fListCMD->AvailableForStates(G4State_Idle);
+
+    fDecayDirectory = new G4UIdirectory("/decay/");
+    fDecayDirectory->SetGuidance("Decay chain control commands.");
+
+    fPienuCMD = new G4UIcmdWithoutParameter("/decay/pienu", this);
+    fPienuCMD->SetGuidance("Sets the pi+ to decay into e+, nu");
+
+    fPimunuCMD = new G4UIcmdWithoutParameter("/decay/pimunu", this);
+    fPimunuCMD->SetGuidance("Sets the pi+ to decay into mu+, nu");
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsListMessenger::~PhysicsListMessenger()
+{
+    delete fVerboseCmd;
+    delete fCerenkovCmd;
+
+    delete fSetAbsorptionCMD;
+
+    delete fGammaCutCMD;
+    delete fElectCutCMD;
+    delete fPosCutCMD;
+    delete fAllCutCMD;
+
+    delete fClearPhysicsCMD;
+    delete fRemovePhysicsCMD;
+
+    delete fListCMD;
+
+    delete fPienuCMD;
+    delete fPimunuCMD;
+
+    delete fDirectory;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
+                                          G4String newValue)
+{
+    if( command == fSetAbsorptionCMD ) {
+       fPhysicsList->SetAbsorption(G4UIcmdWithABool::GetNewBoolValue(newValue));
+    }
+
+    else if( command == fVerboseCmd ) {
+       fPhysicsList->SetVerbose(fVerboseCmd->GetNewIntValue(newValue));
+    }
+
+    else if( command == fCerenkovCmd ) {
+       fPhysicsList->
+           SetNbOfPhotonsCerenkov(fCerenkovCmd->GetNewIntValue(newValue));
+    }
+
+    else if (command == fPienuCMD) {
+       G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
+       G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
+       G4VDecayChannel* mode = 
+                        new G4PhaseSpaceDecayChannel("pi+",1.0,2,"e+","nu_e");
+       G4DecayTable* table = new G4DecayTable();
+       table->Insert(mode);
+      // mode = new G4PionRadiativeDecayChannel("pi+",0.000017);
+      // table->Insert(mode);
+       particleDef->SetDecayTable(table);
+    }
+
+    else if (command == fPimunuCMD) {
+       G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
+       G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
+       G4VDecayChannel* mode =
+                     new G4PhaseSpaceDecayChannel("pi+",1.000,2,"mu+","nu_mu");
+       G4DecayTable* table = new G4DecayTable();
+       table->Insert(mode);
+       particleDef->SetDecayTable(table);
+    }
+
+    else if (command == fGammaCutCMD) {
+        fPhysicsList->SetCutForGamma(fGammaCutCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fElectCutCMD) {
+        fPhysicsList->SetCutForElectron(fElectCutCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fPosCutCMD) {
+        fPhysicsList->SetCutForPositron(fPosCutCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fAllCutCMD) {
+        G4double cut = fAllCutCMD->GetNewDoubleValue(newValue);
+        fPhysicsList->SetCutForGamma(cut);
+        fPhysicsList->SetCutForElectron(cut);
+        fPhysicsList->SetCutForPositron(cut);
+    }
+    else if (command == fStepMaxCMD) {
+        fPhysicsList->SetStepMax(fStepMaxCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fClearPhysicsCMD) {
+        fPhysicsList->ClearPhysics();
+    }
+    else if (command == fRemovePhysicsCMD) {
+        G4String name = newValue;
+        fPhysicsList->RemoveFromPhysicsList(name);
+    }
+}
diff --git a/Simular_flujo_de_neutrones/src/PrimaryGeneratorAction.cc b/Simular_flujo_de_neutrones/src/PrimaryGeneratorAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..03d0f3d68626ba81e314fa32d5811d8dcc0c9bb7
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PrimaryGeneratorAction.cc
@@ -0,0 +1,127 @@
+
+// Geant4 Libraries
+//
+#include "Randomize.hh"
+
+#include "G4Event.hh"
+#include "G4ParticleGun.hh"
+#include "G4ParticleTable.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4SystemOfUnits.hh"
+
+
+// Local Libraries
+//
+#include "PrimaryGeneratorAction.hh"
+#include "PrimaryGeneratorMessenger.hh"
+
+#include "G4LogicalVolumeStore.hh"
+#include "G4LogicalVolume.hh"
+#include "G4RunManager.hh"
+
+PrimaryGeneratorAction::PrimaryGeneratorAction()
+  : G4VUserPrimaryGeneratorAction(), 
+  enerPart(1.),
+  fParticleGun(0),
+  parPosDir()
+{
+  G4int n_particle = 1;
+  fParticleGun = new G4ParticleGun(n_particle);
+
+  //create a messenger for this class
+  fGunMessenger = new PrimaryGeneratorMessenger(this);
+
+  //To select one single particle
+/*
+  G4ParticleTable* particleTable 
+   = G4ParticleTable::GetParticleTable();
+
+  G4ParticleDefinition* particle 
+   = particleTable->FindParticle("neutron");
+
+  fParticleGun->SetParticleDefinition(particle);
+  fParticleGun->SetParticleTime(0.0*ns);
+  fParticleGun->SetParticlePosition(G4ThreeVector(0.0*m, 0.0*m, 4.1*m));// initial position 
+  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0., 0., -10)); // 0
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.09, 0., -0.99)); // 5
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.17, 0., -0.98)); // 10
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.25, 0., -0.96)); // 15
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.34, 0., -0.93)); // 20
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.42, 0., -0.9)); // 25
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.5, 0., -0.86)); // 30
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.57, 0., -0.81)); // 35
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.64, 0., -0.76)); // 40
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-1., 0., -1.)); // 45
+  fParticleGun->SetParticleEnergy(0.001*eV);
+*/
+}
+
+
+PrimaryGeneratorAction::~PrimaryGeneratorAction()
+{
+  delete fParticleGun;
+  delete fGunMessenger;
+}
+
+void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
+{
+	
+	//To select all secondaries flux from CORSIKA
+		
+	parPosDir.primaryPosition();
+	parPosDir.primaryMomento();
+
+	G4ThreeVector position = parPosDir.particlePosition;
+	G4ThreeVector direction = parPosDir.particleDirection;
+	G4String parid = parPosDir.parId;
+
+	G4ParticleTable* particleTable 
+		= G4ParticleTable::GetParticleTable();
+	
+	G4ParticleDefinition* particle 
+		= particleTable->FindParticle(parid);
+
+
+	fParticleGun->SetParticleDefinition(particle);
+	fParticleGun->SetParticlePosition(position);
+	fParticleGun->SetParticleMomentumDirection(direction);
+
+//----------------------------------
+
+	fParticleGun->GeneratePrimaryVertex(anEvent);
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorAction::SetOptPhotonPolar()
+{
+ G4double angle = G4UniformRand() * 360.0*deg;
+ SetOptPhotonPolar(angle);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorAction::SetOptPhotonPolar(G4double angle)
+{
+ if (fParticleGun->GetParticleDefinition()->GetParticleName()!="opticalphoton")
+   {
+     /*G4cout << "--> warning from PrimaryGeneratorAction::SetOptPhotonPolar() :"
+               "the particleGun is not an opticalphoton" << G4endl;*/
+     return;
+   }
+
+ G4ThreeVector normal (1., 0., 0.);
+ G4ThreeVector kphoton = fParticleGun->GetParticleMomentumDirection();
+ G4ThreeVector product = normal.cross(kphoton);
+ G4double modul2       = product*product;
+ 
+ G4ThreeVector e_perpend (0., 0., 1.);
+ if (modul2 > 0.) e_perpend = (1./std::sqrt(modul2))*product;
+ G4ThreeVector e_paralle    = e_perpend.cross(kphoton);
+ 
+ G4ThreeVector polar = std::cos(angle)*e_paralle + std::sin(angle)*e_perpend;
+ fParticleGun->SetParticlePolarization(polar);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_flujo_de_neutrones/src/PrimaryGeneratorMessenger.cc b/Simular_flujo_de_neutrones/src/PrimaryGeneratorMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..069b70b078a641b5d2eb3299d8f146784481e35e
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PrimaryGeneratorMessenger.cc
@@ -0,0 +1,88 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /src/PrimaryGeneratorMessenger.cc
+/// \brief Implementation of the PrimaryGeneratorMessenger class
+//
+//
+//
+// 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "PrimaryGeneratorMessenger.hh"
+
+#include "PrimaryGeneratorAction.hh"
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithADoubleAndUnit.hh"
+#include "G4SystemOfUnits.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorMessenger::
+  PrimaryGeneratorMessenger(PrimaryGeneratorAction* Gun)
+  : G4UImessenger(),
+    fAction(Gun)
+{
+   G4cout << "...PrimaryGeneratorMessenger..." << G4endl;
+  fGunDir = new G4UIdirectory("//gun/");
+  fGunDir->SetGuidance("PrimaryGenerator control");
+
+  fPolarCmd =
+           new G4UIcmdWithADoubleAndUnit("//gun/optPhotonPolar",this);
+  fPolarCmd->SetGuidance("Set linear polarization");
+  fPolarCmd->SetGuidance("  angle w.r.t. (k,n) plane");
+  fPolarCmd->SetParameterName("angle",true);
+  fPolarCmd->SetUnitCategory("Angle");
+  fPolarCmd->SetDefaultValue(-360.0);
+  fPolarCmd->SetDefaultUnit("deg");
+  fPolarCmd->AvailableForStates(G4State_Idle);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorMessenger::~PrimaryGeneratorMessenger()
+{
+  delete fPolarCmd;
+  delete fGunDir;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorMessenger::SetNewValue(
+                                        G4UIcommand* command, G4String newValue)
+{
+  if( command == fPolarCmd ) {
+      G4double angle = fPolarCmd->GetNewDoubleValue(newValue);
+      if ( angle == -360.0*deg ) {
+         fAction->SetOptPhotonPolar();
+      } else {
+         fAction->SetOptPhotonPolar(angle);
+      }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_flujo_de_neutrones/src/PrimarySpectrum.cc b/Simular_flujo_de_neutrones/src/PrimarySpectrum.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5517ac85c08fc935b1dcef2db8dea0d23db6f191
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PrimarySpectrum.cc
@@ -0,0 +1,207 @@
+// Geant libraries
+//
+#include "G4SystemOfUnits.hh"
+#include "globals.hh"
+#include "g4root.hh"
+#include "Randomize.hh"
+#include "G4ios.hh"
+
+
+// Local libraries
+//
+#include "PrimarySpectrum.hh"
+#include "EventAction.hh"
+#include "PrimarySpectrumMessenger.hh"
+
+
+// c++ libraries
+//
+#include <math.h>
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+#include <vector>
+#include <string>
+#include <iomanip>
+#include <stdio.h>
+
+
+PrimarySpectrum::PrimarySpectrum():
+	pi(3.14159265358979323846)
+{
+	particlePosition 
+		= G4ThreeVector(0.,0.,360.);
+	particleDirection
+		= G4ThreeVector(0., 0., -1.);
+
+
+  fSpectMessenger= new PrimarySpectrumMessenger(this);
+  inputFile = new char();
+  inputFile = "salidasimu.shw.bz2";
+	
+	openFile(inputFile);
+
+  Ro = 100*m;
+  initx = 0.*m;
+  inity = 0.*m;
+  initz = 5*m; //a 0.9 mm del suelo 
+  r = 0.;
+  theta = 0.;
+  px = 0.*GeV;
+  py = 0.*GeV;
+  pz = 0.*GeV;
+}
+
+
+PrimarySpectrum::~PrimarySpectrum()
+{}
+
+
+int PrimarySpectrum::openFile(std::string name)
+{
+	char tmpc[256];
+  
+  const char* nfi = name.c_str();
+
+	snprintf(tmpc,256,"bzip2 -d -c %s",nfi);
+	inFile = popen(tmpc,"r");
+
+	G4cout << "File was opened" << G4endl;
+
+	return 1;
+}
+
+
+void PrimarySpectrum::primaryMomento()
+{
+	G4int search = 1;
+	char line[256];
+
+	while(search)
+	{
+	
+		if(feof(inFile))
+      openFile(inputFile);
+
+		if(fgets(line,256,inFile))
+		{
+			if(line[0] != '#')
+			{
+				sscanf(
+					line,
+					"%d %lf %lf %lf %lf %lf %lf %d %d %lf %lf %lf\n",
+					&crkId,
+					&px,
+					&py, 
+					&pz,
+					&x,
+					&y,
+					&z,
+					&shwId,
+					&prmId,
+					&prmEner,
+					&prmThe,
+					&prmPhi
+          );
+			}
+		}
+
+		search = 0;
+
+		switch(crkId)
+		{
+			case 1:
+				parId = "gamma";
+				break;
+			case 2:
+				parId = "e+";
+				break;
+			case 3:
+				parId = "e-";
+				break;
+			case 5:
+				parId = "mu+";
+				break;
+			case 6:
+				parId = "mu-";
+				break;
+			case 7:
+				parId = "pi0";
+				break;
+			case 8:
+				parId = "pi+";
+				break;
+			case 9:
+				parId = "pi-";
+				break;
+			case 10:
+				parId = "kaon0L";
+				break;
+			case 11:
+				parId = "kaon+";
+				break;
+			case 12:
+				parId = "kaon-";
+				break;
+			case 13:
+				parId = "neutron";
+				break;
+			case 14:
+				parId = "proton";
+				break;
+			case 15:
+				parId = "anti_proton";
+				break;
+			case 25:
+				parId = "anti_neutron";
+				break;
+			default:
+				search = 1;
+		}
+	}
+	
+	particleDirection
+		= G4ThreeVector( px*GeV, py*GeV, (-1*pz*GeV) );
+
+		/*	G4cout
+			<< px
+			<< " "
+			<< py
+			<< " "
+			<< pz
+			//<< //"AJM-ener "
+			<< G4endl; 
+*/
+}
+
+
+void PrimarySpectrum::primaryPosition()
+{
+  r = Ro*sqrt( G4UniformRand() );
+  theta = 2*pi*G4UniformRand();
+  
+  initx = r*cos( theta );
+  inity = r*sin( theta );
+
+  particlePosition
+    = G4ThreeVector(initx, inity, initz);
+
+	
+			/*G4cout
+			<< "x"
+			<< " "
+			<< initx
+			<< "y"
+			<< " "
+			<< inity
+			<< "z"
+			<< " "
+			<< initz
+			<< "AJM-posi"
+			<< " "
+			<< G4endl; */
+
+
+
+}
+
diff --git a/Simular_flujo_de_neutrones/src/PrimarySpectrumMessenger.cc b/Simular_flujo_de_neutrones/src/PrimarySpectrumMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c90623c622a2424fa4d71dc3257ff79de0c719ee
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/PrimarySpectrumMessenger.cc
@@ -0,0 +1,42 @@
+#include "PrimarySpectrumMessenger.hh"
+
+#include "PrimaryGeneratorAction.hh"
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithADoubleAndUnit.hh"
+#include "G4UIcmdWithAString.hh"
+#include "G4SystemOfUnits.hh"
+
+
+// C++ Libraries
+//
+#include <string>  
+#include <fstream>
+#include <sstream>
+
+
+PrimarySpectrumMessenger::
+  PrimarySpectrumMessenger(PrimarySpectrum* spectrum)
+  : G4UImessenger(),
+    fSpectrum(spectrum)
+{
+  G4cout << "...PrimarySpectrumMessenger..." << G4endl;
+  fSpecDir = new G4UIdirectory("/spectrum/");
+  fSpecDir->SetGuidance("PrimarySpectrum control");
+
+  inFile = new G4UIcmdWithAString("/spectrum/readfile", this);
+}
+
+
+PrimarySpectrumMessenger::~PrimarySpectrumMessenger()
+{}
+
+
+void PrimarySpectrumMessenger::SetNewValue(
+    G4UIcommand* command, G4String inFl)
+{
+  if ( command == inFile )
+  {
+    fSpectrum->inputFile = inFl;
+    fSpectrum->openFile(inFl);
+  }
+}
diff --git a/Simular_flujo_de_neutrones/src/RunAction.cc b/Simular_flujo_de_neutrones/src/RunAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..771dbfd6e6c34e33f527ed65749750bdf105641a
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/RunAction.cc
@@ -0,0 +1,99 @@
+#include "G4Timer.hh"
+#include "RunAction.hh"
+#include "G4Run.hh"
+#include "g4root.hh"
+#include "G4SystemOfUnits.hh"
+
+
+
+RunAction::RunAction()
+ : G4UserRunAction(),
+   fTimer(0)
+{
+  fTimer = new G4Timer;
+
+	G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
+
+	analysisManager->SetVerboseLevel(1);
+	analysisManager->SetActivation(true);
+
+
+
+analysisManager->CreateH1("entran_al_suelo"," ", 2, 0., 2.);
+analysisManager->CreateH1("energia_n"," ", 10000, 0, 10);
+   
+
+
+
+
+
+/*analysisManager->CreateH1("total_particulas_generadas_detector_1"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_2"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_3"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_4"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_5"," ", 6, 0., 6.);*/
+
+
+//analysisManager->CreateH1("angulo_tetta"," ", 10000, 0., 180.)
+/*analysisManager->CreateH1("energia_gamma"," ", 10000, 0., 100.);
+//analysisManager->CreateH1("energia_n"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_p"," ", 10000, 0., 100.);
+analysisManager->CreateH1("e_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("gamma_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("energia_e_detectados"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_gamma_detectados"," ", 10000, 0., 100.*MeV);
+analysisManager->CreateH1("n_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("p_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("energia_n_detectados"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_p_detectados"," ", 10000, 0., 100.);*/
+//analysisManager->CreateH1("ener0_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("ener1_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("ener2_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("dis0_p"," ", 1000, 0.*cm, 1.*cm);
+//analysisManager->CreateH1("dis1_p"," ", 1000, 0.*cm, 1.*cm);
+//analysisManager->CreateH1("dis2_p"," ", 1000, 0.*cm, 1.*cm);
+//analysisManager->CreateH1("ener_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("dis_p"," ", 1000000, 0.*m, 2.*m);
+//analysisManager->CreateH1("ener1_g"," ", 1000, 0.*MeV, 10.*MeV);
+//analysisManager->CreateH1("ener2_g"," ", 1000, 0.*MeV, 10.*MeV);
+//analysisManager->CreateH1("ener3_g"," ", 1000, 0.*MeV, 10.*MeV);
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+RunAction::~RunAction()
+{
+  delete fTimer;
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::BeginOfRunAction(const G4Run* aRun)
+{
+  G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
+  fTimer->Start();
+
+  G4AnalysisManager* analysisManager
+     = G4AnalysisManager::Instance();
+
+  G4String rootFile = "minas";
+  analysisManager->OpenFile(rootFile);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::EndOfRunAction(const G4Run* aRun)
+{
+  fTimer->Stop();
+ G4cout << "number of event = " << aRun->GetNumberOfEvent();
+
+  G4AnalysisManager* analysisManager
+     = G4AnalysisManager::Instance();
+  analysisManager->Write(); 
+  analysisManager->CloseFile();
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_flujo_de_neutrones/src/StackingAction.cc b/Simular_flujo_de_neutrones/src/StackingAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..50f7cb4f495bdb7ae3fb5455f7f981b005ff1c2a
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/StackingAction.cc
@@ -0,0 +1,69 @@
+
+// Geant4 Libraries
+//
+#include "G4VProcess.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4ParticleTypes.hh"
+#include "G4Track.hh"
+#include "G4ios.hh"
+
+
+// Local Libraries
+//
+#include "StackingAction.hh"
+
+
+StackingAction::StackingAction()
+  : G4UserStackingAction(),
+    fScintillationCounter(0),
+    fCerenkovCounter(0),
+    lengthMax(0.)
+{
+   G4cout << "...StackingAction..." << G4endl;
+}
+
+
+StackingAction::~StackingAction()
+{}
+
+
+G4ClassificationOfNewTrack
+StackingAction::ClassifyNewTrack(const G4Track * aTrack)
+{ 
+  if(aTrack->GetParentID()==0)
+    lengthMax = aTrack->GetTrackLength();
+    
+  if(aTrack->GetDefinition() == G4OpticalPhoton::OpticalPhotonDefinition())
+  { // particle is optical photon
+    if(aTrack->GetParentID()>0)
+    { // particle is secondary
+      if(aTrack->GetCreatorProcess()->GetProcessName() == "Scintillation")
+        fScintillationCounter++;
+      if(aTrack->GetCreatorProcess()->GetProcessName() == "Cerenkov")
+         if(aTrack->GetTotalEnergy() > 1.6e-06//2.13e-6//1.6e-06
+             && aTrack->GetTotalEnergy() < 3.1e-6)//4.13e-6)//3.1e-6)
+                 fCerenkovCounter++;
+    }
+  }
+
+
+  return fUrgent;
+
+}
+
+
+void StackingAction::NewStage()
+{
+ /* G4cout << "Number of Scintillation photons produced in this event : "
+         << fScintillationCounter << G4endl;
+  G4cout << "Number of Cerenkov photons produced in this event : "
+         << fCerenkovCounter << G4endl;*/
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void StackingAction::PrepareNewEvent()
+{
+  fScintillationCounter = 0;
+  fCerenkovCounter = 0;
+}
diff --git a/Simular_flujo_de_neutrones/src/StepMax.cc b/Simular_flujo_de_neutrones/src/StepMax.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4db095dedad7d24d4b7d0caee67bdf9bee20a7f8
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/StepMax.cc
@@ -0,0 +1,98 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: StepMax.cc 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//src/StepMax.cc
+/// \brief Implementation of the StepMax class
+//
+//
+#include "G4Track.hh"
+#include "G4VParticleChange.hh"
+
+#include "StepMax.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::StepMax(const G4String& aName)
+  : G4VDiscreteProcess(aName), fMaxChargedStep(DBL_MAX)
+{
+   if (verboseLevel>0) {
+     G4cout << GetProcessName() << " is created "<< G4endl;
+   }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::~StepMax() { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::StepMax(StepMax& right) : G4VDiscreteProcess(right) { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle)
+{
+  return (particle.GetPDGCharge() != 0.);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void StepMax::SetStepMax(G4double step) { fMaxChargedStep = step ; }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double StepMax::PostStepGetPhysicalInteractionLength(
+                                              const G4Track&,
+                                              G4double,
+                                              G4ForceCondition* condition)
+{
+  // condition is set to "Not Forced"
+  *condition = NotForced;
+
+  G4double ProposedStep = DBL_MAX;
+
+  if ( fMaxChargedStep > 0.) ProposedStep = fMaxChargedStep;
+
+   return ProposedStep;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack,
+                                         const G4Step&         )
+{
+   // do nothing
+   aParticleChange.Initialize(aTrack);
+   return &aParticleChange;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double StepMax::GetMeanFreePath(const G4Track&,G4double,G4ForceCondition*)
+{
+  return 0.;
+}
diff --git a/Simular_flujo_de_neutrones/src/SteppingAction.cc b/Simular_flujo_de_neutrones/src/SteppingAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f005307f4e7ada5950ac1eccd45ff4605e1b82c8
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/SteppingAction.cc
@@ -0,0 +1,190 @@
+// Geant4 Libraries
+//
+#include "G4Step.hh"
+#include "G4Track.hh"
+#include "G4OpticalPhoton.hh"
+
+#include "CLHEP/Units/SystemOfUnits.h" // para definir constantes físicas en Geant4
+
+#include "G4Event.hh"
+#include "G4RunManager.hh"
+#include "g4root.hh"
+#include "G4SDManager.hh"
+#include "G4TransportationManager.hh"
+#include "G4SystemOfUnits.hh"
+
+#include "G4UserEventAction.hh"
+#include "G4Event.hh"
+
+#include "SteppingAction.hh"
+#include "DetectorConstruction.hh"
+#include "PMTSD.hh"
+#include "PMTHit.hh"
+#include "UserEventAction.hh"
+#include "PrimarySpectrum.hh"
+#include "iostream"
+#include <stdio.h>
+#include <iostream>
+#include <fstream>
+
+using namespace std;
+SteppingAction::SteppingAction()
+  : G4UserSteppingAction()
+{
+
+  G4TransportationManager::GetTransportationManager()
+    ->GetNavigatorForTracking()->SetPushVerbosity(0);
+
+fEventNumber = -1;
+alsuelo=0;
+generadas = 0;
+ener_e=0;
+ener_g=0;
+ener_n=0;
+ener_p=0;
+detect_g=0;
+detect_e=0;
+ener_e_det=0;
+ener_g_det=0;
+
+  detectorConstruction 
+     = static_cast < const DetectorConstruction* 
+     > (G4RunManager::GetRunManager()
+         ->GetUserDetectorConstruction());
+}
+
+SteppingAction::~SteppingAction()
+{}
+
+
+void SteppingAction::UserSteppingAction(const G4Step* step)
+{
+
+  //ofstream file;
+  //file.open("/root/humedad-0%/out2.txt"); 
+
+  // ==========================
+  // Get current PhysicalVolume
+  thePostPV = step->GetPostStepPoint()->GetPhysicalVolume()->GetName();
+  thePrePV = step->GetPreStepPoint()->GetPhysicalVolume()->GetName();
+
+
+  // =========
+  // Get Track
+  G4Track* track = step->GetTrack();
+
+  // ============
+  // Get Event Id
+  G4int eventNumber                
+    = G4RunManager::GetRunManager()
+    ->GetCurrentEvent()
+    ->GetEventID();
+  
+  // =================
+  // Get Particle Name
+  G4String ParticleName 
+    = track->GetDynamicParticle()->GetParticleDefinition()->GetParticleName();
+
+  // =================
+  // Get Histograms
+  G4AnalysisManager* analysisManager
+    = G4AnalysisManager::Instance();
+
+  //==========================
+  // Global time
+  //G4double tiempo = track->GetGlobalTime();
+
+  // =================
+  // Get parent ID
+  G4double parentID = step->GetTrack()->GetParentID();
+
+  // =================
+  // Get current step number
+  G4double paso  = step->GetTrack()->GetCurrentStepNumber();
+  // Get energy step number 
+  //G4double energia = track->GetKineticEnergy();
+  // ******************************
+  // Reset variables fog each event
+  // ******************************
+  
+  G4ThreeVector position = step->GetPreStepPoint()->GetPosition(); 
+  G4double x = step->GetPreStepPoint()->GetPosition().x()/m;
+  G4double y = step->GetPreStepPoint()->GetPosition().y()/m;
+  G4double z = step->GetPreStepPoint()->GetPosition().z()/m; // determinar la posicion de la particula
+
+  // Obtener el momentum en MeV/c
+  G4ThreeVector momentum = step->GetPreStepPoint()->GetMomentum();
+  G4double px = momentum.x();
+  G4double py = momentum.y();
+  G4double pz = momentum.z();
+  
+  // Obtener los ángulos de dirección en grados
+  G4double theta = momentum.theta(); // en radianes
+  G4double phi = momentum.phi();     // en radianes
+  G4double theta_deg = theta*180./CLHEP::pi; // en grados
+  G4double phi_deg = phi*180./CLHEP::pi;     // en grados
+
+ const G4StepPoint* lastPoint = step->GetPostStepPoint();
+
+ // Obtener la posición del último punto en metros
+ G4ThreeVector pos_last = lastPoint->GetPosition()/CLHEP::m;
+ G4double x_last = pos_last.x();
+ G4double y_last = pos_last.y();
+ G4double z_last = pos_last.z();
+
+ // Obtener el momento en el último punto en MeV/c
+ G4ThreeVector momentum_last = lastPoint->GetMomentum();
+ G4double px_last = momentum_last.x();
+ G4double py_last = momentum_last.y();
+ G4double pz_last = momentum_last.z();
+
+ // Obtener los ángulos de dirección en el último punto en grados
+ G4double theta_last = momentum_last.theta(); // en radianes
+ G4double phi_last = momentum_last.phi();     // en radianes
+ G4double theta_deg_last = theta_last*180./CLHEP::pi; // en grados
+ G4double phi_deg_last = phi_last*180./CLHEP::pi;     // en grados
+
+	if (eventNumber != fEventNumber)
+  	{
+		fEventNumber = eventNumber;
+     		ener_e=0;
+     		ener_g=0;
+     		ener_n=0;
+     		ener_p=0;
+     		ener_e_det=0;
+     		ener_g_det=0;
+	}
+  
+   	if( parentID == 0 && thePostPV == "ground")
+    		track->SetTrackStatus(fStopAndKill);
+
+  	if ( thePostPV == "fWorld" || thePostPV  == "ground" )
+    		track->SetTrackStatus(fStopAndKill);
+                                          
+  	
+	if (ParticleName == "neutron" && thePostPV == "detector" )
+	{       
+		//G4cout << eventNumber << G4endl;
+
+		//if (paso == 1)
+		//{
+		//	G4cout << eventNumber << " " <<  parentID << " " << x << " " << y << " " << z << " " << px << " " << py << " " << pz << " " << theta_deg << " " << phi_deg << G4endl;
+		//analysisManager->FillH1(2,theta_deg);
+		
+		//}
+  		//G4cout << eventNumber << " " << parentID << " " << x_last << " "  << y_last << " " << z_last << " " << px_last << " " << py_last << " " << pz_last << " " << theta_deg_last << " " << phi_deg_last << G4endl;    
+               //analysisManager->FillH1(2,theta_deg_last);
+  		
+		generadas = 1;
+		analysisManager->FillH1(0,generadas);
+		ener_n =step->GetPreStepPoint()->GetKineticEnergy();
+		ener_g = ener_n*1e6;
+		analysisManager->FillH1(1,ener_g);		
+		//G4cout << ener_g<< G4endl;
+
+		track->SetTrackStatus(fStopAndKill);
+  		
+	}
+   
+
+}
diff --git a/Simular_flujo_de_neutrones/src/SteppingVerbose.cc b/Simular_flujo_de_neutrones/src/SteppingVerbose.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6d2721c7895bb9f5202e51d9d81059dbf3e74da5
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/SteppingVerbose.cc
@@ -0,0 +1,188 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /src/SteppingVerbose.cc
+/// \brief Implementation of the SteppingVerbose class
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "SteppingVerbose.hh"
+
+#include "G4SteppingManager.hh"
+#include "G4UnitsTable.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingVerbose::SteppingVerbose()
+ : G4SteppingVerbose()
+{
+   G4cout << "...SteppingVerbose..." << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingVerbose::~SteppingVerbose()
+{
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingVerbose::StepInfo()
+{
+  CopyState();
+
+  G4int prec = G4cout.precision(3);
+
+  if( verboseLevel >= 1 ){
+    if( verboseLevel >= 4 ) VerboseTrack();
+    if( verboseLevel >= 3 ){
+      G4cout << G4endl;
+      G4cout << std::setw( 5) << "#Step#"     << " "
+             << std::setw( 6) << "X"          << "    "
+             << std::setw( 6) << "Y"          << "    "
+             << std::setw( 6) << "Z"          << "    "
+             << std::setw( 9) << "KineE"      << " "
+             << std::setw( 9) << "dEStep"     << " "
+             << std::setw(10) << "StepLeng"
+             << std::setw(10) << "TrakLeng"
+             << std::setw(10) << "Volume"    << "  "
+             << std::setw(10) << "Process"   << G4endl;
+    }
+
+    G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
+    << std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
+    << std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
+    << std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
+    << "  ";
+
+    // if( fStepStatus != fWorldBoundary){
+    if( fTrack->GetNextVolume() != 0 ) {
+      G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
+    } else {
+      G4cout << std::setw(10) << "OutOfWorld";
+    }
+
+    if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){
+      G4cout << "  "
+             << std::setw(10)
+             << fStep->GetPostStepPoint()->GetProcessDefinedStep()
+                                         ->GetProcessName();
+    } else {
+      G4cout << "   UserLimit";
+    }
+
+    G4cout << G4endl;
+
+    if( verboseLevel == 2 ){
+      G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
+                            fN2ndariesAlongStepDoIt +
+                            fN2ndariesPostStepDoIt;
+      if(tN2ndariesTot>0){
+        G4cout << "    :----- List of 2ndaries - "
+               << "#SpawnInStep=" << std::setw(3) << tN2ndariesTot 
+               << "(Rest="  << std::setw(2) << fN2ndariesAtRestDoIt
+               << ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
+               << ",Post="  << std::setw(2) << fN2ndariesPostStepDoIt
+               << "), "
+               << "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
+               << " ---------------"
+               << G4endl;
+
+        for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
+                        lp1<(*fSecondary).size(); lp1++){
+          G4cout << "    : "
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
+                 << std::setw(10)
+                 << (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
+          G4cout << G4endl;
+        }
+ 
+        G4cout << "    :-----------------------------"
+               << "----------------------------------"
+               << "-- EndOf2ndaries Info ---------------"
+               << G4endl;
+      }
+    }
+
+  }
+  G4cout.precision(prec);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingVerbose::TrackingStarted()
+{
+
+  CopyState();
+  G4int prec = G4cout.precision(3);
+  if( verboseLevel > 0 ){
+
+    G4cout << std::setw( 5) << "Step#"      << " "
+           << std::setw( 6) << "X"          << "    "
+           << std::setw( 6) << "Y"          << "    "  
+           << std::setw( 6) << "Z"          << "    "
+           << std::setw( 9) << "KineE"      << " "
+           << std::setw( 9) << "dEStep"     << " "
+           << std::setw(10) << "StepLeng"
+           << std::setw(10) << "TrakLeng"
+           << std::setw(10) << "Volume"     << "  "
+           << std::setw(10) << "Process"    << G4endl;
+
+   G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
+    << std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
+    << std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
+    << std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
+    << "  ";
+
+    if(fTrack->GetNextVolume()){
+      G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
+    } else {
+      G4cout << "OutOfWorld";
+    }
+    G4cout << "    initStep" << G4endl;
+  }
+  G4cout.precision(prec);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_flujo_de_neutrones/src/UserEventAction.cc b/Simular_flujo_de_neutrones/src/UserEventAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..80b2f040d14ddfa1cf3671fce6f7f14c0c4b929e
--- /dev/null
+++ b/Simular_flujo_de_neutrones/src/UserEventAction.cc
@@ -0,0 +1,29 @@
+
+// Geant4 Libraries
+//
+#include "G4UserEventAction.hh"
+#include "G4Event.hh"
+
+// Local Libraries
+//
+#include "UserEventAction.hh"
+
+
+UserEventAction::UserEventAction()
+{}
+
+
+UserEventAction::~UserEventAction()
+{}
+
+
+void UserEventAction::BeginOfEventAction(const G4Event* event)
+{
+//G4cout << "Begin Event: " << event->GetEventID() << G4endl;
+}
+
+
+void UserEventAction::EndOfEventAction(const G4Event* event)
+{
+	//G4cout << "End Event: " << event->GetEventID() << G4endl;
+}
diff --git a/Simular_flujo_de_neutrones/therunLine.txt b/Simular_flujo_de_neutrones/therunLine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bb5ee4303dae0385858ab2f062f937da5a253e7
--- /dev/null
+++ b/Simular_flujo_de_neutrones/therunLine.txt
@@ -0,0 +1 @@
+cmake -DGeant4_DIR=/home/adriana/GEANT4/geant4.10.3-install/lib/Geant4-10.3.1/ ../minas/; make -j2; time ./wcd -m input.in
diff --git a/Simular_flujo_de_neutrones/view.html b/Simular_flujo_de_neutrones/view.html
new file mode 100644
index 0000000000000000000000000000000000000000..5cb38c3a0d85a76f0b1cf86313a5239cc18017ce
--- /dev/null
+++ b/Simular_flujo_de_neutrones/view.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html><html><head><meta name="google" content="notranslate"><meta http-equiv="X-UA-Compatible" content="IE=edge;"><style nonce="/o0rCvpoCLbIcm25lPeXbg">@font-face{font-family:'Roboto';font-style:italic;font-weight:400;src:url(//fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1Mu51xIIzc.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;src:url(//fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fBBc9.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:url(//fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxP.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;src:url(//fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc9.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;src:url(//fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmWUlfBBc9.ttf)format('truetype');}</style><meta name="referrer" content="origin"><title>salidasimu.shw.bz2 - Google Drive</title><meta property="og:title" content="salidasimu.shw.bz2"><meta property="og:type" content="article"><meta property="og:site_name" content="Google Docs"><meta property="og:url" content="https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view?usp=embed_facebook"><link rel="shortcut icon" href="https://ssl.gstatic.com/images/branding/product/1x/drive_2020q4_32dp.png"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans_old:300,400,500,700" nonce="/o0rCvpoCLbIcm25lPeXbg"><link rel="stylesheet" href="https://www.gstatic.com/_/apps-fileview/_/ss/k=apps-fileview.v.aov5obDueaQ.L.W.O/d=0/rs=AO0039vPki5ZRO07UBz6fdWgcpEwg0DH3Q" nonce="/o0rCvpoCLbIcm25lPeXbg"><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">_docs_flag_initialData={"docs-ails":"docs_cold","docs-fwds":"docs_sdf","docs-crs":"docs_crs_nfd","docs-shdn":0,"docs-tfh":"","info_params":{},"docos-eddmh":false,"docs-eohmo":false,"uls":"","docs-obsImUrl":"https://ssl.gstatic.com/docs/common/netcheck.gif","docs-api-keys":{},"buildLabel":"texmex_2022.03-Thu_RC01","docs-show_debug_info":false,"ondlburl":"https://docs.google.com","drive_url":"https://drive.google.com","app_url":"https://drive.google.com/file/","docs-itrf":false,"docs-gsmd":"","docs-eofc":true,"docs-eidfc":false,"docs-ecpvib":false,"docs-msid":32767,"docs-rid":1024,"docs-mif":1000,"docs-icdmt":[],"docs-mip":6250000,"docs-eicd":true,"docs-rawff":2,"docs-mib":5242880,"docs-mid":2048,"docs-sup":"/file","docs-seu":"https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/edit","docs-crp":"/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view","docs-ecvca":true,"docs-uptc":["lsrp","ca","sh","noreplica","ouid","dl","hi","hi_ext","usp","urp","utm_source","utm_medium","utm_campaign","utm_term","utm_content","aaac","sle"],"docs-doddn":"","docs-uddn":"","docs-cwsd":"","docs-epq":false,"docs-erdiiv":false,"docs-acap":["docs.security.access_capabilities",1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],"docs-eefufs":false,"docs-eccfs":false,"docs-eefufd":false,"docs-hwg":"DISABLED","docs-hwst":"","docs-ndt":"Untitled Texmex","docs-prn":"","docs-een":false,"docs-as":"","docs-etdimo":false,"docs-mdck":"","docs-etiff":false,"docs-mriim":1800000,"docs-eccbs":false,"docs-rlmp":false,"docs-mmpt":15000,"docs-erd":false,"docs-erfar":false,"docs-ensb":false,"docs-ddts":false,"docs-uootuns":false,"docs-amawso":false,"docs-ofmpp":false,"docs-anlpfdo":false,"docs-eslars":true,"docs-eem":false,"docs-phe":"https://contacts.google.com","docs-pse":"PROD","docs-eridm":false,"docs-pid":"","docs-eedmlf":false,"docs-emmda":false,"docs-efs":false,"docs-net-edsle":false,"docs-ricocpb":false,"docs-erep":false,"docs-effnp":false,"docs-cttmtbr":0,"docs-caaffso":true,"docs-eaaswoc":false,"docs-edpsf":false,"docs-edp":false,"docs-edlo":false,"docs-cttmteq":0,"docos-edces":false,"docs-dec":false,"docs-eiasrpu":false,"docs-ectt":false,"docs-ebbouf":false,"docs-pcfloc":false,"docs-dsps":false,"docs-embmd":false,"docs-esmr":false,"docs-ecgd":false,"docs-eawflb":false,"docs-iosdl":false,"docs-hft":"","docs-edsi":false,"docs-ececs":false,"enable_emoji_picker_search_bar":false,"docs-eerp":false,"docs-ercwf":false,"docs-ecurf":false,"docs-efsii":false,"docs-elcfd":false,"docs-edmitm":false,"docs-enjec":false,"ecid":true,"docs-eir":false,"server_time_ms":1643377539193,"gaia_session_id":"","app-bc":"#d1d1d1","enable_iframed_embed_api":true,"docs-fut":"https://drive.google.com#folders/{folderId}","docs-isb":false,"docs-agdc":false,"docs-anddc":true,"docs-adndldc":false,"docs-dhnap":"drive.google.com","docs-ds":"https","docs-text-efnma":false,"docs-cide":true,"docs-cn":"","docs-depquafr":false,"docs-frbanmc":false,"docs-rldce":false,"docs-dom":false,"docs-ecsup":false,"docs-edamc":false,"docs-edomic":false,"docs-eddm":false,"kix-edrat":false,"docs-edhqlfr":false,"docs-fwd":false,"docs-efpgwb":false,"docs-efu":false,"docs-eiccp":false,"docs-elds":false,"docs-eph":false,"docs-epat":true,"docs-eppd":false,"docs-essph":false,"docs-tdd":false,"docs-rsc":"","docs-rgifem":true,"docs-ssi":false,"docs-uoci":"","docs-wia":"","docs-gth":"","docs-ndsom":[],"docs-dm":"application/x-bzip2","docs-sdsom":[],"docs-po":"https://drive.google.com","docs-to":"https://drive.google.com","docs-eastd":true,"opendv":false,"onePickImportDocumentUrl":"","opmbs":5242880,"opmpd":2500,"opbu":"https://docs.google.com/picker","opru":"https://drive.google.com/relay.html","opdu":false,"opccp":false,"ophi":"texmex","opst":"","opuci":"","docs-eopiiv2":true,"projector_base_url":"//drive.google.com","docs-drk":[],"docs-erkpp":false,"docs-erkfsu":true,"jobset":"prod","docs-eqam":false,"docs-ehlib":false,"docs-euaool":false,"docs-eua":false,"docs-ebfgf":false,"docs-ehib":false,"docs-uahnt":"","docs-esap":false,"docs-efib":false,"docs-eidib":false,"docs-se":false,"docs-egf":false,"docs-uptuf":true,"docs-eodpb":true,"docs-odpl":false,"docs-surfb":false,"docs-odpdu":[null,null,null,"//drive.google.com/odp/dialog"],"docs-odpu":[null,null,null,"//drive.google.com/odp/embed"],"docs-dafjera":false,"docs-daflia":false,"docs-dafwsa":false,"docs-dafgfma":false,"docs-fta-fnrhci":false,"docs-spdy":false,"xdbcfAllowHostNamePrefix":true,"xdbcfAllowXpc":true,"docs-dbctc":false,"docs-iror":true,"docs-eirj":false,"promo_url":"","promo_second_url":"","promo_title":"","promo_title_prefix":"","promo_content_html":"","promo_more_element_text":"","promo_second_more_element_text":"","promo_element_id":"","promo_orientation":1,"promo_arrow_alignment":0,"promo_show_on_click":false,"promo_hide_arrow":false,"promo_show_on_load":false,"promo_mark_dismissed_on_show":false,"promo_use_material_styling":false,"promo_close_button_text":"","promo_icon_url":"","promo_action_id":"","promo_impression_id":0,"promo_is_contextual":false,"docs-ccwt":80,"docs-epcc":false,"docs-era":true,"docs-msoil":"docs_spanner","docs-gsoil":"docs_gsabs","docs-fsd":false}; _docs_flag_cek= null ; if (window['DOCS_timing']) {DOCS_timing['ifdld']=new Date().getTime();}</script><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">window.viewerData = {config: {'id': '16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt', 'title': 'salidasimu.shw.bz2', 'isItemTrashed':  false , 'documentResourceKey': '','enableEmbedDialog': true,'projectorFeedbackId': '99950', 'projectorFeedbackBucket': 'viewer-web',}, configJson: ["",null,null,null,null,1,null,null,null,1,1,[1,null,null,"AIzaSyDVQw45DwoYh632gvsP5vPDqEKvb-Ywnb8",0,null,1,null,null,"AIzaSyC1eQ1xj69IdTMeii5r7brs3R90eck-m7k",null,"/drive/v2beta",0,0,1,[0],null,1,null,0,1,1],null,5,1,null,null,1,"https://drive.google.com",null,null,1,null,1,null,null,null,null,null,1,null,null,[[null,"0"],6,1,1,null,null,null,1],null,1,null,null,[null,null,null,null,"https://accounts.google.com/ServiceLogin?service\u003dwise\u0026passive\u003d1209600\u0026continue\u003dhttps://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view\u0026hl\u003des_419\u0026followup\u003dhttps://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view",null,null,null,1],null,null,1,null,null,"https://docs.google.com",null,1,[null,0],["https://youtube.googleapis.com",null,2],1,null,null,null,1,null,1,1,null,null,null,null,[1,1,1,1],null,1,null,3,null,null,null,null,1,["AIzaSyCMp6sr4oTC18AWkE2Ii4UBZHTHEpGZWZM","https://blobcomments-pa.clients6.google.com",null,1,1,1,null,null,null,null,"ANONYMOUS_17612595759507348808"],null,1,null,null,0,null,null,1,null,null,null,[1,1,1],null,null,1,1,[null,null,"https://clients6.google.com","AIzaSyD_InbmSFufIEps5UAt2NmB_3LvBH3Sz_8","https://people-pa.googleapis.com",null,null,1,1,1,1],null,1,null,null,null,null,[0,0],null,null,null,null,0,null,0,1,null,null,null,null,null,null,[0,"","","",""],1,[null,null,0,0,0,0,1],null,1,[[null,null,null,"//drive.google.com/odp/embed"],null,"","AIzaSyCIGHYEdm91p31HKyJSoU4at7IqhCViXuA",1,null,[null,null,null,"//drive.google.com/odp/dialog"]],[1],null,null,null,null,1,"https://workspace.google.com",null,null,1,1,1,1,1,null,1,["AIzaSyCMp6sr4oTC18AWkE2Ii4UBZHTHEpGZWZM","https://drivemetadata.clients6.google.com"],0,0,0], itemJson: [null,"salidasimu.shw.bz2",null,null,null,null,null,null,null,"https://drive.google.com/viewer2/prod-01/meta?ck\u003ddrive\u0026ds\u003dAPznzab6l-ZevSLJraLBrJ0Mvjvh5Yqzy0EubwMqDTYJgoMMvwwiILTkyNkhlDk22dvkgNGouBLKJUSt8D5kavqQhZ1OL5fNdZwlHAVXelerTjbQY-CPowsBNQc_AOYEx0pOV_MOVjmmXsuEPsubs-BF5Hd5dPdAkXAU14m2X6aFhjLSvNgPZiVIddPBaybWc4ANbgWY_02wvBd5BdUsPqxBZkkXZahNwzTJ-DI0z5jVPx2umZQJtM8pPfZZLLfbSjVQy9LhN3No7l5XmDL9sUFhvxY0hkTRVtm0Xe10pXI9QiofPKEEfiEulzlxguYAoIUxxVUo4sdM-c8uq36A9Wh3n_38fQkET-vR71yhCTRLwi44eNB9M9C-5pgXP29m3UMHQD4ZrzLx",null,"application/x-bzip2",null,null,6,null,"https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view",null,"https://drive.google.com/uc?id\u003d16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt\u0026export\u003ddownload",null,5,0,null,null,null,[null,null,"96124865"],null,null,null,null,null,0,"bz2",null,[["0B2Tl2quxl64SaFBTcFFUSFlXTys1bllrc004NUU0VWs0WjlRPQ"],[],["16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt"]],null,null,null,null,null,null,0,null,0]};</script><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">;this.gbar_={CONFIG:[[[0,"www.gstatic.com","og.qtm.en_US.jwekfjYLLn8.O","com.co","es-419","25",0,[4,2,"","","","423702901","0"],null,"g_PzYZXIDuOH_QbckZrIAQ",null,0,"og.qtm.8Apkshs-cBE.L.X.O","AA2YrTszg452UcK7ZldyRIlElPI7lXM0HQ","AA2YrTvZprRJNqGpqZVhXX4F8OlnvU9h6w","",2,1,200,"COL",null,null,"25","25",1],null,[1,0.1000000014901161,2,1],[1,0.001000000047497451,1],[0,0,0,null,"","","",""],[0,0,"",1,0,0,0,0,0,0,null,0,0,null,0,0,null,null,0,0,0,"","","","","","",null,0,0,0,0,0,null,null,null,"rgba(32,33,36,1)","rgba(255,255,255,1)",0,0,1,null,null,1,0,0],null,null,["1","gci_91f30755d6a6b787dcc2a4062e6e9824.js","googleapis.client:gapi.iframes","","es-419"],null,null,null,null,["m;/_/scs/abc-static/_/js/k=gapi.gapi.en.fQLVS3SAB_U.O/d=1/rs=AHpOoo9-gtqpJORJvBFDdao_eAhWe8xjHw/m=__features__","https://apis.google.com","","","","",null,1,"es_plusone_gc_20220110.0_p0","es-419",null,0],[0.009999999776482582,"com.co","25",[null,"","0",null,1,5184000,null,null,"",null,null,null,null,null,0,null,0,0,1,0,0,0,null,null,0,0,null,0,0,0,0],null,null,null,0,null,null,["5061451","google\\.(com|ru|ca|by|kz|com\\.mx|com\\.tr)$",1]],[1,1,null,27043,25,"COL","es-419","423702901.0",8,0.009999999776482582,0,0,null,null,null,null,"3700949",null,null,null,"g_PzYZXIDuOH_QbckZrIAQ",0,0],[[null,null,null,"https://www.gstatic.com/og/_/js/k=og.qtm.en_US.jwekfjYLLn8.O/rt=j/m=qabr,q_dnp,qapid/exm=qaaw,qadd,qaid,qein,qhaw,qhbr,qhch,qhga,qhid,qhin,qhpr/d=1/ed=1/rs=AA2YrTszg452UcK7ZldyRIlElPI7lXM0HQ"]]]],};this.gbar_=this.gbar_||{};(function(_){var window=this;
+try{
+var ka,ua,Aa,Ba,Ga,Ha,Ia,Ja,Ka,La,Na,Oa,Sa,Ta;_.aa=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,_.aa);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))};_.ba=function(){var a=_.n.navigator;return a&&(a=a.userAgent)?a:""};_.q=function(a){return-1!=_.ba().indexOf(a)};_.ca=function(){return _.q("Opera")};_.da=function(){return _.q("Trident")||_.q("MSIE")};_.ea=function(){return _.q("Firefox")||_.q("FxiOS")};
+_.ia=function(){return _.q("Safari")&&!(_.fa()||_.q("Coast")||_.ca()||_.q("Edge")||_.q("Edg/")||_.q("OPR")||_.ea()||_.q("Silk")||_.q("Android"))};_.fa=function(){return(_.q("Chrome")||_.q("CriOS"))&&!_.q("Edge")||_.q("Silk")};_.ja=function(){return _.q("Android")&&!(_.fa()||_.ea()||_.ca()||_.q("Silk"))};ka=function(){return _.q("iPhone")&&!_.q("iPod")&&!_.q("iPad")};_.la=function(){return ka()||_.q("iPad")||_.q("iPod")};_.na=function(a,b){return 0<=(0,_.ma)(a,b)};
+_.oa=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};_.pa=function(){return-1!=_.ba().toLowerCase().indexOf("webkit")&&!_.q("Edge")};_.ra=function(a){return _.qa&&null!=a&&a instanceof Uint8Array};_.ta=function(a){Object.isFrozen(a)||(sa?a[sa]|=1:void 0!==a.Qd?a.Qd|=1:Object.defineProperties(a,{Qd:{value:1,configurable:!0,writable:!0,enumerable:!1}}));return a};ua=function(a){return null!==a&&"object"===typeof a&&!Array.isArray(a)&&a.constructor===Object};
+_.ya=function(a){switch(typeof a){case "number":return isFinite(a)?a:String(a);case "object":if(a&&!Array.isArray(a)){if(_.ra(a))return _.va(a);if("function"==typeof _.wa&&a instanceof _.wa)return a.o()}}return a};Aa=function(a,b){if(null!=a){if(Array.isArray(a))a=_.za(a,b);else if(ua(a)){var c={},d;for(d in a)c[d]=Aa(a[d],b);a=c}else a=b(a);return a}};
+_.za=function(a,b){for(var c=a.slice(),d=0;d<c.length;d++)c[d]=Aa(c[d],b);if(b=Array.isArray(a)){var e;sa?e=a[sa]:e=a.Qd;b=(null==e?0:e)&1}b&&_.ta(c);return c};Ba=function(a){if(a&&"object"==typeof a&&a.toJSON)return a.toJSON();a=_.ya(a);return Array.isArray(a)?_.za(a,Ba):a};_.r=function(a,b){return null!=a?!!a:!!b};_.t=function(a,b){void 0==b&&(b="");return null!=a?a:b};_.Ca=function(a,b){void 0==b&&(b=0);return null!=a?a:b};_.Da=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};
+_.Fa=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<Ea.length;f++)c=Ea[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};Ga=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};Ha="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
+Ia=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("a");};Ja=Ia(this);Ka=function(a,b){if(b)a:{var c=Ja;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&Ha(c,a,{configurable:!0,writable:!0,value:b})}};
+Ka("Symbol",function(a){if(a)return a;var b=function(f,g){this.j=f;Ha(this,"description",{configurable:!0,writable:!0,value:g})};b.prototype.toString=function(){return this.j};var c="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",d=0,e=function(f){if(this instanceof e)throw new TypeError("b");return new b(c+(f||"")+"_"+d++,f)};return e});
+Ka("Symbol.iterator",function(a){if(a)return a;a=Symbol("c");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=Ja[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&Ha(d.prototype,a,{configurable:!0,writable:!0,value:function(){return La(Ga(this))}})}return a});La=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};
+_.Ma=function(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):{next:Ga(a)}};Na="function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b};if("function"==typeof Object.setPrototypeOf)Oa=Object.setPrototypeOf;else{var Pa;a:{var Qa={a:!0},Ra={};try{Ra.__proto__=Qa;Pa=Ra.a;break a}catch(a){}Pa=!1}Oa=Pa?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError("d`"+a);return a}:null}Sa=Oa;
+_.u=function(a,b){a.prototype=Na(b.prototype);a.prototype.constructor=a;if(Sa)Sa(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.X=b.prototype};Ta=function(a,b,c){if(null==a)throw new TypeError("e`"+c);if(b instanceof RegExp)throw new TypeError("f`"+c);return a+""};
+Ka("String.prototype.startsWith",function(a){return a?a:function(b,c){var d=Ta(this,b,"startsWith"),e=d.length,f=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var g=0;g<f&&c<e;)if(d[c++]!=b[g++])return!1;return g>=f}});Ka("Array.prototype.find",function(a){return a?a:function(b,c){a:{var d=this;d instanceof String&&(d=String(d));for(var e=d.length,f=0;f<e;f++){var g=d[f];if(b.call(c,g,f,d)){b=g;break a}}b=void 0}return b}});var Ua=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};
+Ka("WeakMap",function(a){function b(){}function c(l){var m=typeof l;return"object"===m&&null!==l||"function"===m}function d(l){if(!Ua(l,f)){var m=new b;Ha(l,f,{value:m})}}function e(l){var m=Object[l];m&&(Object[l]=function(p){if(p instanceof b)return p;Object.isExtensible(p)&&d(p);return m(p)})}if(function(){if(!a||!Object.seal)return!1;try{var l=Object.seal({}),m=Object.seal({}),p=new a([[l,2],[m,3]]);if(2!=p.get(l)||3!=p.get(m))return!1;p.delete(l);p.set(m,4);return!p.has(l)&&4==p.get(m)}catch(v){return!1}}())return a;
+var f="$jscomp_hidden_"+Math.random();e("freeze");e("preventExtensions");e("seal");var g=0,k=function(l){this.j=(g+=Math.random()+1).toString();if(l){l=_.Ma(l);for(var m;!(m=l.next()).done;)m=m.value,this.set(m[0],m[1])}};k.prototype.set=function(l,m){if(!c(l))throw Error("g");d(l);if(!Ua(l,f))throw Error("h`"+l);l[f][this.j]=m;return this};k.prototype.get=function(l){return c(l)&&Ua(l,f)?l[f][this.j]:void 0};k.prototype.has=function(l){return c(l)&&Ua(l,f)&&Ua(l[f],this.j)};k.prototype.delete=function(l){return c(l)&&
+Ua(l,f)&&Ua(l[f],this.j)?delete l[f][this.j]:!1};return k});
+Ka("Map",function(a){if(function(){if(!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var k=Object.seal({x:4}),l=new a(_.Ma([[k,"s"]]));if("s"!=l.get(k)||1!=l.size||l.get({x:4})||l.set({x:4},"t")!=l||2!=l.size)return!1;var m=l.entries(),p=m.next();if(p.done||p.value[0]!=k||"s"!=p.value[1])return!1;p=m.next();return p.done||4!=p.value[0].x||"t"!=p.value[1]||!m.next().done?!1:!0}catch(v){return!1}}())return a;var b=new WeakMap,c=function(k){this.o={};this.j=
+f();this.size=0;if(k){k=_.Ma(k);for(var l;!(l=k.next()).done;)l=l.value,this.set(l[0],l[1])}};c.prototype.set=function(k,l){k=0===k?0:k;var m=d(this,k);m.list||(m.list=this.o[m.id]=[]);m.Qa?m.Qa.value=l:(m.Qa={next:this.j,Vb:this.j.Vb,head:this.j,key:k,value:l},m.list.push(m.Qa),this.j.Vb.next=m.Qa,this.j.Vb=m.Qa,this.size++);return this};c.prototype.delete=function(k){k=d(this,k);return k.Qa&&k.list?(k.list.splice(k.index,1),k.list.length||delete this.o[k.id],k.Qa.Vb.next=k.Qa.next,k.Qa.next.Vb=
+k.Qa.Vb,k.Qa.head=null,this.size--,!0):!1};c.prototype.clear=function(){this.o={};this.j=this.j.Vb=f();this.size=0};c.prototype.has=function(k){return!!d(this,k).Qa};c.prototype.get=function(k){return(k=d(this,k).Qa)&&k.value};c.prototype.entries=function(){return e(this,function(k){return[k.key,k.value]})};c.prototype.keys=function(){return e(this,function(k){return k.key})};c.prototype.values=function(){return e(this,function(k){return k.value})};c.prototype.forEach=function(k,l){for(var m=this.entries(),
+p;!(p=m.next()).done;)p=p.value,k.call(l,p[1],p[0],this)};c.prototype[Symbol.iterator]=c.prototype.entries;var d=function(k,l){var m=l&&typeof l;"object"==m||"function"==m?b.has(l)?m=b.get(l):(m=""+ ++g,b.set(l,m)):m="p_"+l;var p=k.o[m];if(p&&Ua(k.o,m))for(k=0;k<p.length;k++){var v=p[k];if(l!==l&&v.key!==v.key||l===v.key)return{id:m,list:p,index:k,Qa:v}}return{id:m,list:p,index:-1,Qa:void 0}},e=function(k,l){var m=k.j;return La(function(){if(m){for(;m.head!=k.j;)m=m.Vb;for(;m.next!=m.head;)return m=
+m.next,{done:!1,value:l(m)};m=null}return{done:!0,value:void 0}})},f=function(){var k={};return k.Vb=k.next=k.head=k},g=0;return c});var Va=function(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var f=c++;return{value:b(f,a[f]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e};Ka("Array.prototype.entries",function(a){return a?a:function(){return Va(this,function(b,c){return[b,c]})}});
+Ka("Array.prototype.keys",function(a){return a?a:function(){return Va(this,function(b){return b})}});Ka("Number.MAX_SAFE_INTEGER",function(){return 9007199254740991});var Wa="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Ua(d,e)&&(a[e]=d[e])}return a};Ka("Object.assign",function(a){return a||Wa});Ka("Array.prototype.values",function(a){return a?a:function(){return Va(this,function(b,c){return c})}});
+Ka("Array.from",function(a){return a?a:function(b,c,d){c=null!=c?c:function(k){return k};var e=[],f="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];if("function"==typeof f){b=f.call(b);for(var g=0;!(f=b.next()).done;)e.push(c.call(d,f.value,g++))}else for(f=b.length,g=0;g<f;g++)e.push(c.call(d,b[g],g));return e}});Ka("Object.is",function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});
+Ka("Array.prototype.includes",function(a){return a?a:function(b,c){var d=this;d instanceof String&&(d=String(d));var e=d.length;c=c||0;for(0>c&&(c=Math.max(c+e,0));c<e;c++){var f=d[c];if(f===b||Object.is(f,b))return!0}return!1}});Ka("String.prototype.includes",function(a){return a?a:function(b,c){return-1!==Ta(this,b,"includes").indexOf(b,c||0)}});Ka("Object.entries",function(a){return a?a:function(b){var c=[],d;for(d in b)Ua(b,d)&&c.push([d,b[d]]);return c}});
+Ka("Array.prototype.fill",function(a){return a?a:function(b,c,d){var e=this.length||0;0>c&&(c=Math.max(0,e+c));if(null==d||d>e)d=e;d=Number(d);0>d&&(d=Math.max(0,e+d));for(c=Number(c||0);c<d;c++)this[c]=b;return this}});var Xa=function(a){return a?a:Array.prototype.fill};Ka("Int8Array.prototype.fill",Xa);Ka("Uint8Array.prototype.fill",Xa);Ka("Uint8ClampedArray.prototype.fill",Xa);Ka("Int16Array.prototype.fill",Xa);Ka("Uint16Array.prototype.fill",Xa);Ka("Int32Array.prototype.fill",Xa);
+Ka("Uint32Array.prototype.fill",Xa);Ka("Float32Array.prototype.fill",Xa);Ka("Float64Array.prototype.fill",Xa);
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+var ab,bb,db,eb,fb;_.Ya=_.Ya||{};_.n=this||self;_.Za=function(){};_.$a=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};_.cb=function(a){return Object.prototype.hasOwnProperty.call(a,ab)&&a[ab]||(a[ab]=++bb)};ab="closure_uid_"+(1E9*Math.random()>>>0);bb=0;db=function(a,b,c){return a.call.apply(a.bind,arguments)};
+eb=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};_.w=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?_.w=db:_.w=eb;return _.w.apply(null,arguments)};
+_.y=function(a,b){a=a.split(".");var c=_.n;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b};_.z=function(a,b){function c(){}c.prototype=b.prototype;a.X=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.wk=function(d,e,f){for(var g=Array(arguments.length-2),k=2;k<arguments.length;k++)g[k-2]=arguments[k];return b.prototype[e].apply(d,g)}};fb=function(a){return a};
+_.gb=function(a){var b=null,c=_.n.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:fb,createScript:fb,createScriptURL:fb})}catch(d){_.n.console&&_.n.console.error(d.message)}return b};
+_.z(_.aa,Error);_.aa.prototype.name="CustomError";
+_.hb="undefined"!==typeof TextDecoder;_.ib="undefined"!==typeof TextEncoder;
+_.jb=function(a,b){return 0==a.lastIndexOf(b,0)};_.kb=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
+_.ma=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};_.lb=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};
+_.mb=Array.prototype.filter?function(a,b,c){return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g="string"===typeof a?a.split(""):a,k=0;k<d;k++)if(k in g){var l=g[k];b.call(c,l,k,a)&&(e[f++]=l)}return e};_.nb=Array.prototype.map?function(a,b,c){return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
+_.ob=Array.prototype.reduce?function(a,b,c){return Array.prototype.reduce.call(a,b,c)}:function(a,b,c){var d=c;(0,_.lb)(a,function(e,f){d=b.call(void 0,d,e,f,a)});return d};_.pb=Array.prototype.some?function(a,b){return Array.prototype.some.call(a,b,void 0)}:function(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a))return!0;return!1};
+_.qb=function(a){_.qb[" "](a);return a};_.qb[" "]=_.Za;
+var Eb,Fb,Lb;_.rb=_.ca();_.B=_.da();_.sb=_.q("Edge");_.tb=_.sb||_.B;_.ub=_.q("Gecko")&&!_.pa()&&!(_.q("Trident")||_.q("MSIE"))&&!_.q("Edge");_.vb=_.pa();_.wb=_.q("Macintosh");_.xb=_.q("Windows");_.yb=_.q("Linux")||_.q("CrOS");_.zb=_.q("Android");_.Ab=ka();_.Bb=_.q("iPad");_.Cb=_.q("iPod");_.Db=_.la();Eb=function(){var a=_.n.document;return a?a.documentMode:void 0};
+a:{var Hb="",Ib=function(){var a=_.ba();if(_.ub)return/rv:([^\);]+)(\)|;)/.exec(a);if(_.sb)return/Edge\/([\d\.]+)/.exec(a);if(_.B)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(_.vb)return/WebKit\/(\S+)/.exec(a);if(_.rb)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Ib&&(Hb=Ib?Ib[1]:"");if(_.B){var Jb=Eb();if(null!=Jb&&Jb>parseFloat(Hb)){Fb=String(Jb);break a}}Fb=Hb}_.Kb=Fb;if(_.n.document&&_.B){var Mb=Eb();Lb=Mb?Mb:parseInt(_.Kb,10)||void 0}else Lb=void 0;_.Nb=Lb;
+_.Ob=_.ea();_.Pb=ka()||_.q("iPod");_.Qb=_.q("iPad");_.Rb=_.ja();_.Sb=_.fa();_.Tb=_.ia()&&!_.la();
+var Ub;Ub={};_.Vb=null;_.va=function(a){var b;void 0===b&&(b=0);_.Wb();b=Ub[b];for(var c=Array(Math.floor(a.length/3)),d=b[64]||"",e=0,f=0;e<a.length-2;e+=3){var g=a[e],k=a[e+1],l=a[e+2],m=b[g>>2];g=b[(g&3)<<4|k>>4];k=b[(k&15)<<2|l>>6];l=b[l&63];c[f++]=m+g+k+l}m=0;l=d;switch(a.length-e){case 2:m=a[e+1],l=b[(m&15)<<2]||d;case 1:a=a[e],c[f]=b[a>>2]+b[(a&3)<<4|m>>4]+l+d}return c.join("")};
+_.Wb=function(){if(!_.Vb){_.Vb={};for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),b=["+/=","+/","-_=","-_.","-_"],c=0;5>c;c++){var d=a.concat(b[c].split(""));Ub[c]=d;for(var e=0;e<d.length;e++){var f=d[e];void 0===_.Vb[f]&&(_.Vb[f]=e)}}}};
+_.qa="function"===typeof Uint8Array;
+_.Xb="function"===typeof Uint8Array.prototype.slice;
+var sa="function"===typeof Symbol&&"symbol"===typeof Symbol()?Symbol(void 0):void 0;
+_.C=function(a,b,c){var d=_.Zb;_.Zb=null;a||(a=d);d=this.constructor.$b;a||(a=d?[d]:[]);this.A=(d?0:-1)-(this.constructor.Bk||0);this.j=void 0;this.Sa=a;a:{d=this.Sa.length;a=d-1;if(d&&(d=this.Sa[a],ua(d))){this.B=a-this.A;this.o=d;break a}void 0!==b&&-1<b?(this.B=Math.max(b,a+1-this.A),this.o=void 0):this.B=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)if(a=c[b],a<this.B)a+=this.A,(d=this.Sa[a])?Array.isArray(d)&&_.ta(d):this.Sa[a]=_.$b;else{d=this.o||(this.o=this.Sa[this.B+this.A]={});var e=d[a];
+e?Array.isArray(e)&&_.ta(e):d[a]=_.$b}};_.$b=Object.freeze(_.ta([]));_.D=function(a,b,c){return-1===b?null:b>=a.B?a.o?a.o[b]:void 0:(void 0===c?0:c)&&a.o&&(c=a.o[b],null!=c)?c:a.Sa[b+a.A]};_.ac=function(a,b){return null!=_.D(a,b)};_.E=function(a,b){a=_.D(a,b);return null==a?a:!!a};_.bc=function(a,b,c){a=_.D(a,b);return null==a?c:a};_.cc=function(a,b,c){a=_.D(a,b);a=null==a?a:+a;return null==a?void 0===c?0:c:a};
+_.F=function(a,b,c,d){b<a.B&&(void 0===d||!d)?a.Sa[b+a.A]=c:(a.o||(a.o=a.Sa[a.B+a.A]={}))[b]=c;return a};_.G=function(a,b,c,d,e){if(-1===c)return null;a.j||(a.j={});var f=a.j[c];if(f)return f;e=_.D(a,c,void 0===e?!1:e);if(null==e&&!d)return f;b=new b(e);return a.j[c]=b};_.dc=function(a,b,c){var d;a.j||(a.j={});var e=c?c.Sa:c;a.j[b]=c;return _.F(a,b,e,void 0===d?!1:d)};_.C.prototype.toJSON=function(){var a=this.Sa;return _.Yb?a:_.za(a,Ba)};_.C.prototype.toString=function(){return this.Sa.toString()};
+_.ec=function(a,b,c){return _.bc(a,b,void 0===c?0:c)};
+_.fc=Symbol();_.gc=Symbol();_.hc=Symbol();_.ic=Symbol();
+var jc=function(a){_.C.call(this,a)};_.u(jc,_.C);
+_.kc=function(a){_.C.call(this,a)};_.u(_.kc,_.C);_.kc.prototype.Kc=function(a){return _.F(this,3,a)};
+var lc=function(a){_.C.call(this,a)};_.u(lc,_.C);
+_.mc=function(a){_.C.call(this,a)};_.u(_.mc,_.C);_.mc.prototype.Xe=function(a){return _.F(this,24,a)};
+_.nc=function(a){_.C.call(this,a)};_.u(_.nc,_.C);
+_.H=function(){this.Kb=this.Kb;this.Oa=this.Oa};_.H.prototype.Kb=!1;_.H.prototype.isDisposed=function(){return this.Kb};_.H.prototype.oa=function(){this.Kb||(this.Kb=!0,this.R())};_.H.prototype.R=function(){if(this.Oa)for(;this.Oa.length;)this.Oa.shift()()};
+var oc=function(a){_.H.call(this);this.A=a;this.j=[];this.o={}};_.u(oc,_.H);oc.prototype.resolve=function(a){var b=this.A;a=a.split(".");for(var c=a.length,d=0;d<c;++d)if(b[a[d]])b=b[a[d]];else return null;return b instanceof Function?b:null};oc.prototype.hd=function(){for(var a=this.j.length,b=this.j,c=[],d=0;d<a;++d){var e=b[d].j(),f=this.resolve(e);if(f&&f!=this.o[e])try{b[d].hd(f)}catch(g){}else c.push(b[d])}this.j=c.concat(b.slice(a))};
+var pc=function(a){_.H.call(this);this.A=a;this.C=this.j=null;this.B=0;this.F={};this.o=!1;a=window.navigator.userAgent;0<=a.indexOf("MSIE")&&0<=a.indexOf("Trident")&&(a=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a))&&a[1]&&9>parseFloat(a[1])&&(this.o=!0)};_.u(pc,_.H);pc.prototype.D=function(a,b){this.j=b;this.C=a;b.preventDefault?b.preventDefault():b.returnValue=!1};
+_.qc=function(a){_.C.call(this,a)};_.u(_.qc,_.C);
+_.rc=function(a){_.C.call(this,a)};_.u(_.rc,_.C);
+_.sc=function(){this.data={}};_.sc.prototype.o=function(){window.console&&window.console.log&&window.console.log("Log data: ",this.data)};_.sc.prototype.j=function(a){var b=[],c;for(c in this.data)b.push(encodeURIComponent(c)+"="+encodeURIComponent(String(this.data[c])));return("atyp=i&zx="+(new Date).getTime()+"&"+b.join("&")).substr(0,a)};
+var tc=function(a,b){this.data={};var c=_.G(a,lc,8)||new lc;window.google&&window.google.kEI&&(this.data.ei=window.google.kEI);this.data.sei=_.t(_.D(a,10));this.data.ogf=_.t(_.D(c,3));this.data.ogrp=(window.google&&window.google.sn?!/.*hp$/.test(window.google.sn):_.r(_.E(a,7)))?"1":"";this.data.ogv=_.t(_.D(c,6))+"."+_.t(_.D(c,7));this.data.ogd=_.t(_.D(a,21));this.data.ogc=_.t(_.D(a,20));this.data.ogl=_.t(_.D(a,5));b&&(this.data.oggv=b)};_.u(tc,_.sc);
+var Ea="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
+_.uc=function(a,b,c,d,e){tc.call(this,a,b);_.Fa(this.data,{jexpid:_.t(_.D(a,9)),srcpg:"prop="+_.t(_.D(a,6)),jsr:Math.round(1/d),emsg:c.name+":"+c.message});if(e){e._sn&&(e._sn="og."+e._sn);for(var f in e)this.data[encodeURIComponent(f)]=e[f]}};_.u(_.uc,tc);
+var vc,wc=function(){void 0===vc&&(vc=_.gb("ogb-qtm#html"));return vc};
+var xc;_.yc=function(a,b){this.j=b===xc?a:""};_.h=_.yc.prototype;_.h.Nb=!0;_.h.lb=function(){return this.j.toString()};_.h.Be=!0;_.h.qc=function(){return 1};_.h.toString=function(){return this.j+""};_.Ac=function(a){return _.zc(a).toString()};_.zc=function(a){return a instanceof _.yc&&a.constructor===_.yc?a.j:"type_error:TrustedResourceUrl"};xc={};_.Bc=function(a){var b=wc();a=b?b.createScriptURL(a):a;return new _.yc(a,xc)};
+var Fc,Gc,Hc,Cc;_.Dc=function(a,b){this.j=b===Cc?a:""};_.h=_.Dc.prototype;_.h.Nb=!0;_.h.lb=function(){return this.j.toString()};_.h.Be=!0;_.h.qc=function(){return 1};_.h.toString=function(){return this.j.toString()};_.Ec=function(a){return a instanceof _.Dc&&a.constructor===_.Dc?a.j:"type_error:SafeUrl"};
+Fc=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\w+=(?:\\w+|"[\\w;,= ]+"))*$',"i");Gc=/^data:(.*);base64,[a-z0-9+\/]+=*$/i;Hc=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;
+_.Jc=function(a){if(a instanceof _.Dc)return a;a="object"==typeof a&&a.Nb?a.lb():String(a);if(Hc.test(a))a=_.Ic(a);else{a=String(a);a=a.replace(/(%0A|%0D)/g,"");var b=a.match(Gc);a=b&&Fc.test(b[1])?_.Ic(a):null}return a};_.Kc=function(a){if(a instanceof _.Dc)return a;a="object"==typeof a&&a.Nb?a.lb():String(a);Hc.test(a)||(a="about:invalid#zClosurez");return _.Ic(a)};Cc={};_.Ic=function(a){return new _.Dc(a,Cc)};_.Lc=_.Ic("about:invalid#zClosurez");
+_.Mc={};_.Nc=function(a,b){this.j=b===_.Mc?a:"";this.Nb=!0};_.Nc.prototype.lb=function(){return this.j};_.Nc.prototype.toString=function(){return this.j.toString()};_.Oc=new _.Nc("",_.Mc);_.Pc=RegExp("^[-,.\"'%_!#/ a-zA-Z0-9\\[\\]]+$");_.Qc=RegExp("\\b(url\\([ \t\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \t\n]*\\))","g");
+_.Rc=RegExp("\\b(calc|cubic-bezier|fit-content|hsl|hsla|linear-gradient|matrix|minmax|repeat|rgb|rgba|(rotate|scale|translate)(X|Y|Z|3d)?|var)\\([-+*/0-9a-zA-Z.%#\\[\\], ]+\\)","g");
+var Sc;Sc={};_.Tc=function(a,b,c){this.j=c===Sc?a:"";this.o=b;this.Nb=this.Be=!0};_.Tc.prototype.qc=function(){return this.o};_.Tc.prototype.lb=function(){return this.j.toString()};_.Tc.prototype.toString=function(){return this.j.toString()};_.Uc=function(a){return a instanceof _.Tc&&a.constructor===_.Tc?a.j:"type_error:SafeHtml"};_.Vc=function(a,b){var c=wc();a=c?c.createHTML(a):a;return new _.Tc(a,b,Sc)};_.Wc=new _.Tc(_.n.trustedTypes&&_.n.trustedTypes.emptyHTML||"",0,Sc);_.Xc=_.Vc("<br>",0);
+var Zc;_.Yc=function(a){var b=!1,c;return function(){b||(c=a(),b=!0);return c}}(function(){var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);b=a.firstChild.firstChild;a.innerHTML=_.Uc(_.Wc);return!b.parentElement});Zc=/^[\w+/_-]+[=]{0,2}$/;
+_.$c=function(a){a=(a||_.n).document;return a.querySelector?(a=a.querySelector('style[nonce],link[rel="stylesheet"][nonce]'))&&(a=a.nonce||a.getAttribute("nonce"))&&Zc.test(a)?a:"":""};
+_.ad=RegExp("^\\s{3,4}at(?: (?:(.*?)\\.)?((?:new )?(?:[a-zA-Z_$][\\w$]*|<anonymous>))(?: \\[as ([a-zA-Z_$][\\w$]*)\\])?)? (?:\\(unknown source\\)|\\(native\\)|\\((?:eval at )?((?:http|https|file)://[^\\s)]+|javascript:.*)\\)|((?:http|https|file)://[^\\s)]+|javascript:.*))$");_.bd=RegExp("^(?:(.*?)\\.)?([a-zA-Z_$][\\w$]*(?:/.?<)?)?(\\(.*\\))?@(?::0|((?:http|https|file)://[^\\s)]+|javascript:.*))$");
+var cd,fd,ed;_.dd=function(a){var b=window.google&&window.google.logUrl?"":"https://www.google.com";b+="/gen_204?use_corp=on&";b+=a.j(2040-b.length);cd(_.Jc(b)||_.Lc)};cd=function(a){var b=new Image,c=ed;b.onerror=b.onload=b.onabort=function(){c in fd&&delete fd[c]};fd[ed++]=b;b.src=_.Ec(a)};fd=[];ed=0;
+_.gd=function(a){_.C.call(this,a)};_.u(_.gd,_.C);
+_.hd=function(a){var b="vc";if(a.vc&&a.hasOwnProperty(b))return a.vc;b=new a;return a.vc=b};
+_.id=function(){this.j={};this.o={}};_.kd=function(a,b){var c=_.id.j();if(a in c.j){if(c.j[a]!=b)throw new jd(a);}else{c.j[a]=b;if(b=c.o[a])for(var d=0,e=b.length;d<e;d++)b[d].j(c.j,a);delete c.o[a]}};_.md=function(a,b){if(b in a.j)return a.j[b];throw new ld(b);};_.id.j=function(){return _.hd(_.id)};var nd=function(){_.aa.call(this)};_.u(nd,_.aa);var jd=function(){_.aa.call(this)};_.u(jd,nd);var ld=function(){_.aa.call(this)};_.u(ld,nd);
+var qd=function(){var a=od;this.C=pd;this.o=_.Ca(_.cc(a,2,.001),.001);this.F=_.r(_.E(a,1))&&Math.random()<this.o;this.D=_.Ca(_.ec(a,3,1),1);this.B=0;this.j=this.A=null};qd.prototype.log=function(a,b){if(this.j){var c=new jc;_.F(c,1,a.message);_.F(c,2,a.stack);_.F(c,3,a.lineNumber);_.F(c,5,1);var d=new _.kc;_.dc(d,40,c);this.j.log(98,d)}try{if(this.F&&this.B<this.D){try{var e=(this.A||_.md(_.id.j(),"lm")).B(a,b)}catch(f){e=new _.uc(this.C,"quantum:gapiBuildLabel",a,this.o,b)}_.dd(e);this.B++}}catch(f){}};
+var rd=[1,2,3,4,5,6,9,10,11,13,14,28,29,30,34,35,37,38,39,40,42,43,48,49,50,51,52,53,62,500],ud=function(a,b,c,d,e,f){tc.call(this,a,b);_.Fa(this.data,{oge:d,ogex:_.t(_.D(a,9)),ogp:_.t(_.D(a,6)),ogsr:Math.round(1/(sd(d)?_.Ca(_.cc(c,3,1)):_.Ca(_.cc(c,2,1E-4)))),ogus:e});if(f){"ogw"in f&&(this.data.ogw=f.ogw,delete f.ogw);"ved"in f&&(this.data.ved=f.ved,delete f.ved);a=[];for(var g in f)0!=a.length&&a.push(","),a.push(td(g)),a.push("."),a.push(td(f[g]));f=a.join("");""!=f&&(this.data.ogad=f)}};
+_.u(ud,tc);var td=function(a){a=String(a);return a.replace(".","%2E").replace(",","%2C")},sd=function(a){if(!vd){vd={};for(var b=0;b<rd.length;b++)vd[rd[b]]=!0}return!!vd[a]},vd=null;
+var wd=function(a){_.C.call(this,a)};_.u(wd,_.C);
+var Ad=function(){var a=xd,b=yd,c=zd;this.o=a;this.j=b;this.B=_.Ca(_.cc(a,2,1E-4),1E-4);this.F=_.Ca(_.cc(a,3,1),1);b=Math.random();this.A=_.r(_.E(a,1))&&b<this.B;this.C=_.r(_.E(a,1))&&b<this.F;a=0;_.r(_.E(c,1))&&(a|=1);_.r(_.E(c,2))&&(a|=2);_.r(_.E(c,3))&&(a|=4);this.D=a};Ad.prototype.log=function(a,b){try{if(sd(a)?this.C:this.A){var c=new ud(this.j,"quantum:gapiBuildLabel",this.o,a,this.D,b);_.dd(c)}}catch(d){}};
+_.Bd=function(a){this.j=a;this.o=void 0;this.A=[]};_.Bd.prototype.then=function(a,b,c){this.A.push(new Cd(a,b,c));Dd(this)};_.Bd.prototype.resolve=function(a){if(void 0!==this.j||void 0!==this.o)throw Error("F");this.j=a;Dd(this)};_.Bd.prototype.reject=function(a){if(void 0!==this.j||void 0!==this.o)throw Error("F");this.o=a;Dd(this)};var Dd=function(a){if(0<a.A.length){var b=void 0!==a.j,c=void 0!==a.o;if(b||c){b=b?a.B:a.C;c=a.A;a.A=[];try{_.lb(c,b,a)}catch(d){console.error(d)}}}};
+_.Bd.prototype.B=function(a){a.o&&a.o.call(a.j,this.j)};_.Bd.prototype.C=function(a){a.A&&a.A.call(a.j,this.o)};var Cd=function(a,b,c){this.o=a;this.A=b;this.j=c};
+_.I=function(){this.B=new _.Bd;this.j=new _.Bd;this.G=new _.Bd;this.F=new _.Bd;this.D=new _.Bd;this.H=new _.Bd;this.C=new _.Bd;this.A=new _.Bd;this.o=new _.Bd;this.K=new _.Bd};_.h=_.I.prototype;_.h.Ih=function(){return this.B};_.h.Qh=function(){return this.j};_.h.Xh=function(){return this.G};_.h.Ph=function(){return this.F};_.h.Vh=function(){return this.D};_.h.Mh=function(){return this.H};_.h.Nh=function(){return this.C};_.h.Ch=function(){return this.A};_.h.Bh=function(){return this.o};_.I.j=function(){return _.hd(_.I)};
+var Ed=function(a){_.C.call(this,a)};_.u(Ed,_.C);_.Gd=function(){return _.G(_.Fd,_.mc,1)};_.Hd=function(){return _.G(_.Fd,_.nc,5)};
+var Id;window.gbar_&&window.gbar_.CONFIG?Id=window.gbar_.CONFIG[0]||{}:Id=[];_.Fd=new Ed(Id);
+var od,pd,yd,zd,xd;od=_.G(_.Fd,_.gd,3)||new _.gd;pd=_.Gd()||new _.mc;_.J=new qd;yd=_.Gd()||new _.mc;zd=_.Hd()||new _.nc;xd=_.G(_.Fd,wd,4)||new wd;_.Jd=new Ad;
+_.y("gbar_._DumpException",function(a){_.J?_.J.log(a):console.error(a)});
+_.Kd=new pc(_.J);
+_.Jd.log(8,{m:"BackCompat"==document.compatMode?"q":"s"});_.y("gbar.A",_.Bd);_.Bd.prototype.aa=_.Bd.prototype.then;_.y("gbar.B",_.I);_.I.prototype.ba=_.I.prototype.Qh;_.I.prototype.bb=_.I.prototype.Xh;_.I.prototype.bd=_.I.prototype.Vh;_.I.prototype.bf=_.I.prototype.Ih;_.I.prototype.bg=_.I.prototype.Ph;_.I.prototype.bh=_.I.prototype.Mh;_.I.prototype.bi=_.I.prototype.Nh;_.I.prototype.bj=_.I.prototype.Ch;_.I.prototype.bk=_.I.prototype.Bh;_.y("gbar.a",_.I.j());var Ld=new oc(window);_.kd("api",Ld);
+var Md=_.Hd()||new _.nc;window.__PVT=_.t(_.D(Md,8));_.kd("eq",_.Kd);
+
+}catch(e){_._DumpException(e)}
+try{
+var Nd=function(a){_.C.call(this,a)};_.u(Nd,_.C);
+var Od=function(){_.H.call(this);this.o=[];this.j=[]};_.u(Od,_.H);Od.prototype.A=function(a,b){this.o.push({features:a,options:b})};Od.prototype.init=function(a,b,c){window.gapi={};var d=window.___jsl={};d.h=_.t(_.D(a,1));_.ac(a,12)&&(d.dpo=_.r(_.E(a,12)));d.ms=_.t(_.D(a,2));d.m=_.t(_.D(a,3));d.l=[];_.D(b,1)&&(a=_.D(b,3))&&this.j.push(a);_.D(c,1)&&(c=_.D(c,2))&&this.j.push(c);_.y("gapi.load",(0,_.w)(this.A,this));return this};
+var Pd=_.G(_.Fd,_.qc,14)||new _.qc,Qd=_.G(_.Fd,_.rc,9)||new _.rc,Rd=new Nd,Sd=new Od;Sd.init(Pd,Qd,Rd);_.kd("gs",Sd);
+
+}catch(e){_._DumpException(e)}
+})(this.gbar_);
+// Google Inc.
+</script><style nonce="/o0rCvpoCLbIcm25lPeXbg">.gb_Ua:not(.gb_Ad){font:13px/27px Roboto,RobotoDraft,Arial,sans-serif;z-index:986}@keyframes gb__a{0%{opacity:0}50%{opacity:1}}a.gb_W{border:none;color:#4285f4;cursor:default;font-weight:bold;outline:none;position:relative;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}a.gb_W:hover:after,a.gb_W:focus:after{background-color:rgba(0,0,0,.12);content:'';height:100%;left:0;position:absolute;top:0;width:100%}a.gb_W:hover,a.gb_W:focus{text-decoration:none}a.gb_W:active{background-color:rgba(153,153,153,.4);text-decoration:none}a.gb_X{background-color:#4285f4;color:#fff}a.gb_X:active{background-color:#0043b2}.gb_Z{box-shadow:0 1px 1px rgba(0,0,0,.16)}.gb_W,.gb_X,.gb_0,.gb_1{display:inline-block;line-height:28px;padding:0 12px;border-radius:2px}.gb_0{background:#f8f8f8;border:1px solid #c6c6c6}.gb_1{background:#f8f8f8}.gb_0,#gb a.gb_0.gb_0,.gb_1{color:#666;cursor:default;text-decoration:none}#gb a.gb_1.gb_1{cursor:default;text-decoration:none}.gb_1{border:1px solid #4285f4;font-weight:bold;outline:none;background:#4285f4;background:linear-gradient(top,#4387fd,#4683ea);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4387fd,endColorstr=#4683ea,GradientType=0)}#gb a.gb_1.gb_1{color:#fff}.gb_1:hover{box-shadow:0 1px 0 rgba(0,0,0,.15)}.gb_1:active{box-shadow:inset 0 2px 0 rgba(0,0,0,.15);background:#3c78dc;background:linear-gradient(top,#3c7ae4,#3f76d3);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3c7ae4,endColorstr=#3f76d3,GradientType=0)}.gb_ya{display:none!important}.gb_za{visibility:hidden}.gb_ad{display:inline-block;vertical-align:middle}.gb_sf{position:relative}.gb_A{display:inline-block;outline:none;vertical-align:middle;border-radius:2px;box-sizing:border-box;height:40px;width:40px;color:#000;cursor:pointer;text-decoration:none}#gb#gb a.gb_A{color:#000;cursor:pointer;text-decoration:none}.gb_Wa{border-color:transparent;border-bottom-color:#fff;border-style:dashed dashed solid;border-width:0 8.5px 8.5px;display:none;position:absolute;left:11.5px;top:43px;z-index:1;height:0;width:0;animation:gb__a .2s}.gb_Xa{border-color:transparent;border-style:dashed dashed solid;border-width:0 8.5px 8.5px;display:none;position:absolute;left:11.5px;z-index:1;height:0;width:0;animation:gb__a .2s;border-bottom-color:#ccc;border-bottom-color:rgba(0,0,0,.2);top:42px}x:-o-prefocus,div.gb_Xa{border-bottom-color:#ccc}.gb_C{background:#fff;border:1px solid #ccc;border-color:rgba(0,0,0,.2);color:#000;box-shadow:0 2px 10px rgba(0,0,0,.2);display:none;outline:none;overflow:hidden;position:absolute;right:8px;top:62px;animation:gb__a .2s;border-radius:2px}.gb_ad.gb_ja .gb_Wa,.gb_ad.gb_ja .gb_Xa,.gb_ad.gb_ja .gb_C,.gb_ja.gb_C{display:block}.gb_ad.gb_ja.gb_tf .gb_Wa,.gb_ad.gb_ja.gb_tf .gb_Xa{display:none}.gb_uf{position:absolute;right:8px;top:62px;z-index:-1}.gb_Ha .gb_Wa,.gb_Ha .gb_Xa,.gb_Ha .gb_C{margin-top:-10px}.gb_ad:first-child,#gbsfw:first-child+.gb_ad{padding-left:4px}.gb_na.gb_Ke .gb_ad:first-child{padding-left:0}.gb_Le{position:relative}.gb_Lc .gb_Le,.gb_Rd .gb_Le{float:right}.gb_A{padding:8px;cursor:pointer}.gb_na .gb_2c:not(.gb_W):focus img{background-color:rgba(0,0,0,0.20);outline:none;border-radius:50%}.gb_Me button:focus svg,.gb_Me button:hover svg,.gb_Me button:active svg,.gb_A:focus,.gb_A:hover,.gb_A:active,.gb_A[aria-expanded=true]{outline:none;border-radius:50%}.gb_uc .gb_Me.gb_Ne button:focus svg,.gb_uc .gb_Me.gb_Ne button:focus:hover svg,.gb_Me button:focus svg,.gb_Me button:focus:hover svg,.gb_A:focus,.gb_A:focus:hover{background-color:rgba(60,64,67,0.1)}.gb_uc .gb_Me.gb_Ne button:active svg,.gb_Me button:active svg,.gb_A:active{background-color:rgba(60,64,67,0.12)}.gb_uc .gb_Me.gb_Ne button:hover svg,.gb_Me button:hover svg,.gb_A:hover{background-color:rgba(60,64,67,0.08)}.gb_ga .gb_A.gb_Ka:hover{background-color:transparent}.gb_A[aria-expanded=true],.gb_A:hover[aria-expanded=true]{background-color:rgba(95,99,104,0.24)}.gb_A[aria-expanded=true] .gb_Oe,.gb_A[aria-expanded=true] .gb_Pe{fill:#5f6368;opacity:1}.gb_uc .gb_Me button:hover svg,.gb_uc .gb_A:hover{background-color:rgba(232,234,237,0.08)}.gb_uc .gb_Me button:focus svg,.gb_uc .gb_Me button:focus:hover svg,.gb_uc .gb_A:focus,.gb_uc .gb_A:focus:hover{background-color:rgba(232,234,237,0.10)}.gb_uc .gb_Me button:active svg,.gb_uc .gb_A:active{background-color:rgba(232,234,237,0.12)}.gb_uc .gb_A[aria-expanded=true],.gb_uc .gb_A:hover[aria-expanded=true]{background-color:rgba(255,255,255,0.12)}.gb_uc .gb_A[aria-expanded=true] .gb_Oe,.gb_uc .gb_A[aria-expanded=true] .gb_Pe{fill:#ffffff;opacity:1}.gb_ad{padding:4px}.gb_na.gb_Ke .gb_ad{padding:4px 2px}.gb_na.gb_Ke .gb_La.gb_ad{padding-left:6px}.gb_C{z-index:991;line-height:normal}.gb_C.gb_Qe{left:8px;right:auto}@media (max-width:350px){.gb_C.gb_Qe{left:0}}.gb_Re .gb_C{top:56px}.gb_z .gb_A,.gb_B .gb_z .gb_A{background-position:-64px -29px}.gb_g .gb_z .gb_A{background-position:-29px -29px;opacity:1}.gb_z .gb_A,.gb_z .gb_A:hover,.gb_z .gb_A:focus{opacity:1}.gb_Bd{display:none}.gb_Tc{font-family:Google Sans,Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;letter-spacing:0.25px;line-height:48px;margin-bottom:2px;opacity:1;overflow:hidden;padding-left:16px;position:relative;text-overflow:ellipsis;vertical-align:middle;top:2px;white-space:nowrap;flex:1 1 auto}.gb_Tc.gb_Uc{color:#3c4043}.gb_na.gb_oa .gb_Tc{margin-bottom:0}.gb_Vc.gb_Wc .gb_Tc{padding-left:4px}.gb_na.gb_oa .gb_Xc{position:relative;top:-2px}.gb_na{color:black;min-width:320px;position:relative;transition:box-shadow 250ms}.gb_na.gb_Cc{min-width:240px}.gb_na.gb_Cd .gb_Dd{display:none}.gb_na.gb_Cd .gb_Ed{height:56px}header.gb_na{display:block}.gb_na svg{fill:currentColor}.gb_Fd{position:fixed;top:0;width:100%}.gb_Hd{box-shadow:0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12),0px 2px 4px -1px rgba(0,0,0,0.2)}.gb_Id{height:64px}.gb_Ed{box-sizing:border-box;position:relative;width:100%;display:flex;justify-content:space-between;min-width:min-content}.gb_na:not(.gb_oa) .gb_Ed{padding:8px}.gb_na.gb_Jd .gb_Ed{flex:1 0 auto}.gb_na .gb_Ed.gb_Kd.gb_Ld{min-width:0}.gb_na.gb_oa .gb_Ed{padding:4px;padding-left:8px;min-width:0}.gb_Dd{height:48px;vertical-align:middle;white-space:nowrap;align-items:center;display:flex}.gb_Nd>.gb_Dd{display:table-cell;width:100%}.gb_Vc{padding-right:30px;box-sizing:border-box;flex:1 0 auto}.gb_na.gb_oa .gb_Vc{padding-right:14px}.gb_Od{flex:1 1 100%}.gb_Od>:only-child{display:inline-block}.gb_Pd.gb_Mc{padding-left:4px}.gb_Pd.gb_Qd,.gb_na.gb_Jd .gb_Pd,.gb_na.gb_oa:not(.gb_Rd) .gb_Pd{padding-left:0}.gb_na.gb_oa .gb_Pd.gb_Qd{padding-right:0}.gb_na.gb_oa .gb_Pd.gb_Qd .gb_ga{margin-left:10px}.gb_Mc{display:inline}.gb_na.gb_Fc .gb_Pd.gb_Sd,.gb_na.gb_Rd .gb_Pd.gb_Sd{padding-left:2px}.gb_Tc{display:inline-block}.gb_Pd{box-sizing:border-box;height:48px;line-height:normal;padding:0 4px;padding-left:30px;flex:0 0 auto;justify-content:flex-end}.gb_Rd{height:48px}.gb_na.gb_Rd{min-width:initial;min-width:auto}.gb_Rd .gb_Pd{float:right;padding-left:32px}.gb_Rd .gb_Pd.gb_Td{padding-left:0}.gb_Ud{font-size:14px;max-width:200px;overflow:hidden;padding:0 12px;text-overflow:ellipsis;white-space:nowrap}.gb_Vd{transition:background-color .4s}.gb_Wd{color:black}.gb_uc{color:white}.gb_na a,.gb_zc a{color:inherit}.gb_q{color:rgba(0,0,0,0.87)}.gb_na svg,.gb_zc svg,.gb_Vc .gb_Xd,.gb_Lc .gb_Xd{color:#5f6368;opacity:1}.gb_uc svg,.gb_zc.gb_Dc svg,.gb_uc .gb_Vc .gb_Xd,.gb_uc .gb_Vc .gb_tc,.gb_uc .gb_Vc .gb_Xc,.gb_zc.gb_Dc .gb_Xd{color:rgba(255,255,255,0.87)}.gb_uc .gb_Vc .gb_sc:not(.gb_Zd){opacity:0.87}.gb_Uc{color:inherit;opacity:1;text-rendering:optimizeLegibility}.gb_uc .gb_Uc,.gb_Wd .gb_Uc{opacity:1}.gb_0d{position:relative}.gb_1d{font-family:arial,sans-serif;line-height:normal;padding-right:15px}a.gb_d,span.gb_d{color:rgba(0,0,0,0.87);text-decoration:none}.gb_uc a.gb_d,.gb_uc span.gb_d{color:white}a.gb_d:focus{outline-offset:2px}a.gb_d:hover{text-decoration:underline}.gb_e{display:inline-block;padding-left:15px}.gb_e .gb_d{display:inline-block;line-height:24px;vertical-align:middle}.gb_2d{font-family:Google Sans,Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-weight:500;font-size:14px;letter-spacing:0.25px;line-height:16px;margin-left:10px;margin-right:8px;min-width:96px;padding:9px 23px;text-align:center;vertical-align:middle;border-radius:4px;box-sizing:border-box}.gb_na.gb_Rd .gb_2d{margin-left:8px}#gb a.gb_1.gb_1.gb_2d,#gb a.gb_0.gb_0.gb_2d{cursor:pointer}.gb_1.gb_2d:hover{background:#2b7de9;box-shadow:0 1px 2px 0 rgba(66,133,244,0.3),0 1px 3px 1px rgba(66,133,244,0.15)}.gb_1.gb_2d:focus,.gb_1.gb_2d:hover:focus{background:#5094ed;box-shadow:0 1px 2px 0 rgba(66,133,244,0.3),0 1px 3px 1px rgba(66,133,244,0.15)}.gb_1.gb_2d:active{background:#63a0ef;box-shadow:0 1px 2px 0 rgba(66,133,244,0.3),0 1px 3px 1px rgba(66,133,244,0.15)}.gb_2d:not(.gb_0){background:#1a73e8;border:1px solid transparent}.gb_na.gb_oa .gb_2d{padding:9px 15px;min-width:80px}.gb_3d{text-align:left}#gb a.gb_2d.gb_0,#gb .gb_uc a.gb_2d,#gb.gb_uc a.gb_2d{background:#ffffff;border-color:#dadce0;box-shadow:none;color:#1a73e8}#gb a.gb_1.gb_ha.gb_2d{background:#8ab4f8;border:1px solid transparent;box-shadow:none;color:#202124}#gb a.gb_2d.gb_0:hover,#gb .gb_uc a.gb_2d:hover,#gb.gb_uc a.gb_2d:hover{background:#f8fbff;border-color:#cce0fc}#gb a.gb_1.gb_ha.gb_2d:hover{background:#93baf9;border-color:transparent;box-shadow:0 1px 3px 1px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.3)}#gb a.gb_2d.gb_0:focus,#gb a.gb_2d.gb_0:focus:hover,#gb .gb_uc a.gb_2d:focus,#gb .gb_uc a.gb_2d:focus:hover,#gb.gb_uc a.gb_2d:focus,#gb.gb_uc a.gb_2d:focus:hover{background:#f4f8ff;border-color:#c9ddfc}#gb a.gb_1.gb_ha.gb_2d:focus,#gb a.gb_1.gb_ha.gb_2d:focus:hover{background:#a6c6fa;border-color:transparent;box-shadow:none}#gb a.gb_2d.gb_0:active,#gb .gb_uc a.gb_2d:active,#gb.gb_uc a.gb_2d:active{background:#ecf3fe}#gb a.gb_1.gb_ha.gb_2d:active{background:#a1c3f9;box-shadow:0 1px 2px rgba(60,64,67,0.3),0 2px 6px 2px rgba(60,64,67,0.15)}#gb a.gb_2d.gb_0:not(.gb_ha):active{box-shadow:0 1px 2px 0 rgba(60,64,67,0.3),0 2px 6px 2px rgba(60,64,67,0.15)}.gb_ga{background-color:rgba(255,255,255,0.88);border:1px solid #dadce0;box-sizing:border-box;cursor:pointer;display:inline-block;max-height:48px;overflow:hidden;outline:none;padding:0;vertical-align:middle;width:134px;border-radius:8px}.gb_ga.gb_ha{background-color:transparent;border:1px solid #5f6368}.gb_ia{display:inherit}.gb_ga.gb_ha .gb_ia{background:#ffffff;border-radius:4px;display:inline-block;left:8px;margin-right:5px;position:relative;padding:3px;top:-1px}.gb_ga:hover{border:1px solid #d2e3fc;background-color:rgba(248,250,255,0.88)}.gb_ga.gb_ha:hover{border:1px solid #5f6368;background-color:rgba(232,234,237,0.08)}.gb_ga:focus{border:1px solid #fff;background-color:rgba(255,255,255);box-shadow:0px 1px 2px 0px rgba(60,64,67,0.3),0px 1px 3px 1px rgba(60,64,67,0.15)}.gb_ga.gb_ha:focus{border:1px solid #e8eaed;background-color:#38383b}.gb_ga.gb_ha:active,.gb_ga.gb_ja.gb_ha:focus{border:1px solid #5f6368;background-color:#333438}.gb_ka{display:inline-block;padding-bottom:2px;padding-left:7px;padding-top:2px;text-align:center;vertical-align:middle;line-height:32px;width:78px}.gb_ga.gb_ha .gb_ka{line-height:26px;margin-left:0;padding-bottom:0;padding-left:0;padding-top:0;width:72px}.gb_ka.gb_la{background-color:#f1f3f4;border-radius:4px;margin-left:8px;padding-left:0}.gb_ka.gb_la .gb_ma{vertical-align:middle}.gb_na:not(.gb_oa) .gb_ga{margin-left:10px;margin-right:4px}.gb_pa{max-height:32px;width:78px}.gb_ga.gb_ha .gb_pa{max-height:26px;width:72px}.gb_Aa{background-size:32px 32px;border:0;border-radius:50%;display:block;margin:0px;position:relative;height:32px;width:32px;z-index:0}.gb_Ba{background-color:#e8f0fe;border:1px solid rgba(32,33,36,.08);position:relative}.gb_Ba.gb_Aa{height:30px;width:30px}.gb_Ba.gb_Aa:hover,.gb_Ba.gb_Aa:active{box-shadow:none}.gb_Ca{background:#fff;border:none;border-radius:50%;bottom:2px;box-shadow:0px 1px 2px 0px rgba(60,64,67,.30),0px 1px 3px 1px rgba(60,64,67,.15);height:14px;margin:2px;position:absolute;right:0;width:14px}.gb_Da{color:#1f71e7;font:400 22px/32px Google Sans,Roboto,RobotoDraft,Helvetica,Arial,sans-serif;text-align:center;text-transform:uppercase}@media (min-resolution:1.25dppx),(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-device-pixel-ratio:1.25){.gb_Aa::before{display:inline-block;transform:scale(.5);transform-origin:left 0}.gb_Ea::before{display:inline-block;transform:scale(.5);transform-origin:left 0}.gb_i .gb_Ea::before{transform:scale(0.416666667)}}.gb_Aa:hover,.gb_Aa:focus{box-shadow:0 1px 0 rgba(0,0,0,.15)}.gb_Aa:active{box-shadow:inset 0 2px 0 rgba(0,0,0,.15)}.gb_Aa:active::after{background:rgba(0,0,0,.1);border-radius:50%;content:'';display:block;height:100%}.gb_Fa{cursor:pointer;line-height:40px;min-width:30px;opacity:.75;overflow:hidden;vertical-align:middle;text-overflow:ellipsis}.gb_A.gb_Fa{width:auto}.gb_Fa:hover,.gb_Fa:focus{opacity:.85}.gb_Ha .gb_Fa,.gb_Ha .gb_Ia{line-height:26px}#gb#gb.gb_Ha a.gb_Fa,.gb_Ha .gb_Ia{font-size:11px;height:auto}.gb_Ja{border-top:4px solid #000;border-left:4px dashed transparent;border-right:4px dashed transparent;display:inline-block;margin-left:6px;opacity:.75;vertical-align:middle}.gb_Ka:hover .gb_Ja{opacity:.85}.gb_ga>.gb_La{padding:3px 3px 3px 4px}.gb_Ma.gb_za{color:#fff}.gb_Na{background-color:white;border-radius:50%;bottom:2px;height:18px;position:absolute;right:2px;width:18px}.gb_g .gb_Fa,.gb_g .gb_Ja{opacity:1}#gb#gb.gb_g.gb_g a.gb_Fa,#gb#gb .gb_g.gb_g a.gb_Fa{color:#fff}.gb_g.gb_g .gb_Ja{border-top-color:#fff;opacity:1}.gb_B .gb_Aa:hover,.gb_g .gb_Aa:hover,.gb_B .gb_Aa:focus,.gb_g .gb_Aa:focus{box-shadow:0 1px 0 rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.2)}.gb_Oa .gb_La,.gb_Pa .gb_La{position:absolute;right:1px}.gb_La.gb_f,.gb_Qa.gb_f,.gb_Ka.gb_f{flex:0 1 auto;flex:0 1 main-size}.gb_Ra.gb_Sa .gb_Fa{width:30px!important}.gb_Ta{height:40px;position:absolute;right:-5px;top:-5px;width:40px}.gb_Ua .gb_Ta,.gb_Va .gb_Ta{right:0;top:0}.gb_La .gb_A{padding:4px}.gb_5d{display:none}sentinel{}</style></head><body dir="ltr" role="application" itemscope itemtype="http://schema.org/CreativeWork/FileObject"><div style="display:none"><div id="one-google-bar" class="ndfHFb-c4YZDc-Woal0c-jcJzye-ZMv3u ndfHFb-c4YZDc-n1UuX-Bz112c"><div class="gb_na gb_Rd gb_Ua" id="gb"><div class="gb_Pd gb_Ra gb_Dd" ng-non-bindable="" data-ogsr-up="" style="padding:0"><div class="gb_Le" style="display:block"><div class="gb_Mc"></div><a class="gb_1 gb_2 gb_2d gb_2c" href="https://accounts.google.com/ServiceLogin?service=wise&amp;passive=1209600&amp;continue=https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view&amp;followup=https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view&amp;ec=GAZAGQ" target="_top">Acceder</a></div></div></div><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">this.gbar_=this.gbar_||{};(function(_){var window=this;
+try{
+_.Td=function(a,b,c){if(!a.o)if(c instanceof Array){c=_.Ma(c);for(var d=c.next();!d.done;d=c.next())_.Td(a,b,d.value)}else{d=(0,_.w)(a.D,a,b);var e=a.B+c;a.B++;b.setAttribute("data-eqid",e);a.F[e]=d;b&&b.addEventListener?b.addEventListener(c,d,!1):b&&b.attachEvent?b.attachEvent("on"+c,d):a.A.log(Error("z`"+b))}};
+
+}catch(e){_._DumpException(e)}
+try{
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+_.Ud=function(){if(!_.n.addEventListener||!Object.defineProperty)return!1;var a=!1,b=Object.defineProperty({},"passive",{get:function(){a=!0}});try{_.n.addEventListener("test",_.Za,b),_.n.removeEventListener("test",_.Za,b)}catch(c){}return a}();
+_.Vd=_.vb?"webkitTransitionEnd":"transitionend";
+
+}catch(e){_._DumpException(e)}
+try{
+var Wd=document.querySelector(".gb_z .gb_A"),Xd=document.querySelector("#gb.gb_Cc");Wd&&!Xd&&_.Td(_.Kd,Wd,"click");
+
+}catch(e){_._DumpException(e)}
+try{
+var Ch=function(a){_.H.call(this);this.C=a;this.A=null;this.o={};this.F={};this.j={};this.B=null};_.u(Ch,_.H);_.Dh=function(a){if(a.A)return a.A;for(var b in a.j)if(a.j[b].De()&&a.j[b].Fb())return a.j[b];return null};_.h=Ch.prototype;_.h.Ve=function(a){a&&_.Dh(this)&&a!=_.Dh(this)&&_.Dh(this).Cd(!1);this.A=a};_.h.Wf=function(a){a=this.j[a]||a;return _.Dh(this)==a};_.h.ne=function(a,b){b=b.Cc();if(this.o[a]&&this.o[a][b])for(var c=0;c<this.o[a][b].length;c++)try{this.o[a][b][c]()}catch(d){this.C.log(d)}};
+_.h.fh=function(a){return!this.F[a.Cc()]};_.h.tg=function(a){this.j[a]&&(_.Dh(this)&&_.Dh(this).Cc()==a||this.j[a].Cd(!0))};_.h.Ta=function(a){this.B=a;for(var b in this.j)this.j[b].De()&&this.j[b].Ta(a)};_.h.Re=function(a){this.j[a.Cc()]=a};_.h.ee=function(a){return a in this.j?this.j[a]:null};var Eh=new Ch(_.J);_.kd("dd",Eh);
+
+}catch(e){_._DumpException(e)}
+try{
+var fj=document.querySelector(".gb_La .gb_A"),gj=document.querySelector("#gb.gb_Cc");fj&&!gj&&_.Td(_.Kd,fj,"click");
+
+}catch(e){_._DumpException(e)}
+})(this.gbar_);
+// Google Inc.
+</script></div></div><meta itemprop="name" content="salidasimu.shw.bz2"><meta itemprop="faviconUrl" content="https://ssl.gstatic.com/images/branding/product/1x/drive_2020q4_32dp.png"><meta itemprop="url" content="https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view?usp=embed_googleplus"><div ng-non-bindable=""></div><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">this.gbar_=this.gbar_||{};(function(_){var window=this;
+try{
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+_.Yd=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};_.Zd=function(a){var b=_.Yd(a);return"array"==b||"object"==b&&"number"==typeof a.length};_.$d=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};try{(new self.OffscreenCanvas(0,0)).getContext("2d")}catch(a){}_.ae=_.B||_.vb;
+_.be=function(a,b){this.width=a;this.height=b};_.h=_.be.prototype;_.h.aspectRatio=function(){return this.width/this.height};_.h.mb=function(){return!(this.width*this.height)};_.h.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};_.h.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};_.h.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};
+var ee,he;_.ce=function(a,b){return(b||document).getElementsByTagName(String(a))};_.K=function(a,b){var c=b||document;if(c.getElementsByClassName)a=c.getElementsByClassName(a)[0];else{c=document;var d=b||c;a=d.querySelectorAll&&d.querySelector&&a?d.querySelector(a?"."+a:""):_.de(c,a,b)[0]||null}return a||null};
+_.de=function(a,b,c){var d;a=c||a;if(a.querySelectorAll&&a.querySelector&&b)return a.querySelectorAll(b?"."+b:"");if(b&&a.getElementsByClassName){var e=a.getElementsByClassName(b);return e}e=a.getElementsByTagName("*");if(b){var f={};for(c=d=0;a=e[c];c++){var g=a.className;"function"==typeof g.split&&_.na(g.split(/\s+/),b)&&(f[d++]=a)}f.length=d;return f}return e};
+_.fe=function(a,b){_.Da(b,function(c,d){c&&"object"==typeof c&&c.Nb&&(c=c.lb());"style"==d?a.style.cssText=c:"class"==d?a.className=c:"for"==d?a.htmlFor=c:ee.hasOwnProperty(d)?a.setAttribute(ee[d],c):_.jb(d,"aria-")||_.jb(d,"data-")?a.setAttribute(d,c):a[d]=c})};ee={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};
+_.ie=function(a,b){var c=b[1],d=_.ge(a,String(b[0]));c&&("string"===typeof c?d.className=c:Array.isArray(c)?d.className=c.join(" "):_.fe(d,c));2<b.length&&he(a,d,b);return d};
+he=function(a,b,c){function d(k){k&&b.appendChild("string"===typeof k?a.createTextNode(k):k)}for(var e=2;e<c.length;e++){var f=c[e];if(!_.Zd(f)||_.$a(f)&&0<f.nodeType)d(f);else{a:{if(f&&"number"==typeof f.length){if(_.$a(f)){var g="function"==typeof f.item||"string"==typeof f.item;break a}if("function"===typeof f){g="function"==typeof f.item;break a}}g=!1}_.lb(g?_.oa(f):f,d)}}};_.je=function(a){return _.ge(document,a)};
+_.ge=function(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)};_.ke=function(a){for(var b;b=a.firstChild;)a.removeChild(b)};_.le=function(a){return a&&a.parentNode?a.parentNode.removeChild(a):null};_.me=function(a){return _.$a(a)&&1==a.nodeType};_.ne=function(a){return 9==a.nodeType?a:a.ownerDocument||a.document};_.oe=function(a,b,c){for(var d=0;a&&(null==c||d<=c);){if(b(a))return a;a=a.parentNode;d++}return null};
+
+}catch(e){_._DumpException(e)}
+try{
+_.kj=function(a){_.C.call(this,a)};_.u(_.kj,_.C);
+
+}catch(e){_._DumpException(e)}
+try{
+_.lj=function(a,b,c){a.rel=c;-1!=c.toLowerCase().indexOf("stylesheet")?(a.href=_.Ac(b),(b=_.$c(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof _.yc?_.Ac(b):b instanceof _.Dc?_.Ec(b):_.Ec(_.Kc(b))};
+
+}catch(e){_._DumpException(e)}
+try{
+_.nj=function(a){if("function"==typeof _.mj&&a instanceof _.mj)return a.j;throw Error("E");};_.pj=function(a){return"function"==typeof _.oj&&a instanceof _.oj?_.nj(a):_.zc(a)};_.qj=function(a){var b,c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document,d=null===(b=c.querySelector)||void 0===b?void 0:b.call(c,"script[nonce]");(b=d?d.nonce||d.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",b)};
+/*
+
+ SPDX-License-Identifier: Apache-2.0
+*/
+
+}catch(e){_._DumpException(e)}
+try{
+var rj=function(a,b,c){_.Jd.log(46,{att:a,max:b,url:c})},tj=function(a,b,c){_.Jd.log(47,{att:a,max:b,url:c});a<b?sj(a+1,b):_.J.log(Error("da`"+a+"`"+b),{url:c})},sj=function(a,b){if(uj){var c=_.je("SCRIPT");c.async=!0;c.type="text/javascript";c.charset="UTF-8";c.src=_.pj(uj);_.qj(c);c.onload=_.$d(rj,a,b,c.src);c.onerror=_.$d(tj,a,b,c.src);_.Jd.log(45,{att:a,max:b,url:c.src});_.ce("HEAD")[0].appendChild(c)}},vj=function(a){_.C.call(this,a)};_.u(vj,_.C);
+var wj=_.G(_.Fd,vj,17)||new vj,xj,uj=(xj=_.G(wj,_.kj,1))?_.Bc(_.D(xj,4)||""):null,yj,zj=(yj=_.G(wj,_.kj,2))?_.Bc(_.D(yj,4)||""):null,Aj=function(){sj(1,2);if(zj){var a=_.je("LINK");a.setAttribute("type","text/css");_.lj(a,zj,"stylesheet");var b=_.$c(void 0);b&&a.setAttribute("nonce",b);_.ce("HEAD")[0].appendChild(a)}};
+(function(){var a=_.Gd();if(_.E(a,18))Aj();else{var b=_.D(a,19)||0;window.addEventListener("load",function(){window.setTimeout(Aj,b)})}})();
+
+}catch(e){_._DumpException(e)}
+})(this.gbar_);
+// Google Inc.
+</script><script id="base-js" async type="text/javascript" src="https://www.gstatic.com/_/apps-fileview/_/js/k=apps-fileview.v.es_419.rQe1Jd16VZo.O/d=1/rs=AO0039vCsbL3BEQOz-Wsyi93zGPrsA-HTA/m=v,wb" nonce="Etjc2y2tlbpKDhPK4jOJ1A"></script></body></html>
\ No newline at end of file
diff --git a/Simular_flujo_de_neutrones/vis.mac b/Simular_flujo_de_neutrones/vis.mac
new file mode 100644
index 0000000000000000000000000000000000000000..9f218d0a80ec49c6e618023381a4033fdfa0bdb5
--- /dev/null
+++ b/Simular_flujo_de_neutrones/vis.mac
@@ -0,0 +1,74 @@
+# Use this open statement to create an OpenGL view:
+/vis/open OGL 600x600-0+0
+#
+# Use this open statement to create a .prim file suitable for
+# viewing in DAWN:
+#/vis/open DAWNFILE
+#
+# Use this open statement to create a .heprep file suitable for
+# viewing in HepRApp:
+#/vis/open HepRepFile
+#
+# Use this open statement to create a .wrl file suitable for
+# viewing in a VRML viewer:
+#/vis/open VRML2FILE
+#
+# Disable auto refresh and quieten vis messages whilst scene and
+# trajectories are established:
+/vis/viewer/set/autoRefresh false
+/vis/verbose errors
+#
+# Draw geometry:
+/vis/drawVolume
+#
+# Specify view angle:
+#/vis/viewer/set/viewpointThetaPhi 90. 0.
+#
+# Specify zoom value:
+/vis/viewer/zoom 1.5
+#
+# Specify style (surface or wireframe):
+#/vis/viewer/set/style wireframe
+#
+# Draw coordinate axes:
+#/vis/scene/add/axes 0 0 0 1 m
+#
+# Draw smooth trajectories at end of event, showing trajectory points
+# as markers 2 pixels wide:
+/vis/scene/add/trajectories smooth
+/vis/modeling/trajectories/create/drawByCharge
+/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
+/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
+# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
+#
+# Draw hits at end of event:
+#/vis/scene/add/hits
+
+/vis/scene/add/scale
+/vis/scene/add/axes
+
+#/vis/geometry/set/visibility World 0 false
+#/vis/geometry/set/colour Envelope 0 0 0 1 .3
+#
+# To draw only gammas:
+#/vis/filtering/trajectories/create/particleFilter
+#/vis/filtering/trajectories/particleFilter-0/add gamma
+#
+# To invert the above, drawing all particles except gammas,
+# keep the above two lines but also add:
+#/vis/filtering/trajectories/particleFilter-0/invert true
+#
+# Many other options are available with /vis/modeling and /vis/filtering.
+# For example, to select colour by particle ID:
+#/vis/modeling/trajectories/create/drawByParticleID
+#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
+#
+# To superimpose all of the events from a given run:
+/vis/scene/endOfEventAction accumulate
+#
+# Re-establish auto refreshing and verbosity:
+/vis/viewer/set/autoRefresh true
+/vis/verbose warnings
+#
+# For file-based drivers, use this to create an empty detector view:
+#/vis/viewer/flush
diff --git a/Simular_flujo_de_neutrones/wcd.cc b/Simular_flujo_de_neutrones/wcd.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e1ac29ff04a21f3d91fe9f4b92c0bd861930844f
--- /dev/null
+++ b/Simular_flujo_de_neutrones/wcd.cc
@@ -0,0 +1,194 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file OpNovice/OpNovice.cc
+/// \brief Main program of the OpNovice example
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//
+// Description: Test of Continuous Process G4Cerenkov
+//              and RestDiscrete Process G4Scintillation
+//              -- Generation Cerenkov Photons --
+//              -- Generation Scintillation Photons --
+//              -- Transport of optical Photons --
+// Version:     5.0
+// Created:     1996-04-30
+// Author:      Juliet Armstrong
+// mail:        gum@triumf.ca
+//     
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifdef G4MULTITHREADED
+#include "G4MTRunManager.hh"
+#else
+#include "G4RunManager.hh"
+#endif
+
+#ifdef G4VIS_USE
+#include "G4VisExecutive.hh"
+#endif
+
+#ifdef G4UI_USE
+#include "G4UIExecutive.hh"
+#endif
+
+
+#include "G4UImanager.hh"
+
+#include "Randomize.hh"
+
+#include "PhysicsList.hh"
+#include "DetectorConstruction.hh"
+#include "ActionInitialization.hh"
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace {
+  void PrintUsage() {
+    G4cerr << " Usage: " << G4endl;
+    G4cerr << " OpNovic [-m macro ] [-u UIsession] [-t nThreads] [-r seed] "
+           << G4endl;
+    G4cerr << "   note: -t option is available only for multi-threaded mode."
+           << G4endl;
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+int main(int argc,char** argv)
+{
+  // Evaluate arguments
+  //
+  if ( argc > 9 ) {
+    PrintUsage();
+    return 1;
+  }
+
+  G4String macro;
+  G4String session;
+#ifdef G4MULTITHREADED
+  G4int nThreads = 0;
+#endif
+
+  G4long myseed = time(NULL); //345354;
+
+  for ( G4int i=1; i<argc; i=i+2 ) {
+     if      ( G4String(argv[i]) == "-m" ) macro   = argv[i+1];
+     else if ( G4String(argv[i]) == "-u" ) session = argv[i+1];
+     else if ( G4String(argv[i]) == "-r" ) myseed  = atoi(argv[i+1]);
+#ifdef G4MULTITHREADED
+     else if ( G4String(argv[i]) == "-t" ) {
+                    nThreads = G4UIcommand::ConvertToInt(argv[i+1]);
+    }
+#endif
+    else {
+      PrintUsage();
+      return 1;
+    }
+  }
+
+  // Choose the Random engine
+  //
+  G4Random::setTheEngine(new CLHEP::RanecuEngine);
+
+  // Construct the default run manager
+  //
+#ifdef G4MULTITHREADED
+  G4MTRunManager * runManager = new G4MTRunManager;
+  if ( nThreads > 0 ) runManager->SetNumberOfThreads(nThreads);
+#else
+  G4RunManager * runManager = new G4RunManager;
+#endif
+
+  // Seed the random number generator manually
+  G4Random::setTheSeed(myseed);
+  G4cout << "myseed: " << myseed << G4endl;
+
+  G4String physName = "QGSP_BERT_HP";
+
+  // Set mandatory initialization classes
+  //
+  // Detector construction
+  runManager-> SetUserInitialization(new DetectorConstruction());
+  // Physics list
+  runManager-> SetUserInitialization(new PhysicsList(physName));
+  // User action initialization
+  runManager->SetUserInitialization(new ActionInitialization());
+
+  // Initialize G4 kernel
+  //
+  runManager->Initialize();
+
+#ifdef G4VIS_USE
+  // Initialize visualization
+  //
+  G4VisManager* visManager = new G4VisExecutive;
+  // G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
+  // G4VisManager* visManager = new G4VisExecutive("Quiet");
+  visManager->Initialize();
+#endif
+
+  // Get the pointer to the User Interface manager
+  //
+  G4UImanager* UImanager = G4UImanager::GetUIpointer(); 
+   
+  if ( macro.size() ) {
+     // Batch mode
+     G4String command = "/control/execute ";
+     UImanager->ApplyCommand(command+macro);
+  }
+  else // Define UI session for interactive mode
+  {
+#ifdef G4UI_USE
+     G4UIExecutive * ui = new G4UIExecutive(argc,argv,session);
+#ifdef G4VIS_USE
+     UImanager->ApplyCommand("/control/execute vis.mac");
+#else
+     UImanager->ApplyCommand("/control/execute input.in");
+#endif
+     if (ui->IsGUI())
+        UImanager->ApplyCommand("/control/execute gui.mac");
+     ui->SessionStart();
+     delete ui;
+#endif
+  }
+
+  // Job termination
+  // Free the store: user actions, physics_list and detector_description are
+  //                 owned and deleted by the run manager, so they should not
+  //                 be deleted in the main() program !
+
+#ifdef G4VIS_USE
+  delete visManager;
+#endif
+  delete runManager;
+
+  return 0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_neutrones_monoenergeticos/CMakeLists.txt b/Simular_neutrones_monoenergeticos/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..8f4a4e75362a887b9cdd9de6ad5c6c6439977280
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/CMakeLists.txt
@@ -0,0 +1,72 @@
+#----------------------------------------------------------------------------
+# Setup the project
+cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
+project(wcd)
+
+#----------------------------------------------------------------------------
+# Find Geant4 package, activating all available UI and Vis drivers by default
+# You can set WITH_GEANT4_UIVIS to OFF via the command line or ccmake/cmake-gui
+# to build a batch mode only executable
+#
+option(WITH_GEANT4_UIVIS "Build example with Geant4 UI and Vis drivers" ON)
+if(WITH_GEANT4_UIVIS)
+  find_package(Geant4 REQUIRED ui_all vis_all)
+else()
+  find_package(Geant4 REQUIRED)
+endif()
+
+#----------------------------------------------------------------------------
+# Setup Geant4 include directories and compile definitions
+#
+include(${Geant4_USE_FILE})
+
+#----------------------------------------------------------------------------
+# Locate sources and headers for this project
+#
+include_directories(${PROJECT_SOURCE_DIR}/include 
+                    ${Geant4_INCLUDE_DIR})
+file(GLOB sources ${PROJECT_SOURCE_DIR}/src/*.cc)
+file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
+
+#----------------------------------------------------------------------------
+# Add the executable, and link it to the Geant4 libraries
+#
+add_executable(wcd wcd.cc ${sources} ${headers})
+target_link_libraries(wcd ${Geant4_LIBRARIES} )
+
+#----------------------------------------------------------------------------
+# Copy all scripts to the build directory, i.e. the directory in which we
+# build OpNovice. This is so that we can run the executable directly because it
+# relies on these scripts being in the current working directory.
+#
+set(wcd_SCRIPTS
+    init_vis.mac
+    input.in
+    optPhoton.mac
+    gui.mac
+    vis.mac
+    loop.sh
+    salidasimu.shw.bz2
+  )
+
+foreach(_script ${wcd_SCRIPTS})
+  configure_file(
+    ${PROJECT_SOURCE_DIR}/${_script}
+    ${PROJECT_BINARY_DIR}/${_script}
+    COPYONLY
+    )
+endforeach()
+#----------------------------------------------------------------------------
+# For internal Geant4 use - but has no effect if you build this
+# example standalone
+#
+add_custom_target(wcd-pmt-2 DEPENDS wcd)
+
+
+
+
+#----------------------------------------------------------------------------
+# Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
+#
+install(TARGETS wcd DESTINATION bin)
+
diff --git a/Simular_neutrones_monoenergeticos/GNUmakefile b/Simular_neutrones_monoenergeticos/GNUmakefile
new file mode 100644
index 0000000000000000000000000000000000000000..1ce08cf34b7d0813e9a89b58a8467cbe48fe92be
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/GNUmakefile
@@ -0,0 +1,21 @@
+# $Id: GNUmakefile 68752 2013-04-05 10:23:47Z gcosmo $
+# --------------------------------------------------------------
+# GNUmakefile for examples module.  Gabriele Cosmo, 06/04/98.
+# --------------------------------------------------------------
+
+name := wcd
+G4TARGET := $(name)
+G4EXLIB := true
+
+ifndef G4INSTALL
+  G4INSTALL = ../../..
+endif
+
+.PHONY: all
+all: lib bin
+
+include $(G4INSTALL)/config/binmake.gmk
+
+visclean:
+	rm -f g4*.prim g4*.eps g4*.wrl
+	rm -f .DAWN_*
diff --git a/Simular_neutrones_monoenergeticos/README.md b/Simular_neutrones_monoenergeticos/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9fd29946b3047f90fb1b5bb55d92f51d261f359b
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/README.md
@@ -0,0 +1,24 @@
+# Archivos de la Tesis
+
+Para compilar el código en una carpeta diferente, utiliza el siguiente comando:
+
+```
+cmake -DGeant4_DIR=/opt/geant4/lib/Geant4-10.3.3/ ../"direccion del directorio"/Simulacion_neutrones_monoenergeticos; make -j2
+```
+
+Para ejecutar el código, utiliza el siguiente comando:
+
+```
+./wcd -m input.in > archivo.txt
+```
+
+Si deseas cambiar la humedad, accede a la siguiente dirección: `/"direccion del directorio"/Simulacion_neutrones_monoenergeticos/src/`. Luego, ingresa al archivo `DetectorConstruction.cc` con el editor de texto de tu preferencia.
+
+En la línea 103, escribe:
+
+- `sueloBS` (0% de humedad),
+- `sueloBH5` (5% de humedad),
+- `sueloBH15` (15% de humedad),
+- `sueloBH25` (25% de humedad),
+- `sueloBH30` (30% de humedad).
+
diff --git a/Simular_neutrones_monoenergeticos/gui.mac b/Simular_neutrones_monoenergeticos/gui.mac
new file mode 100644
index 0000000000000000000000000000000000000000..821e9c7ff705382516d2cb1453b508e9d92f601e
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/gui.mac
@@ -0,0 +1,45 @@
+#
+# This file permits to customize, with commands,
+# the menu bar of the G4UIXm, G4UIQt, G4UIWin32 sessions.
+# It has no effect with G4UIterminal.
+#
+# Process vis.mac (and draw geometry)
+#
+/control/execute vis.mac
+#
+# File menu :
+/gui/addMenu file File
+/gui/addButton file Quit exit
+#
+# Run menu :
+/gui/addMenu run Run
+/gui/addButton run "beamOn 1" "/run/beamOn 1"
+#/gui/addButton run run1 "/control/execute run1.mac"
+#/gui/addButton run run2 "/control/execute run2.mac"
+#
+# Gun menu :
+/gui/addMenu gun Gun
+/gui/addButton gun "50 MeV"  "/gun/energy 50 MeV"
+/gui/addButton gun "1 GeV"   "/gun/energy 1 GeV"
+/gui/addButton gun "10 GeV"  "/gun/energy 10 GeV"
+/gui/addButton gun "e-"      "/gun/particle e-"
+/gui/addButton gun "pi0"     "/gun/particle pi0"
+/gui/addButton gun "pi+"     "/gun/particle pi+"
+/gui/addButton gun "neutron" "/gun/particle neutron"
+/gui/addButton gun "proton"  "/gun/particle proton"
+#
+# Field menu :
+#/gui/addMenu field Field
+#/gui/addButton field "off"       "/B2/det/setField 0.2 tesla"
+#/gui/addButton field "0.2 tesla" "/B2/det/setField 0.2 tesla"
+#/gui/addButton field "2.0 tesla" "/B2/det/setField 2.0 tesla"
+#
+# Viewer menu :
+/gui/addMenu viewer Viewer
+/gui/addButton viewer "Set style surface" "/vis/viewer/set/style surface"
+/gui/addButton viewer "Set style wireframe" "/vis/viewer/set/style wireframe"
+/gui/addButton viewer "Refresh viewer" "/vis/viewer/refresh"
+/gui/addButton viewer "Update viewer (interaction or end-of-file)" "/vis/viewer/update"
+/gui/addButton viewer "Flush viewer (= refresh + update)" "/vis/viewer/flush"
+/gui/addButton viewer "Update scene" "/vis/scene/notifyHandlers"
+#
diff --git a/Simular_neutrones_monoenergeticos/include/ActionInitialization.hh b/Simular_neutrones_monoenergeticos/include/ActionInitialization.hh
new file mode 100644
index 0000000000000000000000000000000000000000..4bdce6079098e442178f4d91dcb0ca2c721b8fb7
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/ActionInitialization.hh
@@ -0,0 +1,53 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ActionInitialization.hh 68058 2013-03-13 14:47:43Z gcosmo $
+//
+/// \file ActionInitialization.hh
+/// \brief Definition of the ActionInitialization class
+
+#ifndef ActionInitialization_h
+#define ActionInitialization_h 1
+
+#include "G4VUserActionInitialization.hh"
+
+class B4DetectorConstruction;
+
+/// Action initialization class.
+///
+
+class ActionInitialization : public G4VUserActionInitialization
+{
+  public:
+    ActionInitialization();
+    virtual ~ActionInitialization();
+
+    virtual void BuildForMaster() const;
+    virtual void Build() const;
+
+    virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/DetectorConstruction.hh b/Simular_neutrones_monoenergeticos/include/DetectorConstruction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..6df5d1e97f5f70350d5894bcc25ae88a0cba71e5
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/DetectorConstruction.hh
@@ -0,0 +1,47 @@
+#ifndef DetectorConstruction_h
+#define DetectorConstruction_h 1
+
+
+// Geant4 Libraries
+//
+#include "globals.hh"
+#include "G4VUserDetectorConstruction.hh"
+#include "G4Cache.hh"
+#include "G4Material.hh"
+#include "G4Element.hh"
+#include "G4LogicalVolume.hh"
+#include "G4Box.hh"
+#include "G4Ellipsoid.hh"
+#include "G4Tubs.hh"
+#include "G4OpticalSurface.hh"
+
+
+// Local Libraries
+//
+//#include "PMTSD.hh"
+
+class G4LogicalVolume; 
+
+
+class DetectorConstruction : public G4VUserDetectorConstruction
+{
+  public:
+    DetectorConstruction();
+    virtual ~DetectorConstruction();
+
+  public:
+    virtual G4VPhysicalVolume* Construct();
+    
+  /*  G4VPhysicalVolume* GetWaterVolume() const 
+    {
+       return fwaterVolume;
+    }*/
+
+  private:
+
+
+
+    
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/EventAction.hh b/Simular_neutrones_monoenergeticos/include/EventAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c20f6d9b58340c8f73f5f0a6eb3cd39be0f85b16
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/EventAction.hh
@@ -0,0 +1,32 @@
+#ifndef EventAction_h
+#define EventAction_h 1
+
+
+// Geant libraries
+//
+#include "G4UserEventAction.hh"
+#include "globals.hh"
+
+
+class RunAction;
+
+
+class EventAction : public G4UserEventAction
+{
+	public:
+		EventAction(RunAction* runAction);
+		virtual ~EventAction();
+
+		virtual void BeginOfEventAction(const G4Event* event);
+		//virtual void EndOfEventAction(const G4Event* event);
+
+		void AddEdep(G4double edep)
+		{
+			fEdep += edep;
+		}
+
+	private:
+		RunAction* fRunAction;
+		G4double fEdep;
+};
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/ExtraPhysics.hh b/Simular_neutrones_monoenergeticos/include/ExtraPhysics.hh
new file mode 100644
index 0000000000000000000000000000000000000000..479f4b700a0e6fc182c04c62efcccbbb6571c609
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/ExtraPhysics.hh
@@ -0,0 +1,54 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ExtraPhysics.hh 68752 2013-04-05 10:23:47Z gcosmo $
+//
+/// \file optical//include/ExtraPhysics.hh
+/// \brief Definition of the ExtraPhysics class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef ExtraPhysics_h
+#define ExtraPhysics_h 1
+
+#include "globals.hh"
+
+#include "G4VPhysicsConstructor.hh"
+
+class ExtraPhysics : public G4VPhysicsConstructor
+{
+  public:
+
+    ExtraPhysics();
+    virtual ~ExtraPhysics();
+
+    virtual void ConstructParticle();
+    virtual void ConstructProcess();
+
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/OpticalPhysics.hh b/Simular_neutrones_monoenergeticos/include/OpticalPhysics.hh
new file mode 100644
index 0000000000000000000000000000000000000000..774fbf254cebacabe658c0676ddf4dd57de08137
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/OpticalPhysics.hh
@@ -0,0 +1,84 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: OpticalPhysics.hh 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//include/OpticalPhysics.hh
+/// \brief Definition of the OpticalPhysics class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef OpticalPhysics_h
+#define OpticalPhysics_h 1
+
+#include "globals.hh"
+
+#include "G4OpWLS.hh"
+#include "G4Cerenkov.hh"
+#include "G4Scintillation.hh"
+
+#include "G4OpMieHG.hh"
+#include "G4OpRayleigh.hh"
+#include "G4OpAbsorption.hh"
+#include "G4OpBoundaryProcess.hh"
+
+#include "G4VPhysicsConstructor.hh"
+
+class OpticalPhysics : public G4VPhysicsConstructor
+{
+  public:
+
+    OpticalPhysics(G4bool toggle=true);
+    virtual ~OpticalPhysics();
+
+    virtual void ConstructParticle();
+    virtual void ConstructProcess();
+
+    G4OpWLS* GetProcess() {return fProcess;}
+    G4Cerenkov* GetCerenkovProcess() {return fCerenkovProcess;}
+    G4Scintillation* GetScintillationProcess() {return fScintProcess;}
+    G4OpAbsorption* GetAbsorptionProcess() {return fAbsorptionProcess;}
+    G4OpRayleigh* GetRayleighScatteringProcess() {return fRayleighScattering;}
+    G4OpMieHG* GetMieHGScatteringProcess() {return fMieHGScatteringProcess;}
+    G4OpBoundaryProcess* GetBoundaryProcess() { return fBoundaryProcess;}
+
+    void SetNbOfPhotonsCerenkov(G4int);
+
+private:
+
+    G4OpWLS*             fProcess;
+    G4Cerenkov*          fCerenkovProcess;
+    G4Scintillation*     fScintProcess;
+    G4OpAbsorption*      fAbsorptionProcess;
+    G4OpRayleigh*        fRayleighScattering;
+    G4OpMieHG*           fMieHGScatteringProcess;
+    G4OpBoundaryProcess* fBoundaryProcess;
+ 
+    G4bool fAbsorptionOn;
+
+};
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PMTHit.hh b/Simular_neutrones_monoenergeticos/include/PMTHit.hh
new file mode 100644
index 0000000000000000000000000000000000000000..be988a11c30b6a5eb45d8474056773b3102f6c7b
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PMTHit.hh
@@ -0,0 +1,40 @@
+#ifndef PMTHit_h
+#define PMTHit_h 1
+
+
+// Geant4 Libraries
+//
+#include "G4VHit.hh"
+#include "G4THitsCollection.hh"
+#include "G4Allocator.hh"
+#include "G4ThreeVector.hh"
+#include "G4LogicalVolume.hh"
+#include "G4Transform3D.hh"
+#include "G4RotationMatrix.hh"
+#include "G4VPhysicalVolume.hh"
+
+#include "tls.hh"
+
+
+// Local Libraries
+//
+
+
+class G4VTouchable;
+
+
+class PMTHit //: public G4VHit
+{
+
+  public:
+
+    PMTHit();
+    virtual ~PMTHit();
+    G4int askDetected(G4double);
+    void reset();
+
+  private:
+    void GetWavelength(G4double);
+    G4double waveLength;
+};
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PMTSD.hh b/Simular_neutrones_monoenergeticos/include/PMTSD.hh
new file mode 100644
index 0000000000000000000000000000000000000000..758aa241007845334c76aa438bc03e3e3137c375
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PMTSD.hh
@@ -0,0 +1,42 @@
+#ifndef PMTSD_h
+#define PMTSD_h 1
+
+
+// Geant4 Libraries
+//
+//#include "G4DataVector.hh"
+//#include "G4VSensitiveDetector.hh"
+
+
+// Local Libraries
+//
+#include "PMTHit.hh"
+
+
+// C++ Libraries
+//
+//#include <vector>
+
+class G4Step;
+class G4HCofThisEvent;
+
+
+class PMTSD //: public G4VSensitiveDetector
+{
+
+  public:
+    PMTSD();//G4String name);
+    virtual ~PMTSD();
+    virtual G4int ProcessHits(const G4Step* aStep);
+    void resetPMTSD();
+    G4double getPhoDetected()
+    { 
+      return phoDetec;
+    }
+
+  private:
+   PMTHit *phoHit;
+   G4int phoDetec;
+   G4double kinEnergy;
+};
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PhysicsList.hh b/Simular_neutrones_monoenergeticos/include/PhysicsList.hh
new file mode 100644
index 0000000000000000000000000000000000000000..c21ad7347af6c6cf98d14b85caaa31ce2181b501
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PhysicsList.hh
@@ -0,0 +1,68 @@
+#ifndef PhysicsList_h
+#define PhysicsList_h 1
+
+
+// Geant4 Libraries
+//
+#include "globals.hh"
+#include "G4VModularPhysicsList.hh"
+
+
+class G4VPhysicsConstructor;
+class PhysicsListMessenger;
+
+class StepMax;
+class OpticalPhysics;
+
+
+class PhysicsList: public G4VModularPhysicsList
+{
+  public:
+
+    PhysicsList(G4String);
+    virtual ~PhysicsList();
+
+    void SetCuts();
+    void SetCutForGamma(G4double);
+    void SetCutForElectron(G4double);
+    void SetCutForPositron(G4double);
+
+    void SetStepMax(G4double);
+    StepMax* GetStepMaxProcess();
+    void AddStepMax();
+
+    /// Remove specific physics from physics list.
+    void RemoveFromPhysicsList(const G4String&);
+
+    /// Make sure that the physics list is empty.
+    void ClearPhysics();
+
+    virtual void ConstructParticle();
+    virtual void ConstructProcess();
+
+    // Turn on or off the absorption process
+    void SetAbsorption(G4bool);
+
+    void SetNbOfPhotonsCerenkov(G4int);
+
+    void SetVerbose(G4int);
+
+private:
+
+    G4double fCutForGamma;
+    G4double fCutForElectron;
+    G4double fCutForPositron;
+
+    StepMax* fStepMaxProcess;
+
+    OpticalPhysics* fOpticalPhysics;
+
+    PhysicsListMessenger* fMessenger;
+
+    G4bool fAbsorptionOn;
+    
+    G4VMPLData::G4PhysConstVectorData* fPhysicsVector;
+
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PhysicsListMessenger.hh b/Simular_neutrones_monoenergeticos/include/PhysicsListMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..d6da3fe27ba40e53ee8ad65d46234f73741cb180
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PhysicsListMessenger.hh
@@ -0,0 +1,95 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: PhysicsListMessenger.hh 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//include/PhysicsListMessenger.hh
+/// \brief Definition of the PhysicsListMessenger class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef PhysicsListMessenger_h
+#define PhysicsListMessenger_h 1
+
+#include "globals.hh"
+#include "G4UImessenger.hh"
+
+#include "G4ParticleTable.hh"
+#include "G4ParticleDefinition.hh"
+
+#include "G4DecayTable.hh"
+#include "G4VDecayChannel.hh"
+
+class PhysicsList;
+
+class G4UIdirectory;
+class G4UIcmdWithABool;
+class G4UIcmdWithAString;
+class G4UIcmdWithAnInteger;
+class G4UIcmdWithoutParameter;
+class G4UIcmdWithADoubleAndUnit;
+
+/// Provide control of the physics list and cut parameters
+
+class PhysicsListMessenger : public G4UImessenger
+{
+  public:
+
+    PhysicsListMessenger(PhysicsList* );
+    virtual ~PhysicsListMessenger();
+
+    virtual void SetNewValue(G4UIcommand*, G4String);
+
+  private:
+
+    PhysicsList* fPhysicsList;
+
+    G4UIdirectory* fDirectory;
+    G4UIdirectory* fDecayDirectory;
+
+    G4UIcmdWithABool* fSetAbsorptionCMD;
+
+    G4UIcmdWithAnInteger* fVerboseCmd;
+    G4UIcmdWithAnInteger* fCerenkovCmd;
+
+    G4UIcmdWithADoubleAndUnit* fGammaCutCMD;
+    G4UIcmdWithADoubleAndUnit* fElectCutCMD;
+    G4UIcmdWithADoubleAndUnit* fPosCutCMD;
+    G4UIcmdWithADoubleAndUnit* fAllCutCMD;
+    G4UIcmdWithADoubleAndUnit* fStepMaxCMD;
+
+    G4UIcmdWithAString*        fRemovePhysicsCMD;
+    G4UIcmdWithoutParameter*   fClearPhysicsCMD;
+
+    G4UIcmdWithoutParameter*   fListCMD;
+
+    G4UIcmdWithoutParameter* fPienuCMD;
+    G4UIcmdWithoutParameter* fPimunuCMD;
+
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PrimaryGeneratorAction.hh b/Simular_neutrones_monoenergeticos/include/PrimaryGeneratorAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..487a145cd913fd5469db6cdc22dee0487aefc4a9
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PrimaryGeneratorAction.hh
@@ -0,0 +1,78 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/PrimaryGeneratorAction.hh
+/// \brief Definition of the PrimaryGeneratorAction class
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PrimaryGeneratorAction_h
+#define PrimaryGeneratorAction_h 1
+
+#include "G4VUserPrimaryGeneratorAction.hh"
+#include "globals.hh"
+#include "G4ParticleGun.hh"
+
+#include "PrimarySpectrum.hh"
+
+class G4ParticleGun;
+class G4Event;
+class PrimaryGeneratorMessenger;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
+{
+  public:
+    PrimaryGeneratorAction();
+    virtual ~PrimaryGeneratorAction();
+
+  public:
+    virtual void GeneratePrimaries(G4Event*);
+    const G4ParticleGun* GetParticleGun() const
+		{
+			return fParticleGun;
+		}
+    void SetOptPhotonPolar();
+    void SetOptPhotonPolar(G4double);
+
+  private:
+    G4double enerPart;
+    G4ParticleGun* fParticleGun;
+    PrimarySpectrum parPosDir;
+    PrimaryGeneratorMessenger* fGunMessenger;
+
+
+
+
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif /*PrimaryGeneratorAction_h*/
diff --git a/Simular_neutrones_monoenergeticos/include/PrimaryGeneratorMessenger.hh b/Simular_neutrones_monoenergeticos/include/PrimaryGeneratorMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..1326eebe6c0bbe1471f0cc292e482faa5bf06e54
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PrimaryGeneratorMessenger.hh
@@ -0,0 +1,64 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/PrimaryGeneratorMessenger.hh
+/// \brief Definition of the PrimaryGeneratorMessenger class
+//
+//
+//
+// 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PrimaryGeneratorMessenger_h
+#define PrimaryGeneratorMessenger_h 1
+
+#include "G4UImessenger.hh"
+#include "globals.hh"
+
+class PrimaryGeneratorAction;
+class G4UIdirectory;
+class G4UIcmdWithADoubleAndUnit;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PrimaryGeneratorMessenger: public G4UImessenger
+{
+  public:
+    PrimaryGeneratorMessenger(PrimaryGeneratorAction* );
+    virtual ~PrimaryGeneratorMessenger();
+ 
+    virtual void SetNewValue(G4UIcommand*, G4String);
+ 
+  private:
+    PrimaryGeneratorAction* fAction;
+    G4UIdirectory*                  fGunDir;
+    G4UIcmdWithADoubleAndUnit*      fPolarCmd;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PrimarySpectrum.hh b/Simular_neutrones_monoenergeticos/include/PrimarySpectrum.hh
new file mode 100644
index 0000000000000000000000000000000000000000..fb1ba2e4a456bf29f0fdcedb9a0f8a34e615ec0a
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PrimarySpectrum.hh
@@ -0,0 +1,67 @@
+#ifndef PrimarySpectrum_h
+#define PrimarySpectrum_h 1
+
+
+//Geant libraries
+//
+#include "globals.hh"
+#include "G4ThreeVector.hh"
+
+
+// c++ libraries
+//
+#include <math.h>
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <stdlib.h>
+#include <string>
+#include <iomanip>
+
+
+class PrimarySpectrumMessenger;
+
+
+class PrimarySpectrum
+{
+	public:
+		PrimarySpectrum();
+		~PrimarySpectrum();
+
+		void primaryPosition();
+
+		G4ThreeVector particlePosition;
+		G4ThreeVector particleDirection;
+		G4String parId;
+
+		void primaryMomento();
+    std::string inputFile; //[] = "tmpMachin24h.shw.bz2";
+		int openFile(std::string name);
+
+
+	private:
+		G4double pi;
+		G4double Ro;
+		G4double initx;
+		G4double inity;
+		G4double initz;
+		float r;
+    float theta;
+		
+		G4int crkId;
+		G4double px;
+		G4double py;
+		G4double pz;
+		G4double x;
+		G4double y;
+		G4double z;
+		G4int shwId;
+		G4int prmId;
+		G4double prmEner;
+		G4double prmThe;
+		G4double prmPhi;
+
+		FILE *inFile = NULL;
+    PrimarySpectrumMessenger* fSpectMessenger;
+};
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/PrimarySpectrumMessenger.hh b/Simular_neutrones_monoenergeticos/include/PrimarySpectrumMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..ba7c92e5bc0545ae25b066a372508827da513dcc
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/PrimarySpectrumMessenger.hh
@@ -0,0 +1,30 @@
+#ifndef PrimarySpectrumMessenger_h
+#define PrimarySpectrumMessenger_h 1
+
+
+// Geant4 Libraries
+#include "G4UImessenger.hh"
+#include "globals.hh"
+
+
+class PrimarySpectrum;
+class G4UIdirectory;
+class G4UIcmdWithAString;
+
+
+class PrimarySpectrumMessenger: public G4UImessenger
+{
+  public:
+    PrimarySpectrumMessenger(PrimarySpectrum* spectrum);
+    virtual ~PrimarySpectrumMessenger();
+ 
+    virtual void SetNewValue(G4UIcommand*, G4String);
+    
+  
+  private:
+    PrimarySpectrum* fSpectrum;
+    G4UIdirectory* fSpecDir;
+
+    G4UIcmdWithAString* inFile;
+};
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/RunAction.hh b/Simular_neutrones_monoenergeticos/include/RunAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..794abe985aa71ad447acaf8ef25fd31f4557612a
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/RunAction.hh
@@ -0,0 +1,61 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/RunAction.hh
+/// \brief Definition of the RunAction class
+//
+//
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef RunAction_h
+#define RunAction_h 1
+
+#include "globals.hh"
+#include "G4UserRunAction.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4Timer;
+class G4Run;
+
+class RunAction : public G4UserRunAction
+{
+  public:
+    RunAction();
+    virtual ~RunAction();
+
+  public:
+    virtual void BeginOfRunAction(const G4Run* aRun);
+    virtual void EndOfRunAction(const G4Run* aRun);
+
+  private:
+    G4Timer* fTimer;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif /*RunAction_h*/
diff --git a/Simular_neutrones_monoenergeticos/include/StackingAction.hh b/Simular_neutrones_monoenergeticos/include/StackingAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..db88ffcc73ee035ebd3643faa838b0e4be91c3fe
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/StackingAction.hh
@@ -0,0 +1,28 @@
+#ifndef StackingAction_H
+#define StackingAction_H 1
+
+
+// Geant4 Libraries
+//
+#include "globals.hh"
+#include "G4UserStackingAction.hh"
+
+
+class StackingAction : public G4UserStackingAction
+{
+  public:
+    StackingAction();
+    virtual ~StackingAction();
+
+  public:
+    virtual G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* aTrack);
+    virtual void NewStage();
+    virtual void PrepareNewEvent();
+
+  private:
+    G4int fScintillationCounter;
+    G4int fCerenkovCounter;
+    G4double lengthMax; 
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/StepMax.hh b/Simular_neutrones_monoenergeticos/include/StepMax.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e89fd2e6fe2e28948744dbc237d32e4039a9a8a4
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/StepMax.hh
@@ -0,0 +1,81 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: StepMax.hh 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//include/StepMax.hh
+/// \brief Definition of the StepMax class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#ifndef StepMax_h
+#define StepMax_h 1
+
+#include "globals.hh"
+
+#include "G4Step.hh"
+#include "G4VDiscreteProcess.hh"
+#include "G4ParticleDefinition.hh"
+
+class StepMax : public G4VDiscreteProcess
+{
+  public:
+
+    StepMax(const G4String& processName = "UserStepMax");
+    StepMax(StepMax &);
+
+    virtual ~StepMax();
+
+    virtual G4bool IsApplicable(const G4ParticleDefinition&);
+
+    void SetStepMax(G4double);
+
+    G4double GetStepMax() {return fMaxChargedStep;};
+
+    virtual G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
+                                                  G4double previousStepSize,
+                                                  G4ForceCondition* condition);
+
+    virtual G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&);
+
+  protected:
+
+    G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*);
+
+  private:
+
+    // hide assignment operator as private
+    StepMax & operator=(const StepMax &right);
+    StepMax(const StepMax&);
+
+  private:
+
+    G4double fMaxChargedStep;
+
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/SteppingAction.hh b/Simular_neutrones_monoenergeticos/include/SteppingAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..427d78a546d5f0b972ba08b80408f0b98182e304
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/SteppingAction.hh
@@ -0,0 +1,50 @@
+#ifndef SteppingAction_h
+#define SteppingAction_h 1
+
+
+// Geant4 Libraries
+//
+#include "G4UserSteppingAction.hh"
+#include "globals.hh"
+
+
+// Local Libraries
+//
+#include "DetectorConstruction.hh"
+#include "PMTSD.hh"
+#include "iostream"
+//#include "PrimarySpectrum.hh"
+
+using namespace std;
+/// Stepping action class
+/// 
+
+class SteppingAction : public G4UserSteppingAction
+{
+  public:
+    SteppingAction();
+    virtual ~SteppingAction();
+
+    // method from the base class
+    virtual void UserSteppingAction(const G4Step*);
+
+  private:
+    const DetectorConstruction *detectorConstruction;
+    G4int fEventNumber;
+    G4int alsuelo;
+    G4int generadas;
+    G4double ener_e;
+    G4double ener_g;
+    G4double ener_n;
+    G4double ener_p;
+    G4int detect_g;
+    G4int detect_e;
+    G4double ener_e_det;
+    G4double ener_g_det;
+    G4String thePostPV;
+    G4String thePrePV;
+
+ 
+};
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/SteppingVerbose.hh b/Simular_neutrones_monoenergeticos/include/SteppingVerbose.hh
new file mode 100644
index 0000000000000000000000000000000000000000..93e0e403b63c2c08f7df50b6ac82f89b60570806
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/SteppingVerbose.hh
@@ -0,0 +1,58 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /include/SteppingVerbose.hh
+/// \brief Definition of the SteppingVerbose class
+//
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class SteppingVerbose;
+
+#ifndef SteppingVerbose_h
+#define SteppingVerbose_h 1
+
+#include "G4SteppingVerbose.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class SteppingVerbose : public G4SteppingVerbose
+{
+ public:
+
+   SteppingVerbose();
+   virtual ~SteppingVerbose();
+
+   virtual void StepInfo();
+   virtual void TrackingStarted();
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/Simular_neutrones_monoenergeticos/include/UserEventAction.hh b/Simular_neutrones_monoenergeticos/include/UserEventAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..2d3930f2a60b1bc34347427bb37154328937ee79
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/include/UserEventAction.hh
@@ -0,0 +1,30 @@
+#ifndef UserEventAction_h 
+#define UserEventAction_h 1
+
+
+// Geant4 Libraries
+//
+#include "G4UserEventAction.hh"
+#include "G4Event.hh"
+
+
+// Local Libraries
+//
+
+
+//class G4Event;
+
+
+class UserEventAction : public G4UserEventAction
+{
+  public:
+    UserEventAction();
+    virtual ~UserEventAction();
+
+    virtual void BeginOfEventAction(const G4Event *event);
+    virtual void EndOfEventAction(const G4Event *event);
+
+};
+
+#endif
+
diff --git a/Simular_neutrones_monoenergeticos/init_vis.mac b/Simular_neutrones_monoenergeticos/init_vis.mac
new file mode 100644
index 0000000000000000000000000000000000000000..8e460329fb2abb9c53abacd635ad2afef893027b
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/init_vis.mac
@@ -0,0 +1,16 @@
+# Macro file for the initialization of example B1
+# in interactive session
+#
+# Set some default verbose
+/control/verbose 2
+/control/saveHistory
+/run/verbose 2
+#
+# Change the default number of threads (in multi-threaded mode)
+#/run/numberOfThreads 4
+#
+# Initialize kernel
+/run/initialize
+#
+# Visualization setting
+/control/execute vis.mac
diff --git a/Simular_neutrones_monoenergeticos/input.in b/Simular_neutrones_monoenergeticos/input.in
new file mode 100644
index 0000000000000000000000000000000000000000..689d0ae18bcc372bf66c9440f0f57140c656977c
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/input.in
@@ -0,0 +1,16 @@
+/control/cout/useBuffer true
+/control/verbose 2
+/tracking/verbose 0
+#
+#/gun/particle mu-
+#/gun/energy 5 MeV
+#
+#/gun/momentum 1.0 0. 0. GeV
+/wcd/phys/verbose 0
+#
+#/run/beamOn 38553330 #10h
+#/run/beamOn 23131998 #6h
+#/run/beamOn 11565999 #3h
+#/run/beamOn 3855333 #1h
+#/run/beamOn 10000
+
diff --git a/Simular_neutrones_monoenergeticos/loop.sh b/Simular_neutrones_monoenergeticos/loop.sh
new file mode 100644
index 0000000000000000000000000000000000000000..ca9186267117850961a4b62d9b1768ab09d3bc2a
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/loop.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+srun ./wcd -m input.in
diff --git a/Simular_neutrones_monoenergeticos/loop2.sh b/Simular_neutrones_monoenergeticos/loop2.sh
new file mode 100644
index 0000000000000000000000000000000000000000..17b933d826099ad6be800a0bdbcd7361981df680
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/loop2.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+export OMP_NUM_THREADS=4
+srun ./wcd -m input.in -t 4
diff --git a/Simular_neutrones_monoenergeticos/optPhoton.mac b/Simular_neutrones_monoenergeticos/optPhoton.mac
new file mode 100644
index 0000000000000000000000000000000000000000..3ff011888ef5db028c0695b20c0e2a494bcfbf8c
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/optPhoton.mac
@@ -0,0 +1,14 @@
+/control/verbose 2
+/tracking/verbose 3
+#
+/gun/particle opticalphoton
+/gun/energy 3 eV
+#
+/gun/direction 5 -3 0
+/OpNovice/gun/optPhotonPolar
+/run/beamOn 1
+#
+/gun/position 30 40 50 cm
+/gun/direction 1 1 1
+/OpNovice/gun/optPhotonPolar
+/run/beamOn 1
diff --git a/Simular_neutrones_monoenergeticos/salidasimu.shw.bz2 b/Simular_neutrones_monoenergeticos/salidasimu.shw.bz2
new file mode 100644
index 0000000000000000000000000000000000000000..c66619f550c1a7c22a66799662a56cbbd125aa94
Binary files /dev/null and b/Simular_neutrones_monoenergeticos/salidasimu.shw.bz2 differ
diff --git a/Simular_neutrones_monoenergeticos/src/ActionInitialization.cc b/Simular_neutrones_monoenergeticos/src/ActionInitialization.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7a5837424942987a5da73a659c10a19ea5d66f8f
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/ActionInitialization.cc
@@ -0,0 +1,77 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ActionInitialization.cc 68058 2013-03-13 14:47:43Z gcosmo $
+//
+/// \file ActionInitialization.cc
+/// \brief Implementation of the ActionInitialization class
+
+#include "ActionInitialization.hh"
+#include "PrimaryGeneratorAction.hh"
+#include "RunAction.hh"
+#include "SteppingAction.hh"
+#include "StackingAction.hh"
+#include "SteppingVerbose.hh"
+#include "UserEventAction.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ActionInitialization::ActionInitialization()
+ : G4VUserActionInitialization()
+{
+   //G4cout << "...ActionInitialization..." << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ActionInitialization::~ActionInitialization()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ActionInitialization::BuildForMaster() const
+{
+  SetUserAction(new RunAction());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ActionInitialization::Build() const
+{
+  SetUserAction(new PrimaryGeneratorAction());
+  SetUserAction(new RunAction());
+  SetUserAction(new UserEventAction());
+  SetUserAction(new SteppingAction());
+  SetUserAction(new StackingAction());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4VSteppingVerbose* ActionInitialization::InitializeSteppingVerbose() const
+{
+  return new SteppingVerbose();
+}  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_neutrones_monoenergeticos/src/DetectorConstruction.cc b/Simular_neutrones_monoenergeticos/src/DetectorConstruction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..7c70a3a97b28da46dee839dcfa9fc42c21a8dc4d
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/DetectorConstruction.cc
@@ -0,0 +1,516 @@
+
+// Geant4 Libraries
+//
+#include "G4Material.hh"
+#include "G4Element.hh"
+
+#include "G4LogicalBorderSurface.hh"
+#include "G4LogicalSkinSurface.hh"
+#include "G4OpticalSurface.hh"
+#include "G4MultiFunctionalDetector.hh"
+#include "G4VPrimitiveScorer.hh"
+#include "G4PSEnergyDeposit.hh"
+#include "G4VPhysicalVolume.hh"
+
+#include "G4Box.hh"
+#include "G4LogicalVolume.hh"
+#include "G4ThreeVector.hh"
+#include "G4PVPlacement.hh"
+#include "G4SystemOfUnits.hh"
+#include "G4NistManager.hh"
+#include "G4UnitsTable.hh"
+#include "G4PhysicalConstants.hh"
+
+#include "G4RunManager.hh"
+#include "G4Cons.hh"
+#include "G4Orb.hh"
+#include "G4Sphere.hh"
+#include "G4Trd.hh"
+
+// Local Libraries
+//
+#include "DetectorConstruction.hh"
+#include "PMTSD.hh"
+
+DetectorConstruction::DetectorConstruction()
+ : G4VUserDetectorConstruction()
+{ 
+ /*   O = H = C = NULL;
+  water = glass = alum = NULL;
+  expHall_mat = glass = alum = NULL;
+*/ 
+}
+
+
+DetectorConstruction::~DetectorConstruction()
+{}
+
+
+// ****************************
+// Doing Elements and Materials
+// ****************************
+G4VPhysicalVolume* DetectorConstruction::Construct()
+{
+
+G4NistManager* nist = G4NistManager::Instance();
+
+G4double z, a, density;
+G4String name, symbol;
+G4int ncomponents, natoms;
+
+a = 1.01*g/mole;
+G4Element* elH  = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
+
+a = 16.00*g/mole;
+G4Element* elO  = new G4Element(name="Oxygen"  ,symbol="O" , z= 8., a);
+
+a= 14.00*g/mole;
+G4Element* elN = new G4Element(name="Nitrogen", symbol="N", z= 7., a);
+
+a = 26.98*g/mole;
+G4Element* elAl = new G4Element(name="Aluminium", symbol="Al", z=13., a);
+
+a = 28.09*g/mole;
+G4Element* elSi = new G4Element(name="Silicon", symbol="Si", z=14., a);
+
+a = 22.98*g/mole;
+G4Element* elNa = new G4Element(name="Sodium", symbol="Na", z=11., a);
+
+a = 39.09*g/mole;
+G4Element* elK = new G4Element(name="Potassium", symbol="K", z=19., a);
+
+a = 40.07*g/mole;
+G4Element* elCa = new G4Element(name="Calcium", symbol="Ca", z=20., a);
+
+a = 24.31*g/mole;
+G4Element* elMg = new G4Element(name="Magnesium", symbol="Mg", z=12., a);
+
+a = 32.07*g/mole;
+G4Element* elS= new G4Element(name="Sulphur", symbol="S", z=16., a);
+
+a = 30.97*g/mole;
+G4Element* elP = new G4Element(name="Phosphorus", symbol="P", z=15., a);
+
+a = 47.87*g/mole;
+G4Element* elTi = new G4Element(name="Titanium", symbol="Ti", z=22., a);
+
+a = 55.85*g/mole;
+G4Element* elFe = new G4Element(name="Iron"    ,symbol="Fe", z=26., a);
+
+a=12.00*g/mole;
+G4Element* elC =new G4Element(name="Carbon",symbol="C", z=6., a);
+
+//TIPOS DE SUELO
+//Suelo base seca
+density=2700*kg/m3;
+G4Material* SueloBS= new G4Material(name="SueloBS",density, ncomponents=14);
+SueloBS->AddElement(elO, fractionmass=49*perCent);
+SueloBS->AddElement(elSi, fractionmass=33*perCent);
+SueloBS->AddElement(elAl, fractionmass=7.13*perCent);
+SueloBS->AddElement(elNa, fractionmass=0.63*perCent);
+SueloBS->AddElement(elK, fractionmass=1.36*perCent);
+SueloBS->AddElement(elCa, fractionmass=1.37*perCent);
+SueloBS->AddElement(elFe, fractionmass=3.80*perCent);
+SueloBS->AddElement(elMg, fractionmass=0.60*perCent);
+SueloBS->AddElement(elC, fractionmass=2.0*perCent);
+SueloBS->AddElement(elS, fractionmass=0.08*perCent);
+SueloBS->AddElement(elN, fractionmass=0.10*perCent);
+SueloBS->AddElement(elP, fractionmass=0.09*perCent);
+SueloBS->AddElement(elTi, fractionmass=0.46*perCent);
+SueloBS->AddElement(elH, fractionmass=0.38*perCent);
+
+
+//Agua
+G4Material* elH2O= nist->FindOrBuildMaterial("G4_WATER");
+
+//Suelo base humeda 1, 5% humedad
+density=2700*kg/m3;
+G4Material* SueloBH5= new G4Material(name="SueloBH5",density, ncomponents=2); 
+SueloBH5->AddMaterial(SueloBS, fractionmass=95*perCent);
+SueloBH5->AddMaterial(elH2O, fractionmass=5*perCent);
+
+//Suelo base humeda 1, 10% humedad
+density=2700*kg/m3;
+G4Material* SueloBH10= new G4Material(name="SueloBH10",density, ncomponents=2); 
+SueloBH10->AddMaterial(SueloBS, fractionmass=90*perCent);
+SueloBH10->AddMaterial(elH2O, fractionmass=10*perCent);
+
+//Suelo base humeda 1, 15% humedad
+density=2700*kg/m3;
+G4Material* SueloBH15= new G4Material(name="SueloBH15",density, ncomponents=2); 
+SueloBH15->AddMaterial(SueloBS, fractionmass=85*perCent);
+SueloBH15->AddMaterial(elH2O, fractionmass=15*perCent);
+
+/*//Suelo base humeda 1, 10% humedad
+density=2700*kg/m3;
+G4Material* SueloBH1= new G4Material(name="SueloBH1",density, ncomponents=2); 
+SueloBH1->AddMaterial(SueloBS, fractionmass=90*perCent);
+SueloBH1->AddMaterial(elH2O, fractionmass=10*perCent);
+*/
+//Suelo base humeda 2, 25% humedad
+density=2700*kg/m3;
+G4Material* SueloBH25= new G4Material(name="SueloBH25",density, ncomponents=2);  
+SueloBH25->AddMaterial(SueloBS, fractionmass=75*perCent);
+SueloBH25->AddMaterial(elH2O, fractionmass=25*perCent);
+
+
+//Suelo base humeda, 30%humedad
+density=2700*kg/m3;
+G4Material* SueloBH30= new G4Material(name="SueloBH30",density, ncomponents=2); 
+SueloBH30->AddMaterial(SueloBS, fractionmass=70*perCent);
+SueloBH30->AddMaterial(elH2O, fractionmass=30*perCent);
+
+// ****************************
+// Doing the geometries
+// ****************************
+   
+G4bool checkOverlaps = true;
+
+  //
+  // First World
+  //
+  G4double fworld_sizeX = 105.*m;
+  G4double fworld_sizeY = 105.*m;
+  G4double fworld_sizeZ = 10*m;
+  G4Material* fworld_mat = nist->FindOrBuildMaterial("G4_AIR");
+  
+  G4Box* fsolidWorld =    
+    new G4Box("fWorld",
+		fworld_sizeX,
+		fworld_sizeY,
+		fworld_sizeZ);    
+      
+  G4LogicalVolume* flogicWorld =                   
+    new G4LogicalVolume(fsolidWorld, 
+			fworld_mat,
+               		"fWorld",
+			0,0,0);  
+         
+  G4VPhysicalVolume* fphysWorld =                         
+    new G4PVPlacement(0,                    
+                      G4ThreeVector(),       
+                      flogicWorld,   
+                      "fWorld",  
+                      0,   
+                      false,   
+                      0,    
+                      checkOverlaps);    
+
+
+  //     
+  // World
+  //
+  G4double world_sizeX = 102.*m;
+  G4double world_sizeY = 102.*m;
+  G4double world_sizeZ = 9.5*m;
+  G4Material* world_mat = nist->FindOrBuildMaterial("G4_AIR");
+  
+  G4Box* solidWorld =    
+    new G4Box("World",
+		world_sizeX,
+		world_sizeY,
+		world_sizeZ);    
+      
+  G4LogicalVolume* logicWorld =                   
+    new G4LogicalVolume(solidWorld, 
+			world_mat,
+               		"World",
+			0,0,0);  
+                                   
+  new G4PVPlacement(0,                    
+                      G4ThreeVector(),       
+                      logicWorld,   
+                      "World",  
+                      flogicWorld,   
+                      false,   
+                      0,    
+                      checkOverlaps);    
+  //     
+  //Suelo_0
+  //     
+  G4double suelo_0_sizeX = 100*m;
+  G4double suelo_0_sizeY = 100*m;
+  G4double suelo_0_sizeZ = 25*cm;
+  
+  G4Box* solidsuelo_0 =    
+    new G4Box("suelo_0",
+       		suelo_0_sizeX,
+		suelo_0_sizeY,
+		suelo_0_sizeZ);     
+      
+  G4LogicalVolume*  logicsuelo_0 =                         
+    new G4LogicalVolume(solidsuelo_0, 
+                        SueloBH15,//cambiar aquí el material del suelo
+                        "suelo_0",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0.,25.*cm),       
+                      logicsuelo_0,          
+                      "suelo_0",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+
+
+
+  //     
+  //Suelo_1
+  //     
+  G4double suelo_1_sizeX = 100*m;
+  G4double suelo_1_sizeY = 100*m;
+  G4double suelo_1_sizeZ = 15*cm;
+  
+  G4Box* solidsuelo_1 =    
+    new G4Box("suelo_1",
+       		suelo_1_sizeX,
+		suelo_1_sizeY,
+		suelo_1_sizeZ);     
+      
+  G4LogicalVolume*  logicsuelo_1 =                         
+    new G4LogicalVolume(solidsuelo_1, 
+                        SueloBH5,//cambiar aquí el material del suelo
+                        "suelo_1",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0.,-15.*cm),       
+                      logicsuelo_1,          
+                      "suelo_1",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+  //     
+  //Suelo_2
+  //     
+  G4double suelo_2_sizeX = 100*m;
+  G4double suelo_2_sizeY = 100*m;
+  G4double suelo_2_sizeZ = 10*cm;
+  
+  G4Box* solidsuelo_2 =    
+    new G4Box("suelo_2",
+       		suelo_2_sizeX,
+		suelo_2_sizeY,
+		suelo_2_sizeZ);     
+      
+  G4LogicalVolume*  logicsuelo_2 =                         
+    new G4LogicalVolume(solidsuelo_2, 
+                        SueloBS,//cambiar aquí el material del suelo
+                        "suelo_2",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0.,-40.*cm),       
+                      logicsuelo_2,          
+                      "suelo_2",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+
+
+
+  //
+  //detector_0
+  //
+  G4double detector_0_sizeX = 0.5*cm;
+  G4double detector_0_sizeY = 100*m;
+  G4double detector_0_sizeZ = 1*m;
+  
+  G4Box* soliddetector_0 =    
+    new G4Box("detector_0",
+       		detector_0_sizeX,
+		detector_0_sizeY,
+		detector_0_sizeZ);     
+                
+  G4LogicalVolume* logicdetector_0 =                         
+    new G4LogicalVolume(soliddetector_0, 
+                        world_mat,     
+                        "detector_0",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(85.*m,0., 1.5*m),       
+                      logicdetector_0,          
+                      "detector_0",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);   
+  //
+  //detector_1
+  //
+  G4double detector_1_sizeX = 0.5*cm;
+  G4double detector_1_sizeY = 100*m;
+  G4double detector_1_sizeZ = 1*m;
+  
+  G4Box* soliddetector_1 =    
+    new G4Box("detector_1",
+       		detector_1_sizeX,
+		detector_1_sizeY,
+		detector_1_sizeZ);     
+                
+  G4LogicalVolume* logicdetector_1 =                         
+    new G4LogicalVolume(soliddetector_1, 
+                        world_mat,     
+                        "detector_1",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(70.*m,0., 1.5*m),       
+                      logicdetector_1,          
+                      "detector_1",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+
+  //
+  //detector_2
+  //
+  G4double detector_2_sizeX = 0.5*cm;
+  G4double detector_2_sizeY = 100*m;
+  G4double detector_2_sizeZ = 1*m;
+ 
+  G4Box* soliddetector_2 =    
+    new G4Box("detector_2",
+       		detector_2_sizeX,
+		detector_2_sizeY,
+		detector_2_sizeZ);     
+                
+  G4LogicalVolume* logicdetector_2 =                         
+    new G4LogicalVolume(soliddetector_2, 
+                        world_mat,     
+                        "detector_2",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(50.*m,0., 1.5*m),       
+                      logicdetector_2,          
+                      "detector_2",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+
+
+  //
+  //detector_3
+  //
+  G4double detector_3_sizeX = 0.5*cm;
+  G4double detector_3_sizeY = 100*m;
+  G4double detector_3_sizeZ = 1*m;
+ 
+  G4Box* soliddetector_3 =    
+    new G4Box("detector_3",
+       		detector_3_sizeX,
+		detector_3_sizeY,
+		detector_3_sizeZ);     
+                
+  G4LogicalVolume* logicdetector_3 =                         
+    new G4LogicalVolume(soliddetector_3, 
+                        world_mat,     
+                        "detector_3",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0., 1.5*m),       
+                      logicdetector_3,          
+                      "detector_3",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+  //
+  //detector_4
+  //
+  G4double detector_4_sizeX = 0.5*cm;
+  G4double detector_4_sizeY = 100*m;
+  G4double detector_4_sizeZ = 1*m;
+ 
+  G4Box* soliddetector_4 =    
+    new G4Box("detector_4",
+       		detector_4_sizeX,
+		detector_4_sizeY,
+		detector_4_sizeZ);     
+                
+  G4LogicalVolume* logicdetector_4 =                         
+    new G4LogicalVolume(soliddetector_4, 
+                        world_mat,     
+                        "detector_4",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(-50.*m,0., 1.5*m),       
+                      logicdetector_4,          
+                      "detector_4",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+
+  //
+  //detector_5
+  //
+  G4double detector_5_sizeX = 0.5*cm;
+  G4double detector_5_sizeY = 100*m;
+  G4double detector_5_sizeZ = 1*m;
+ 
+  G4Box* soliddetector_5 =    
+    new G4Box("detector_5",
+       		detector_5_sizeX,
+		detector_5_sizeY,
+		detector_5_sizeZ);     
+                
+  G4LogicalVolume* logicdetector_5 =                         
+    new G4LogicalVolume(soliddetector_5, 
+                        world_mat,     
+                        "detector_5",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(-100.*m,0., 1.5*m),       
+                      logicdetector_5,          
+                      "detector_5",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);
+  //
+  //Ground
+  //
+  G4double ground_sizeX = 100*m;
+  G4double ground_sizeY = 100*m;
+  G4double ground_sizeZ = 0.5*cm;
+  
+  G4Box* solidground =    
+    new G4Box("ground",
+       		ground_sizeX,
+		ground_sizeY,
+		ground_sizeZ);     
+                
+  G4LogicalVolume* logicground =                         
+    new G4LogicalVolume(solidground, 
+                        world_mat,     
+                        "ground",
+			0,0,0); 
+                                   
+    new G4PVPlacement(0,                     
+                      G4ThreeVector(0.,0.,-51*cm),       
+                      logicground,          
+                      "ground",        
+                      logicWorld,         
+                      false,                
+                      0,                     
+                      checkOverlaps);   
+  
+
+     
+  
+  //always return the physical World
+  return fphysWorld;
+
+
+}
diff --git a/Simular_neutrones_monoenergeticos/src/ExtraPhysics.cc b/Simular_neutrones_monoenergeticos/src/ExtraPhysics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..b78afe07a6b9eb24c34266ba33e6ac8e5a447750
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/ExtraPhysics.cc
@@ -0,0 +1,93 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: ExtraPhysics.cc 100260 2016-10-17 08:03:33Z gcosmo $
+//
+/// \file optical//src/ExtraPhysics.cc
+/// \brief Implementation of the ExtraPhysics class
+//
+//
+#include "globals.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4ParticleTable.hh"
+#include "G4ProcessManager.hh"
+
+#include "G4UserSpecialCuts.hh"
+#include "G4StepLimiter.hh"
+
+#include "ExtraPhysics.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ExtraPhysics::ExtraPhysics()
+    : G4VPhysicsConstructor("Extra") { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ExtraPhysics::~ExtraPhysics() { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ExtraPhysics::ConstructParticle() { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void ExtraPhysics::ConstructProcess()
+{
+    G4cout << "ExtraPhysics:: Add Extra Physics Processes"
+              << G4endl;
+
+    auto particleIterator=GetParticleIterator();
+    particleIterator->reset();
+
+    while ((*particleIterator)()) {
+        G4ParticleDefinition* particle = particleIterator->value();
+        G4ProcessManager* pmanager = particle->GetProcessManager();
+        G4String particleName = particle->GetParticleName();
+        G4double charge = particle->GetPDGCharge();
+
+        if (!pmanager) {
+            std::ostringstream o;
+            o << "Particle " << particleName << "without a Process Manager";
+            G4Exception("ExtraPhysics::ConstructProcess()","",
+                         FatalException,o.str().c_str());
+        }
+
+        if (particleName == "opticalphoton") break;
+
+        if (charge != 0.0) {
+           // All charged particles should have a step limiter
+           // to make sure that the steps do not get too long.
+           pmanager->AddDiscreteProcess(new G4StepLimiter());
+           pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
+        } else if (particleName == "neutron") {
+          // time cuts for ONLY neutrons:
+          pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
+        } else {
+          // Energy cuts for all other neutral particles
+          pmanager->AddDiscreteProcess(new G4UserSpecialCuts());
+        }
+    }
+}
diff --git a/Simular_neutrones_monoenergeticos/src/OpticalPhysics.cc b/Simular_neutrones_monoenergeticos/src/OpticalPhysics.cc
new file mode 100644
index 0000000000000000000000000000000000000000..263312e43e9025307987064ba72526ac4abb43a9
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/OpticalPhysics.cc
@@ -0,0 +1,147 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: OpticalPhysics.cc 100260 2016-10-17 08:03:33Z gcosmo $
+//
+/// \file optical//src/OpticalPhysics.cc
+/// \brief Implementation of the OpticalPhysics class
+//
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo....
+
+#include "G4LossTableManager.hh"
+#include "G4EmSaturation.hh"
+
+#include "OpticalPhysics.hh"
+
+OpticalPhysics::OpticalPhysics(G4bool toggle)
+    : G4VPhysicsConstructor("Optical")
+{
+  fProcess                = NULL;
+  fScintProcess              = NULL;
+  fCerenkovProcess           = NULL;
+  fBoundaryProcess           = NULL;
+  fAbsorptionProcess         = NULL;
+  fRayleighScattering        = NULL;
+  fMieHGScatteringProcess    = NULL;
+
+  fAbsorptionOn              = toggle;
+}
+
+OpticalPhysics::~OpticalPhysics() { }
+
+#include "G4OpticalPhoton.hh"
+
+void OpticalPhysics::ConstructParticle()
+{
+  G4OpticalPhoton::OpticalPhotonDefinition();
+}
+
+#include "G4ProcessManager.hh"
+
+void OpticalPhysics::ConstructProcess()
+{
+    G4cout << "OpticalPhysics:: Add Optical Physics Processes"
+           << G4endl;
+
+  fProcess = new G4OpWLS();
+
+  fScintProcess = new G4Scintillation();
+  fScintProcess->SetScintillationYieldFactor(1.);
+  fScintProcess->SetTrackSecondariesFirst(true);
+
+  fCerenkovProcess = new G4Cerenkov();
+  fCerenkovProcess->SetMaxNumPhotonsPerStep(300);
+  fCerenkovProcess->SetTrackSecondariesFirst(true);
+
+  fAbsorptionProcess      = new G4OpAbsorption();
+  fRayleighScattering     = new G4OpRayleigh();
+  fMieHGScatteringProcess = new G4OpMieHG();
+  fBoundaryProcess        = new G4OpBoundaryProcess();
+
+  G4ProcessManager* pManager =
+                G4OpticalPhoton::OpticalPhoton()->GetProcessManager();
+
+  if (!pManager) {
+     std::ostringstream o;
+     o << "Optical Photon without a Process Manager";
+     G4Exception("OpticalPhysics::ConstructProcess()","",
+                  FatalException,o.str().c_str());
+  }
+
+  if (fAbsorptionOn) pManager->AddDiscreteProcess(fAbsorptionProcess);
+
+  //pManager->AddDiscreteProcess(fRayleighScattering);
+  //pManager->AddDiscreteProcess(fMieHGScatteringProcess);
+
+  pManager->AddDiscreteProcess(fBoundaryProcess);
+
+  fProcess->UseTimeProfile("delta");
+  //fProcess->UseTimeProfile("exponential");
+
+  pManager->AddDiscreteProcess(fProcess);
+
+  fScintProcess->SetScintillationYieldFactor(1.);
+  fScintProcess->SetScintillationExcitationRatio(0.0);
+  fScintProcess->SetTrackSecondariesFirst(true);
+
+  // Use Birks Correction in the Scintillation process
+
+  G4EmSaturation* emSaturation = G4LossTableManager::Instance()->EmSaturation();
+  fScintProcess->AddSaturation(emSaturation);
+
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while ( (*particleIterator)() ){
+
+    G4ParticleDefinition* particle = particleIterator->value();
+    G4String particleName = particle->GetParticleName();
+
+    pManager = particle->GetProcessManager();
+    if (!pManager) {
+       std::ostringstream o;
+       o << "Particle " << particleName << "without a Process Manager";
+       G4Exception("OpticalPhysics::ConstructProcess()","",
+                    FatalException,o.str().c_str());
+    }
+
+    if(fCerenkovProcess->IsApplicable(*particle)){
+      pManager->AddProcess(fCerenkovProcess);
+      pManager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
+    }
+    if(fScintProcess->IsApplicable(*particle)){
+      pManager->AddProcess(fScintProcess);
+      pManager->SetProcessOrderingToLast(fScintProcess,idxAtRest);
+      pManager->SetProcessOrderingToLast(fScintProcess,idxPostStep);
+    }
+
+  }
+}
+
+void OpticalPhysics::SetNbOfPhotonsCerenkov(G4int maxNumber)
+{
+  fCerenkovProcess->SetMaxNumPhotonsPerStep(maxNumber);
+}
diff --git a/Simular_neutrones_monoenergeticos/src/PMTHit.cc b/Simular_neutrones_monoenergeticos/src/PMTHit.cc
new file mode 100644
index 0000000000000000000000000000000000000000..3a6a67c25b5919c7339adce2b4c29c4b8d26029e
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PMTHit.cc
@@ -0,0 +1,110 @@
+
+// Geant4 Libraries
+// 
+#include "G4SystemOfUnits.hh"
+#include "Randomize.hh"
+
+
+// Local Libraries
+// 
+#include "PMTHit.hh"
+
+
+G4ThreadLocal G4Allocator<PMTHit>* PMTHitAllocator=0;
+
+
+PMTHit::PMTHit()
+  : waveLength(0.)
+{}
+
+
+PMTHit::~PMTHit()
+{}
+
+G4int PMTHit::askDetected(G4double phoEner)
+{
+
+  this->GetWavelength(phoEner);
+  
+  if(waveLength >= 250.*nm && waveLength < 300.*nm)
+  {
+    if(G4UniformRand() <= 0.01)
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 300.*nm && waveLength < 350.*nm)
+  {
+    if(G4UniformRand() <= 0.03) 
+      return 1;
+    else
+      return 0;
+  }
+  else if(waveLength >= 350.*nm && waveLength < 400.*nm)
+  {
+    if(G4UniformRand() <= 0.2) 
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 400.*nm && waveLength < 450.*nm)
+  {
+    if(G4UniformRand() <= 0.25)
+      return 1;
+    else
+      return 0;
+  }
+  else if(waveLength >= 450.*nm && waveLength < 500.*nm)
+  {
+    if(G4UniformRand() <= 0.2) 
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 500.*nm && waveLength < 550.*nm)
+  {
+    if(G4UniformRand() <= 0.14) 
+      return 1;
+    else
+      return 0;
+  }
+  else if(waveLength >= 550.*nm && waveLength < 600.*nm)
+  {
+    if(G4UniformRand() <= 0.07)
+      return 1;
+    else 
+      return
+        0;
+  }
+  else if(waveLength >= 600.*nm && waveLength < 650.*nm)
+  {
+    if(G4UniformRand() <= 0.03) 
+      return 1;
+    else 
+      return 0;
+  }
+  else if(waveLength >= 650.*nm && waveLength < 700.*nm)
+  {
+    if(G4UniformRand() <= 0.06)
+      return 1;
+    else 
+      return 0;
+  }
+  else
+   return 0;
+}
+
+
+void PMTHit::GetWavelength(G4double ener)
+{
+  waveLength = (0.00124 / ener)*nm;
+ /*G4cout << "lambda"
+	<< " " 
+        << waveLength
+	<< " " 
+	<< "energia"
+	<< " " 
+        << ener
+        << G4endl;*/
+}
+
diff --git a/Simular_neutrones_monoenergeticos/src/PMTSD.cc b/Simular_neutrones_monoenergeticos/src/PMTSD.cc
new file mode 100644
index 0000000000000000000000000000000000000000..aa80ffbe3b463e4744823a8d2213ebccf05196e3
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PMTSD.cc
@@ -0,0 +1,56 @@
+
+// Geant4 Libraries
+//
+#include "G4VPhysicalVolume.hh"
+#include "G4LogicalVolume.hh"
+#include "G4Track.hh"
+#include "G4Step.hh"
+#include "G4VTouchable.hh"
+#include "G4TouchableHistory.hh"
+#include "G4ios.hh"
+#include "G4ParticleTypes.hh"
+#include "G4ParticleDefinition.hh"
+
+
+// Local Libraries
+//
+#include "PMTSD.hh"
+#include "PMTHit.hh"
+#include "DetectorConstruction.hh"
+//#include "UserTrackInformation.hh"
+
+
+// C++ Libraries
+//
+
+
+PMTSD::PMTSD()
+  : phoHit(),
+  phoDetec(0.)
+//  : G4VSensitiveDetector(name),
+{
+  //G4cout << "...PMTSD..." << G4endl;
+  phoHit = new PMTHit;
+  kinEnergy = 0.;
+  phoDetec = 0;
+}
+
+
+PMTSD::~PMTSD()
+{}
+
+
+G4int PMTSD::ProcessHits(const G4Step* aStep)
+{
+  kinEnergy = aStep->GetTrack()->GetTotalEnergy();
+  phoDetec = phoHit->askDetected(kinEnergy);
+
+  return phoDetec;
+}
+
+
+void PMTSD::resetPMTSD()
+{
+  phoDetec = 0;
+  kinEnergy = 0.;
+}
diff --git a/Simular_neutrones_monoenergeticos/src/PhysicsList.cc b/Simular_neutrones_monoenergeticos/src/PhysicsList.cc
new file mode 100644
index 0000000000000000000000000000000000000000..1d6ec9b85a3bef4761e7540dc69ba1493e2f45a3
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PhysicsList.cc
@@ -0,0 +1,309 @@
+// Geant4 Libraries
+//
+#include "G4LossTableManager.hh"
+#include "G4ProcessManager.hh"
+#include "G4ParticleTypes.hh"
+#include "G4ParticleTable.hh"
+#include "FTFP_BERT.hh"
+#include "QGSP_BERT_HP.hh"
+#include "G4Gamma.hh"
+#include "G4Electron.hh"
+#include "G4Positron.hh"
+#include "G4ProcessTable.hh"
+#include "G4PionDecayMakeSpin.hh"
+#include "G4DecayWithSpin.hh"
+#include "G4DecayTable.hh"
+#include "G4MuonDecayChannelWithSpin.hh"
+#include "G4MuonRadiativeDecayChannelWithSpin.hh"
+#include "G4RadioactiveDecayPhysics.hh"
+#include "G4SystemOfUnits.hh"
+
+
+// Local Libraries
+// 
+#include "PhysicsListMessenger.hh"
+#include "StepMax.hh"
+#include "PhysicsList.hh"
+#include "ExtraPhysics.hh"
+#include "OpticalPhysics.hh"
+
+
+
+PhysicsList::PhysicsList(G4String physName) : G4VModularPhysicsList()
+{
+    G4LossTableManager::Instance();
+
+    defaultCutValue  = 1.*mm;
+    fCutForGamma     = defaultCutValue;
+    fCutForElectron  = defaultCutValue;
+    fCutForPositron  = defaultCutValue;
+
+//    G4PhysListFactory factory;
+    G4VModularPhysicsList* phys = NULL;
+    if (physName == "QGSP_BERT_HP") {
+       phys = new QGSP_BERT_HP;
+    } else {
+       phys = new FTFP_BERT;
+    }
+//    if (factory.IsReferencePhysList(physName)) {
+//       phys = factory.GetReferencePhysList(physName);
+//       if(!phys)G4Exception("PhysicsList::PhysicsList","InvalidSetup",
+//                            FatalException,"PhysicsList does not exist");
+       fMessenger = new PhysicsListMessenger(this);
+//    }
+
+    for (G4int i = 0; ; ++i) {
+       G4VPhysicsConstructor* elem =
+                  const_cast<G4VPhysicsConstructor*> (phys->GetPhysics(i));
+       if (elem == NULL) break;
+       G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl;
+       RegisterPhysics(elem);
+    }
+
+    fAbsorptionOn = true;
+    
+    RegisterPhysics(new ExtraPhysics());
+    RegisterPhysics(fOpticalPhysics = new OpticalPhysics(fAbsorptionOn));
+
+    RegisterPhysics(new G4RadioactiveDecayPhysics());
+
+    fStepMaxProcess = new StepMax();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsList::~PhysicsList()
+{
+    delete fMessenger;
+
+    delete fStepMaxProcess;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ClearPhysics()
+{
+    for (G4PhysConstVector::iterator p  = fPhysicsVector->begin();
+                                     p != fPhysicsVector->end(); ++p) {
+        delete (*p);
+    }
+    fPhysicsVector->clear();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructParticle()
+{
+    G4VModularPhysicsList::ConstructParticle();
+
+    G4DecayTable* MuonPlusDecayTable = new G4DecayTable();
+    MuonPlusDecayTable -> Insert(new
+                           G4MuonDecayChannelWithSpin("mu+",0.986));
+    MuonPlusDecayTable -> Insert(new
+                           G4MuonRadiativeDecayChannelWithSpin("mu+",0.014));
+    G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable);
+
+    G4DecayTable* MuonMinusDecayTable = new G4DecayTable();
+    MuonMinusDecayTable -> Insert(new
+                            G4MuonDecayChannelWithSpin("mu-",0.986));
+    MuonMinusDecayTable -> Insert(new
+                            G4MuonRadiativeDecayChannelWithSpin("mu-",0.014));
+    G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable);
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructProcess()
+{
+    G4VModularPhysicsList::ConstructProcess();
+
+    SetVerbose(0);
+
+    G4DecayWithSpin* decayWithSpin = new G4DecayWithSpin();
+
+    G4ProcessTable* processTable = G4ProcessTable::GetProcessTable();
+
+    G4VProcess* decay;
+    decay = processTable->FindProcess("Decay",G4MuonPlus::MuonPlus());
+
+    G4ProcessManager* pManager;
+    pManager = G4MuonPlus::MuonPlus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(decayWithSpin);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
+      pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
+    }
+
+    decay = processTable->FindProcess("Decay",G4MuonMinus::MuonMinus());
+
+    pManager = G4MuonMinus::MuonMinus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(decayWithSpin);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(decayWithSpin, idxPostStep);
+      pManager ->SetProcessOrdering(decayWithSpin, idxAtRest);
+    }
+
+    G4PionDecayMakeSpin* poldecay = new G4PionDecayMakeSpin();
+
+    decay = processTable->FindProcess("Decay",G4PionPlus::PionPlus());
+
+    pManager = G4PionPlus::PionPlus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(poldecay);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(poldecay, idxPostStep);
+      pManager ->SetProcessOrdering(poldecay, idxAtRest);
+    }
+
+    decay = processTable->FindProcess("Decay",G4PionMinus::PionMinus());
+
+    pManager = G4PionMinus::PionMinus()->GetProcessManager();
+
+    if (pManager) {
+      if (decay) pManager->RemoveProcess(decay);
+      pManager->AddProcess(poldecay);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pManager ->SetProcessOrdering(poldecay, idxPostStep);
+      pManager ->SetProcessOrdering(poldecay, idxAtRest);
+    }
+
+    AddStepMax();
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::RemoveFromPhysicsList(const G4String& name)
+{
+    G4bool success = false;
+    for (G4PhysConstVector::iterator p  = fPhysicsVector->begin();
+                                     p != fPhysicsVector->end(); ++p) {
+        G4VPhysicsConstructor* e = (*p);
+        if (e->GetPhysicsName() == name) {
+           fPhysicsVector->erase(p);
+           success = true;
+           break;
+        }
+    }
+    if (!success) {
+       G4ExceptionDescription message;
+       message << "PhysicsList::RemoveFromEMPhysicsList "<< name << "not found";
+       G4Exception("example PhysicsList::RemoveFromPhysicsList()",
+       "ExamPhysicsList01",FatalException,message);
+    }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetAbsorption(G4bool toggle)
+{
+       fAbsorptionOn = toggle;
+       RemoveFromPhysicsList("Optical");
+       fPhysicsVector->
+                    push_back(fOpticalPhysics = new OpticalPhysics(toggle));
+       fOpticalPhysics->ConstructProcess();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCuts()
+{
+    if (verboseLevel >0) {
+        G4cout << "PhysicsList::SetCuts:";
+        G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length")
+               << G4endl;
+    }
+
+    // set cut values for gamma at first and for e- second and next for e+,
+    // because some processes for e+/e- need cut values for gamma
+    SetCutValue(fCutForGamma, "gamma");
+    SetCutValue(fCutForElectron, "e-");
+    SetCutValue(fCutForPositron, "e+");
+
+    if (verboseLevel>0) DumpCutValuesTable();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCutForGamma(G4double cut)
+{
+    fCutForGamma = cut;
+    SetParticleCuts(fCutForGamma, G4Gamma::Gamma());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCutForElectron(G4double cut)
+{
+    fCutForElectron = cut;
+    SetParticleCuts(fCutForElectron, G4Electron::Electron());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetCutForPositron(G4double cut)
+{
+    fCutForPositron = cut;
+    SetParticleCuts(fCutForPositron, G4Positron::Positron());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetStepMax(G4double step)
+{
+  fStepMaxProcess->SetStepMax(step);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax* PhysicsList::GetStepMaxProcess()
+{
+  return fStepMaxProcess;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::AddStepMax()
+{
+  // Step limitation seen as a process
+
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while ((*particleIterator)()){
+      G4ParticleDefinition* particle = particleIterator->value();
+      G4ProcessManager* pmanager = particle->GetProcessManager();
+
+      if (fStepMaxProcess->IsApplicable(*particle) && !particle->IsShortLived())
+      {
+         if (pmanager) pmanager ->AddDiscreteProcess(fStepMaxProcess);
+      }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetNbOfPhotonsCerenkov(G4int maxNumber)
+{
+   fOpticalPhysics->SetNbOfPhotonsCerenkov(maxNumber);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetVerbose(G4int verbose)
+{
+   fOpticalPhysics->GetCerenkovProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetScintillationProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetAbsorptionProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetRayleighScatteringProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetMieHGScatteringProcess()->SetVerboseLevel(verbose);
+   fOpticalPhysics->GetBoundaryProcess()->SetVerboseLevel(verbose);
+}
diff --git a/Simular_neutrones_monoenergeticos/src/PhysicsListMessenger.cc b/Simular_neutrones_monoenergeticos/src/PhysicsListMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d2215e7e685561ebceffd01e3c0bd4d691bfd1ff
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PhysicsListMessenger.cc
@@ -0,0 +1,234 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: PhysicsListMessenger.cc 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//src/PhysicsListMessenger.cc
+/// \brief Implementation of the PhysicsListMessenger class
+//
+//
+#include "globals.hh"
+
+#include "PhysicsListMessenger.hh"
+#include "PhysicsList.hh"
+
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithABool.hh"
+#include "G4UIcmdWithAString.hh"
+#include "G4UIcmdWithAnInteger.hh"
+#include "G4UIcmdWithoutParameter.hh"
+#include "G4UIcmdWithADoubleAndUnit.hh"
+
+#include "G4PhaseSpaceDecayChannel.hh"
+#include "G4PionRadiativeDecayChannel.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsListMessenger::PhysicsListMessenger(PhysicsList* pPhys)
+  : fPhysicsList(pPhys)
+{
+
+    fDirectory = new G4UIdirectory("/wcd/phys/");
+    fDirectory->SetGuidance("PhysicsList control");
+ 
+    fSetAbsorptionCMD = new G4UIcmdWithABool("/wcd/setAbsorption", this);
+    fSetAbsorptionCMD->SetGuidance("Turn on or off absorption process");
+    fSetAbsorptionCMD->AvailableForStates(G4State_Idle);
+
+    fVerboseCmd = new G4UIcmdWithAnInteger("/wcd/phys/verbose",this);
+    fVerboseCmd->SetGuidance("set verbose for physics processes");
+    fVerboseCmd->SetParameterName("verbose",true);
+    fVerboseCmd->SetDefaultValue(1);
+    fVerboseCmd->SetRange("verbose>=0");
+    fVerboseCmd->AvailableForStates(G4State_Idle);
+ 
+    fCerenkovCmd =
+                new G4UIcmdWithAnInteger("/wcd/phys/cerenkovMaxPhotons",this);
+    fCerenkovCmd->SetGuidance("set max nb of photons per step");
+    fCerenkovCmd->SetParameterName("MaxNumber",false);
+    fCerenkovCmd->SetRange("MaxNumber>=0");
+    fCerenkovCmd->AvailableForStates(G4State_Idle);
+
+    fGammaCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/gammaCut",this);
+    fGammaCutCMD->SetGuidance("Set gamma cut");
+    fGammaCutCMD->SetParameterName("Gcut",false);
+    fGammaCutCMD->SetUnitCategory("Length");
+    fGammaCutCMD->SetRange("Gcut>0.0");
+    fGammaCutCMD->SetDefaultUnit("mm");
+    fGammaCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fElectCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/electronCut",this);
+    fElectCutCMD->SetGuidance("Set electron cut");
+    fElectCutCMD->SetParameterName("Ecut",false);
+    fElectCutCMD->SetUnitCategory("Length");
+    fElectCutCMD->SetRange("Ecut>0.0");
+    fElectCutCMD->SetDefaultUnit("mm");
+    fElectCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fPosCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/positronCut",this);
+    fPosCutCMD->SetGuidance("Set positron cut");
+    fPosCutCMD->SetParameterName("Pcut",false);
+    fPosCutCMD->SetUnitCategory("Length");
+    fPosCutCMD->SetRange("Pcut>0.0");
+    fPosCutCMD->SetDefaultUnit("mm");
+    fPosCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fAllCutCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/allCuts",this);
+    fAllCutCMD->SetGuidance("Set cut for all");
+    fAllCutCMD->SetParameterName("cut",false);
+    fAllCutCMD->SetUnitCategory("Length");
+    fAllCutCMD->SetRange("cut>0.0");
+    fAllCutCMD->SetDefaultUnit("mm");
+    fAllCutCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fStepMaxCMD = new G4UIcmdWithADoubleAndUnit("/wcd/phys/stepMax",this);
+    fStepMaxCMD->SetGuidance("Set max. step length in the detector");
+    fStepMaxCMD->SetParameterName("mxStep",false);
+    fStepMaxCMD->SetUnitCategory("Length");
+    fStepMaxCMD->SetRange("mxStep>0.0");
+    fStepMaxCMD->SetDefaultUnit("mm");
+    fStepMaxCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fClearPhysicsCMD =
+                  new G4UIcmdWithoutParameter("/wcd/phys/clearPhysics",this);
+    fClearPhysicsCMD->SetGuidance("Clear the physics list");
+    fClearPhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fRemovePhysicsCMD = new G4UIcmdWithAString("/wcd/phys/removePhysics",this);
+    fRemovePhysicsCMD->
+                     SetGuidance("Remove a physics process from Physics List");
+    fRemovePhysicsCMD->SetParameterName("PList",false);
+    fRemovePhysicsCMD->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+    fListCMD = new G4UIcmdWithoutParameter("/wcd/phys/list",this);
+    fListCMD->SetGuidance("Available Physics Lists");
+    fListCMD->AvailableForStates(G4State_Idle);
+
+    fDecayDirectory = new G4UIdirectory("/decay/");
+    fDecayDirectory->SetGuidance("Decay chain control commands.");
+
+    fPienuCMD = new G4UIcmdWithoutParameter("/decay/pienu", this);
+    fPienuCMD->SetGuidance("Sets the pi+ to decay into e+, nu");
+
+    fPimunuCMD = new G4UIcmdWithoutParameter("/decay/pimunu", this);
+    fPimunuCMD->SetGuidance("Sets the pi+ to decay into mu+, nu");
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsListMessenger::~PhysicsListMessenger()
+{
+    delete fVerboseCmd;
+    delete fCerenkovCmd;
+
+    delete fSetAbsorptionCMD;
+
+    delete fGammaCutCMD;
+    delete fElectCutCMD;
+    delete fPosCutCMD;
+    delete fAllCutCMD;
+
+    delete fClearPhysicsCMD;
+    delete fRemovePhysicsCMD;
+
+    delete fListCMD;
+
+    delete fPienuCMD;
+    delete fPimunuCMD;
+
+    delete fDirectory;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
+                                          G4String newValue)
+{
+    if( command == fSetAbsorptionCMD ) {
+       fPhysicsList->SetAbsorption(G4UIcmdWithABool::GetNewBoolValue(newValue));
+    }
+
+    else if( command == fVerboseCmd ) {
+       fPhysicsList->SetVerbose(fVerboseCmd->GetNewIntValue(newValue));
+    }
+
+    else if( command == fCerenkovCmd ) {
+       fPhysicsList->
+           SetNbOfPhotonsCerenkov(fCerenkovCmd->GetNewIntValue(newValue));
+    }
+
+    else if (command == fPienuCMD) {
+       G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
+       G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
+       G4VDecayChannel* mode = 
+                        new G4PhaseSpaceDecayChannel("pi+",1.0,2,"e+","nu_e");
+       G4DecayTable* table = new G4DecayTable();
+       table->Insert(mode);
+      // mode = new G4PionRadiativeDecayChannel("pi+",0.000017);
+      // table->Insert(mode);
+       particleDef->SetDecayTable(table);
+    }
+
+    else if (command == fPimunuCMD) {
+       G4ParticleTable* particleTable = G4ParticleTable::GetParticleTable();
+       G4ParticleDefinition* particleDef = particleTable->FindParticle("pi+");
+       G4VDecayChannel* mode =
+                     new G4PhaseSpaceDecayChannel("pi+",1.000,2,"mu+","nu_mu");
+       G4DecayTable* table = new G4DecayTable();
+       table->Insert(mode);
+       particleDef->SetDecayTable(table);
+    }
+
+    else if (command == fGammaCutCMD) {
+        fPhysicsList->SetCutForGamma(fGammaCutCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fElectCutCMD) {
+        fPhysicsList->SetCutForElectron(fElectCutCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fPosCutCMD) {
+        fPhysicsList->SetCutForPositron(fPosCutCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fAllCutCMD) {
+        G4double cut = fAllCutCMD->GetNewDoubleValue(newValue);
+        fPhysicsList->SetCutForGamma(cut);
+        fPhysicsList->SetCutForElectron(cut);
+        fPhysicsList->SetCutForPositron(cut);
+    }
+    else if (command == fStepMaxCMD) {
+        fPhysicsList->SetStepMax(fStepMaxCMD
+                                     ->GetNewDoubleValue(newValue));
+    }
+    else if (command == fClearPhysicsCMD) {
+        fPhysicsList->ClearPhysics();
+    }
+    else if (command == fRemovePhysicsCMD) {
+        G4String name = newValue;
+        fPhysicsList->RemoveFromPhysicsList(name);
+    }
+}
diff --git a/Simular_neutrones_monoenergeticos/src/PrimaryGeneratorAction.cc b/Simular_neutrones_monoenergeticos/src/PrimaryGeneratorAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..788878ef832b05335d1f456ff35cfe3ccd0f1e65
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PrimaryGeneratorAction.cc
@@ -0,0 +1,127 @@
+
+// Geant4 Libraries
+//
+#include "Randomize.hh"
+
+#include "G4Event.hh"
+#include "G4ParticleGun.hh"
+#include "G4ParticleTable.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4SystemOfUnits.hh"
+
+
+// Local Libraries
+//
+#include "PrimaryGeneratorAction.hh"
+#include "PrimaryGeneratorMessenger.hh"
+
+#include "G4LogicalVolumeStore.hh"
+#include "G4LogicalVolume.hh"
+#include "G4RunManager.hh"
+
+PrimaryGeneratorAction::PrimaryGeneratorAction()
+  : G4VUserPrimaryGeneratorAction(), 
+  enerPart(1.),
+  fParticleGun(0),
+  parPosDir()
+{
+  G4int n_particle = 1;
+  fParticleGun = new G4ParticleGun(n_particle);
+
+  //create a messenger for this class
+  fGunMessenger = new PrimaryGeneratorMessenger(this);
+
+  //To select one single particle
+
+  G4ParticleTable* particleTable 
+   = G4ParticleTable::GetParticleTable();
+
+  G4ParticleDefinition* particle 
+   = particleTable->FindParticle("neutron");
+
+  fParticleGun->SetParticleDefinition(particle);
+  fParticleGun->SetParticleTime(0.0*ns);
+  fParticleGun->SetParticlePosition(G4ThreeVector(95.*m, 0.0*m, 0.51*m)); 
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(0., 0., -1.)); // 0
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.09, 0., -0.99)); // 5
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.17, 0., -0.98)); // 10
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.25, 0., -0.96)); // 15
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.34, 0., -0.93)); // 20
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.42, 0., -0.9)); // 25
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.5, 0., -0.86)); // 30
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.57, 0., -0.81)); // 35
+  //fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-0.64, 0., -0.76)); // 40
+  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(-1., 0., -1.)); // 45
+  fParticleGun->SetParticleEnergy(20.*MeV);
+
+}
+
+
+PrimaryGeneratorAction::~PrimaryGeneratorAction()
+{
+  delete fParticleGun;
+  delete fGunMessenger;
+}
+
+void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
+{
+	
+	//To select all secondaries flux from CORSIKA
+/*		
+	parPosDir.primaryPosition();
+	parPosDir.primaryMomento();
+
+	G4ThreeVector position = parPosDir.particlePosition;
+	G4ThreeVector direction = parPosDir.particleDirection;
+	G4String parid = parPosDir.parId;
+
+	G4ParticleTable* particleTable 
+		= G4ParticleTable::GetParticleTable();
+	
+	G4ParticleDefinition* particle 
+		= particleTable->FindParticle(parid);
+
+
+	fParticleGun->SetParticleDefinition(particle);
+	fParticleGun->SetParticlePosition(position);
+	fParticleGun->SetParticleMomentumDirection(direction);
+*/
+//----------------------------------
+
+	fParticleGun->GeneratePrimaryVertex(anEvent);
+}
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorAction::SetOptPhotonPolar()
+{
+ G4double angle = G4UniformRand() * 360.0*deg;
+ SetOptPhotonPolar(angle);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorAction::SetOptPhotonPolar(G4double angle)
+{
+ if (fParticleGun->GetParticleDefinition()->GetParticleName()!="opticalphoton")
+   {
+     /*G4cout << "--> warning from PrimaryGeneratorAction::SetOptPhotonPolar() :"
+               "the particleGun is not an opticalphoton" << G4endl;*/
+     return;
+   }
+
+ G4ThreeVector normal (1., 0., 0.);
+ G4ThreeVector kphoton = fParticleGun->GetParticleMomentumDirection();
+ G4ThreeVector product = normal.cross(kphoton);
+ G4double modul2       = product*product;
+ 
+ G4ThreeVector e_perpend (0., 0., 1.);
+ if (modul2 > 0.) e_perpend = (1./std::sqrt(modul2))*product;
+ G4ThreeVector e_paralle    = e_perpend.cross(kphoton);
+ 
+ G4ThreeVector polar = std::cos(angle)*e_paralle + std::sin(angle)*e_perpend;
+ fParticleGun->SetParticlePolarization(polar);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_neutrones_monoenergeticos/src/PrimaryGeneratorMessenger.cc b/Simular_neutrones_monoenergeticos/src/PrimaryGeneratorMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..069b70b078a641b5d2eb3299d8f146784481e35e
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PrimaryGeneratorMessenger.cc
@@ -0,0 +1,88 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /src/PrimaryGeneratorMessenger.cc
+/// \brief Implementation of the PrimaryGeneratorMessenger class
+//
+//
+//
+// 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "PrimaryGeneratorMessenger.hh"
+
+#include "PrimaryGeneratorAction.hh"
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithADoubleAndUnit.hh"
+#include "G4SystemOfUnits.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorMessenger::
+  PrimaryGeneratorMessenger(PrimaryGeneratorAction* Gun)
+  : G4UImessenger(),
+    fAction(Gun)
+{
+   G4cout << "...PrimaryGeneratorMessenger..." << G4endl;
+  fGunDir = new G4UIdirectory("//gun/");
+  fGunDir->SetGuidance("PrimaryGenerator control");
+
+  fPolarCmd =
+           new G4UIcmdWithADoubleAndUnit("//gun/optPhotonPolar",this);
+  fPolarCmd->SetGuidance("Set linear polarization");
+  fPolarCmd->SetGuidance("  angle w.r.t. (k,n) plane");
+  fPolarCmd->SetParameterName("angle",true);
+  fPolarCmd->SetUnitCategory("Angle");
+  fPolarCmd->SetDefaultValue(-360.0);
+  fPolarCmd->SetDefaultUnit("deg");
+  fPolarCmd->AvailableForStates(G4State_Idle);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorMessenger::~PrimaryGeneratorMessenger()
+{
+  delete fPolarCmd;
+  delete fGunDir;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorMessenger::SetNewValue(
+                                        G4UIcommand* command, G4String newValue)
+{
+  if( command == fPolarCmd ) {
+      G4double angle = fPolarCmd->GetNewDoubleValue(newValue);
+      if ( angle == -360.0*deg ) {
+         fAction->SetOptPhotonPolar();
+      } else {
+         fAction->SetOptPhotonPolar(angle);
+      }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_neutrones_monoenergeticos/src/PrimarySpectrum.cc b/Simular_neutrones_monoenergeticos/src/PrimarySpectrum.cc
new file mode 100644
index 0000000000000000000000000000000000000000..83d5ccb876af7ed6b266c5e6ead07231eb078ecb
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PrimarySpectrum.cc
@@ -0,0 +1,207 @@
+// Geant libraries
+//
+#include "G4SystemOfUnits.hh"
+#include "globals.hh"
+#include "g4root.hh"
+#include "Randomize.hh"
+#include "G4ios.hh"
+
+
+// Local libraries
+//
+#include "PrimarySpectrum.hh"
+#include "EventAction.hh"
+#include "PrimarySpectrumMessenger.hh"
+
+
+// c++ libraries
+//
+#include <math.h>
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+#include <vector>
+#include <string>
+#include <iomanip>
+#include <stdio.h>
+
+
+PrimarySpectrum::PrimarySpectrum():
+	pi(3.14159265358979323846)
+{
+	particlePosition 
+		= G4ThreeVector(0.,0.,360.);
+	particleDirection
+		= G4ThreeVector(0., 0., -1.);
+
+
+  fSpectMessenger= new PrimarySpectrumMessenger(this);
+  inputFile = new char();
+  inputFile = "salidasimu.shw.bz2";
+	
+	openFile(inputFile);
+
+  Ro = 56.42*cm;
+  initx = 0.*m;
+  inity = 0.*m;
+  initz = 50*cm; //a 0.9 mm del suelo 
+  r = 0.;
+  theta = 0.;
+  px = 0.*GeV;
+  py = 0.*GeV;
+  pz = 0.*GeV;
+}
+
+
+PrimarySpectrum::~PrimarySpectrum()
+{}
+
+
+int PrimarySpectrum::openFile(std::string name)
+{
+	char tmpc[256];
+  
+  const char* nfi = name.c_str();
+
+	snprintf(tmpc,256,"bzip2 -d -c %s",nfi);
+	inFile = popen(tmpc,"r");
+
+	G4cout << "File was opened" << G4endl;
+
+	return 1;
+}
+
+
+void PrimarySpectrum::primaryMomento()
+{
+	G4int search = 1;
+	char line[256];
+
+	while(search)
+	{
+	
+		if(feof(inFile))
+      openFile(inputFile);
+
+		if(fgets(line,256,inFile))
+		{
+			if(line[0] != '#')
+			{
+				sscanf(
+					line,
+					"%d %lf %lf %lf %lf %lf %lf %d %d %lf %lf %lf\n",
+					&crkId,
+					&px,
+					&py, 
+					&pz,
+					&x,
+					&y,
+					&z,
+					&shwId,
+					&prmId,
+					&prmEner,
+					&prmThe,
+					&prmPhi
+          );
+			}
+		}
+
+		search = 0;
+
+		switch(crkId)
+		{
+			case 1:
+				parId = "gamma";
+				break;
+			case 2:
+				parId = "e+";
+				break;
+			case 3:
+				parId = "e-";
+				break;
+			case 5:
+				parId = "mu+";
+				break;
+			case 6:
+				parId = "mu-";
+				break;
+			case 7:
+				parId = "pi0";
+				break;
+			case 8:
+				parId = "pi+";
+				break;
+			case 9:
+				parId = "pi-";
+				break;
+			case 10:
+				parId = "kaon0L";
+				break;
+			case 11:
+				parId = "kaon+";
+				break;
+			case 12:
+				parId = "kaon-";
+				break;
+			case 13:
+				parId = "neutron";
+				break;
+			case 14:
+				parId = "proton";
+				break;
+			case 15:
+				parId = "anti_proton";
+				break;
+			case 25:
+				parId = "anti_neutron";
+				break;
+			default:
+				search = 1;
+		}
+	}
+	
+	particleDirection
+		= G4ThreeVector( px*GeV, py*GeV, (-1.*pz*GeV) );
+
+		/*	G4cout
+			<< px
+			<< " "
+			<< py
+			<< " "
+			<< pz
+			//<< //"AJM-ener "
+			<< G4endl; 
+*/
+}
+
+
+void PrimarySpectrum::primaryPosition()
+{
+  r = Ro*sqrt( G4UniformRand() );
+  theta = 2*pi*G4UniformRand();
+  
+  initx = r*cos( theta );
+  inity = r*sin( theta );
+
+  particlePosition
+    = G4ThreeVector(initx, inity, initz);
+
+	
+			/*G4cout
+			<< "x"
+			<< " "
+			<< initx
+			<< "y"
+			<< " "
+			<< inity
+			<< "z"
+			<< " "
+			<< initz
+			<< "AJM-posi"
+			<< " "
+			<< G4endl; */
+
+
+
+}
+
diff --git a/Simular_neutrones_monoenergeticos/src/PrimarySpectrumMessenger.cc b/Simular_neutrones_monoenergeticos/src/PrimarySpectrumMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c90623c622a2424fa4d71dc3257ff79de0c719ee
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/PrimarySpectrumMessenger.cc
@@ -0,0 +1,42 @@
+#include "PrimarySpectrumMessenger.hh"
+
+#include "PrimaryGeneratorAction.hh"
+#include "G4UIdirectory.hh"
+#include "G4UIcmdWithADoubleAndUnit.hh"
+#include "G4UIcmdWithAString.hh"
+#include "G4SystemOfUnits.hh"
+
+
+// C++ Libraries
+//
+#include <string>  
+#include <fstream>
+#include <sstream>
+
+
+PrimarySpectrumMessenger::
+  PrimarySpectrumMessenger(PrimarySpectrum* spectrum)
+  : G4UImessenger(),
+    fSpectrum(spectrum)
+{
+  G4cout << "...PrimarySpectrumMessenger..." << G4endl;
+  fSpecDir = new G4UIdirectory("/spectrum/");
+  fSpecDir->SetGuidance("PrimarySpectrum control");
+
+  inFile = new G4UIcmdWithAString("/spectrum/readfile", this);
+}
+
+
+PrimarySpectrumMessenger::~PrimarySpectrumMessenger()
+{}
+
+
+void PrimarySpectrumMessenger::SetNewValue(
+    G4UIcommand* command, G4String inFl)
+{
+  if ( command == inFile )
+  {
+    fSpectrum->inputFile = inFl;
+    fSpectrum->openFile(inFl);
+  }
+}
diff --git a/Simular_neutrones_monoenergeticos/src/RunAction.cc b/Simular_neutrones_monoenergeticos/src/RunAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c85b788f2fe21660151dd746396ca1d654627453
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/RunAction.cc
@@ -0,0 +1,91 @@
+#include "G4Timer.hh"
+#include "RunAction.hh"
+#include "G4Run.hh"
+#include "g4root.hh"
+#include "G4SystemOfUnits.hh"
+
+
+
+RunAction::RunAction()
+ : G4UserRunAction(),
+   fTimer(0)
+{
+  fTimer = new G4Timer;
+
+	G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
+
+	analysisManager->SetVerboseLevel(1);
+	analysisManager->SetActivation(true);
+
+analysisManager->CreateH1("entran_al_suelo"," ", 2, 0., 2.);
+analysisManager->CreateH1("total_particulas_generadas_detector_0"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_1"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_2"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_3"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_4"," ", 6, 0., 6.);
+analysisManager->CreateH1("total_particulas_generadas_detector_5"," ", 6, 0., 6.);
+
+
+/*analysisManager->CreateH1("energia_e"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_gamma"," ", 10000, 0., 100.);
+//analysisManager->CreateH1("energia_n"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_p"," ", 10000, 0., 100.);
+analysisManager->CreateH1("e_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("gamma_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("energia_e_detectados"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_gamma_detectados"," ", 10000, 0., 100.*MeV);
+analysisManager->CreateH1("n_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("p_detectados"," ", 3, 0., 3.);
+analysisManager->CreateH1("energia_n_detectados"," ", 10000, 0., 100.);
+analysisManager->CreateH1("energia_p_detectados"," ", 10000, 0., 100.);*/
+//analysisManager->CreateH1("ener0_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("ener1_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("ener2_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("dis0_p"," ", 1000, 0.*cm, 1.*cm);
+//analysisManager->CreateH1("dis1_p"," ", 1000, 0.*cm, 1.*cm);
+//analysisManager->CreateH1("dis2_p"," ", 1000, 0.*cm, 1.*cm);
+//analysisManager->CreateH1("ener_p"," ", 1000, 0.*MeV, 1.*MeV);
+//analysisManager->CreateH1("dis_p"," ", 1000000, 0.*m, 2.*m);
+//analysisManager->CreateH1("ener1_g"," ", 1000, 0.*MeV, 10.*MeV);
+//analysisManager->CreateH1("ener2_g"," ", 1000, 0.*MeV, 10.*MeV);
+//analysisManager->CreateH1("ener3_g"," ", 1000, 0.*MeV, 10.*MeV);
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+RunAction::~RunAction()
+{
+  delete fTimer;
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::BeginOfRunAction(const G4Run* aRun)
+{
+  G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
+  fTimer->Start();
+
+  G4AnalysisManager* analysisManager
+     = G4AnalysisManager::Instance();
+
+  G4String rootFile = "minas";
+  analysisManager->OpenFile(rootFile);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::EndOfRunAction(const G4Run* aRun)
+{
+  fTimer->Stop();
+ G4cout << "number of event = " << aRun->GetNumberOfEvent();
+
+  G4AnalysisManager* analysisManager
+     = G4AnalysisManager::Instance();
+  analysisManager->Write(); 
+  analysisManager->CloseFile();
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_neutrones_monoenergeticos/src/StackingAction.cc b/Simular_neutrones_monoenergeticos/src/StackingAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..50f7cb4f495bdb7ae3fb5455f7f981b005ff1c2a
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/StackingAction.cc
@@ -0,0 +1,69 @@
+
+// Geant4 Libraries
+//
+#include "G4VProcess.hh"
+#include "G4ParticleDefinition.hh"
+#include "G4ParticleTypes.hh"
+#include "G4Track.hh"
+#include "G4ios.hh"
+
+
+// Local Libraries
+//
+#include "StackingAction.hh"
+
+
+StackingAction::StackingAction()
+  : G4UserStackingAction(),
+    fScintillationCounter(0),
+    fCerenkovCounter(0),
+    lengthMax(0.)
+{
+   G4cout << "...StackingAction..." << G4endl;
+}
+
+
+StackingAction::~StackingAction()
+{}
+
+
+G4ClassificationOfNewTrack
+StackingAction::ClassifyNewTrack(const G4Track * aTrack)
+{ 
+  if(aTrack->GetParentID()==0)
+    lengthMax = aTrack->GetTrackLength();
+    
+  if(aTrack->GetDefinition() == G4OpticalPhoton::OpticalPhotonDefinition())
+  { // particle is optical photon
+    if(aTrack->GetParentID()>0)
+    { // particle is secondary
+      if(aTrack->GetCreatorProcess()->GetProcessName() == "Scintillation")
+        fScintillationCounter++;
+      if(aTrack->GetCreatorProcess()->GetProcessName() == "Cerenkov")
+         if(aTrack->GetTotalEnergy() > 1.6e-06//2.13e-6//1.6e-06
+             && aTrack->GetTotalEnergy() < 3.1e-6)//4.13e-6)//3.1e-6)
+                 fCerenkovCounter++;
+    }
+  }
+
+
+  return fUrgent;
+
+}
+
+
+void StackingAction::NewStage()
+{
+ /* G4cout << "Number of Scintillation photons produced in this event : "
+         << fScintillationCounter << G4endl;
+  G4cout << "Number of Cerenkov photons produced in this event : "
+         << fCerenkovCounter << G4endl;*/
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void StackingAction::PrepareNewEvent()
+{
+  fScintillationCounter = 0;
+  fCerenkovCounter = 0;
+}
diff --git a/Simular_neutrones_monoenergeticos/src/StepMax.cc b/Simular_neutrones_monoenergeticos/src/StepMax.cc
new file mode 100644
index 0000000000000000000000000000000000000000..4db095dedad7d24d4b7d0caee67bdf9bee20a7f8
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/StepMax.cc
@@ -0,0 +1,98 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+// $Id: StepMax.cc 69561 2013-05-08 12:25:56Z gcosmo $
+//
+/// \file optical//src/StepMax.cc
+/// \brief Implementation of the StepMax class
+//
+//
+#include "G4Track.hh"
+#include "G4VParticleChange.hh"
+
+#include "StepMax.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::StepMax(const G4String& aName)
+  : G4VDiscreteProcess(aName), fMaxChargedStep(DBL_MAX)
+{
+   if (verboseLevel>0) {
+     G4cout << GetProcessName() << " is created "<< G4endl;
+   }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::~StepMax() { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::StepMax(StepMax& right) : G4VDiscreteProcess(right) { }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle)
+{
+  return (particle.GetPDGCharge() != 0.);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void StepMax::SetStepMax(G4double step) { fMaxChargedStep = step ; }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double StepMax::PostStepGetPhysicalInteractionLength(
+                                              const G4Track&,
+                                              G4double,
+                                              G4ForceCondition* condition)
+{
+  // condition is set to "Not Forced"
+  *condition = NotForced;
+
+  G4double ProposedStep = DBL_MAX;
+
+  if ( fMaxChargedStep > 0.) ProposedStep = fMaxChargedStep;
+
+   return ProposedStep;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack,
+                                         const G4Step&         )
+{
+   // do nothing
+   aParticleChange.Initialize(aTrack);
+   return &aParticleChange;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double StepMax::GetMeanFreePath(const G4Track&,G4double,G4ForceCondition*)
+{
+  return 0.;
+}
diff --git a/Simular_neutrones_monoenergeticos/src/SteppingAction.cc b/Simular_neutrones_monoenergeticos/src/SteppingAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..419ed67ebbc9f3724b41cf758fc8e64139fa3a68
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/SteppingAction.cc
@@ -0,0 +1,300 @@
+// Geant4 Libraries
+//
+#include "G4Step.hh"
+#include "G4Track.hh"
+#include "G4OpticalPhoton.hh"
+
+#include "G4Event.hh"
+#include "G4RunManager.hh"
+#include "g4root.hh"
+#include "G4SDManager.hh"
+#include "G4TransportationManager.hh"
+#include "G4SystemOfUnits.hh"
+
+#include "G4UserEventAction.hh"
+#include "G4Event.hh"
+
+#include "SteppingAction.hh"
+#include "DetectorConstruction.hh"
+#include "PMTSD.hh"
+#include "PMTHit.hh"
+#include "UserEventAction.hh"
+#include "PrimarySpectrum.hh"
+#include "iostream"
+#include <stdio.h>
+#include <iostream>
+#include <fstream>
+
+using namespace std;
+SteppingAction::SteppingAction()
+  : G4UserSteppingAction()
+{
+
+  G4TransportationManager::GetTransportationManager()
+    ->GetNavigatorForTracking()->SetPushVerbosity(0);
+
+fEventNumber = -1;
+alsuelo=0;
+generadas = 0;
+ener_e=0;
+ener_g=0;
+ener_n=0;
+ener_p=0;
+detect_g=0;
+detect_e=0;
+ener_e_det=0;
+ener_g_det=0;
+
+  detectorConstruction 
+     = static_cast < const DetectorConstruction* 
+     > (G4RunManager::GetRunManager()
+         ->GetUserDetectorConstruction());
+}
+
+SteppingAction::~SteppingAction()
+{}
+
+
+void SteppingAction::UserSteppingAction(const G4Step* step)
+{
+
+  //ofstream file;
+  //file.open("/root/humedad-0%/out2.txt"); 
+
+  // ==========================
+  // Get current PhysicalVolume
+  thePostPV = step->GetPostStepPoint()->GetPhysicalVolume()->GetName();
+  thePrePV = step->GetPreStepPoint()->GetPhysicalVolume()->GetName();
+
+
+  // =========
+  // Get Track
+  G4Track* track = step->GetTrack();
+
+  // ============
+  // Get Event Id
+  G4int eventNumber                
+    = G4RunManager::GetRunManager()
+    ->GetCurrentEvent()
+    ->GetEventID();
+  
+  // =================
+  // Get Particle Name
+  G4String ParticleName 
+    = track->GetDynamicParticle()->GetParticleDefinition()->GetParticleName();
+
+  // =================
+  // Get Histograms
+  G4AnalysisManager* analysisManager
+    = G4AnalysisManager::Instance();
+
+  //==========================
+  // Global time
+  //G4double tiempo = track->GetGlobalTime();
+
+  // =================
+  // Get parent ID
+  G4double parentID = step->GetTrack()->GetParentID();
+
+  // =================
+  // Get current step number
+  G4double paso  = step->GetTrack()->GetCurrentStepNumber();
+  // Get energy step number 
+  //G4double energia = track->GetKineticEnergy();
+  // ******************************
+  // Reset variables fog each event
+  // ******************************
+  
+  G4ThreeVector position = step->GetPostStepPoint()->GetPosition(); 
+  G4double x = step->GetPostStepPoint()->GetPosition().x()/m;
+  G4double y = step->GetPostStepPoint()->GetPosition().y()/m;
+  G4double z = step->GetPostStepPoint()->GetPosition().z()/m; // determinar la posicion de la particula
+
+	if (eventNumber != fEventNumber)
+  	{
+		fEventNumber = eventNumber;
+     		ener_e=0;
+     		ener_g=0;
+     		ener_n=0;
+     		ener_p=0;
+     		ener_e_det=0;
+     		ener_g_det=0;
+	}
+  
+   	if( parentID == 0 && thePostPV == "ground")
+    		track->SetTrackStatus(fStopAndKill);
+
+  	if ( thePostPV == "fWorld" || thePostPV  == "ground" )
+    		track->SetTrackStatus(fStopAndKill);
+  	
+	/*if (ParticleName == "neutron" )
+	{
+	  //	G4cout << eventNumber << " " << parentID << " " << x << " "  << y << " " << z << G4endl;
+	}*/
+	if( thePostPV  == "detector_0" )
+		{
+		generadas = 1;
+		analysisManager->FillH1(1,generadas);
+
+		if (ParticleName == "e-" ||  ParticleName == "e+" )
+			{
+			generadas = 2;
+			analysisManager->FillH1(1,generadas);
+			}
+		if (ParticleName == "gamma" ||  ParticleName == "opticalphoton" )
+			{
+			generadas = 3;
+			analysisManager->FillH1(1,generadas);
+			}
+		if (ParticleName == "proton" ||  ParticleName == "anti_proton" )
+			{	
+			generadas = 4;
+			analysisManager->FillH1(1,generadas);
+			}
+		if (ParticleName == "neutron" )
+			{
+			generadas = 5;
+			analysisManager->FillH1(1,generadas);
+			}
+		}
+
+	if( thePostPV  == "detector_1" )
+		{
+		generadas = 1;
+		analysisManager->FillH1(2,generadas);
+
+		if (ParticleName == "e-" ||  ParticleName == "e+" )
+			{
+			generadas = 2;
+			analysisManager->FillH1(2,generadas);
+			}
+		if (ParticleName == "gamma" ||  ParticleName == "opticalphoton" )
+			{
+			generadas = 3;
+			analysisManager->FillH1(2,generadas);
+			}
+		if (ParticleName == "proton" ||  ParticleName == "anti_proton" )
+			{
+			generadas = 4;
+			analysisManager->FillH1(2,generadas);
+			}
+		if (ParticleName == "neutron" )
+			{
+			generadas = 5;
+			analysisManager->FillH1(2,generadas);
+			}
+		}
+
+	if( thePostPV  == "detector_2" )
+		{
+		generadas = 1;
+		analysisManager->FillH1(3,generadas);
+
+		if (ParticleName == "e-" ||  ParticleName == "e+" )
+			{
+			generadas = 2;
+			analysisManager->FillH1(3,generadas);
+			}
+		if (ParticleName == "gamma" ||  ParticleName == "opticalphoton" )
+			{
+			generadas = 3;
+			analysisManager->FillH1(3,generadas);
+			}
+		if (ParticleName == "proton" ||  ParticleName == "anti_proton" )
+			{
+			generadas = 4;
+			analysisManager->FillH1(3,generadas);
+			}
+		if (ParticleName == "neutron" )
+			{
+			generadas = 5;
+			analysisManager->FillH1(3,generadas);
+			}
+		}
+
+	if( thePostPV  == "detector_3" )
+		{
+		generadas = 1;
+		analysisManager->FillH1(4,generadas);
+
+		if (ParticleName == "e-" ||  ParticleName == "e+" )
+			{
+			generadas = 2;
+			analysisManager->FillH1(4,generadas);
+			}
+		if (ParticleName == "gamma" ||  ParticleName == "opticalphoton" )
+			{
+			generadas = 3;
+			analysisManager->FillH1(4,generadas);
+			}	
+		if (ParticleName == "proton" ||  ParticleName == "anti_proton" )
+			{
+			generadas = 4;
+			analysisManager->FillH1(4,generadas);
+			}
+		if (ParticleName == "neutron" )
+			{
+			generadas = 5;
+			analysisManager->FillH1(4,generadas);
+			}
+		}
+	if( thePostPV  == "detector_4" )
+		{
+		generadas = 1;
+		analysisManager->FillH1(5,generadas);
+
+		if (ParticleName == "e-" ||  ParticleName == "e+" )
+			{
+			generadas = 2;
+			analysisManager->FillH1(5,generadas);
+			}
+		if (ParticleName == "gamma" ||  ParticleName == "opticalphoton" )
+			{
+			generadas = 3;
+			analysisManager->FillH1(5,generadas);
+			}	
+		if (ParticleName == "proton" ||  ParticleName == "anti_proton" )
+			{
+			generadas = 4;
+			analysisManager->FillH1(5,generadas);
+			}
+		if (ParticleName == "neutron" )
+			{
+			generadas = 5;
+			analysisManager->FillH1(5,generadas);
+			}
+		}
+
+	if( thePostPV  == "detector_5" )
+		{
+		generadas = 1;
+		analysisManager->FillH1(6,generadas);
+
+		if (ParticleName == "e-" ||  ParticleName == "e+" )
+			{
+			generadas = 2;
+			analysisManager->FillH1(6,generadas);
+			}
+		if (ParticleName == "gamma" ||  ParticleName == "opticalphoton" )
+			{
+			generadas = 3;
+			analysisManager->FillH1(6,generadas);
+			}	
+		if (ParticleName == "proton" ||  ParticleName == "anti_proton" )
+			{
+			generadas = 4;
+			analysisManager->FillH1(6,generadas);
+			}
+		if (ParticleName == "neutron" )
+			{
+			generadas = 5;
+			analysisManager->FillH1(6,generadas);
+			}
+		}
+	
+
+
+  //file.close();
+   
+
+}
diff --git a/Simular_neutrones_monoenergeticos/src/SteppingVerbose.cc b/Simular_neutrones_monoenergeticos/src/SteppingVerbose.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6d2721c7895bb9f5202e51d9d81059dbf3e74da5
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/SteppingVerbose.cc
@@ -0,0 +1,188 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file /src/SteppingVerbose.cc
+/// \brief Implementation of the SteppingVerbose class
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "SteppingVerbose.hh"
+
+#include "G4SteppingManager.hh"
+#include "G4UnitsTable.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingVerbose::SteppingVerbose()
+ : G4SteppingVerbose()
+{
+   G4cout << "...SteppingVerbose..." << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingVerbose::~SteppingVerbose()
+{
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingVerbose::StepInfo()
+{
+  CopyState();
+
+  G4int prec = G4cout.precision(3);
+
+  if( verboseLevel >= 1 ){
+    if( verboseLevel >= 4 ) VerboseTrack();
+    if( verboseLevel >= 3 ){
+      G4cout << G4endl;
+      G4cout << std::setw( 5) << "#Step#"     << " "
+             << std::setw( 6) << "X"          << "    "
+             << std::setw( 6) << "Y"          << "    "
+             << std::setw( 6) << "Z"          << "    "
+             << std::setw( 9) << "KineE"      << " "
+             << std::setw( 9) << "dEStep"     << " "
+             << std::setw(10) << "StepLeng"
+             << std::setw(10) << "TrakLeng"
+             << std::setw(10) << "Volume"    << "  "
+             << std::setw(10) << "Process"   << G4endl;
+    }
+
+    G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
+    << std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
+    << std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
+    << std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
+    << std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
+    << "  ";
+
+    // if( fStepStatus != fWorldBoundary){
+    if( fTrack->GetNextVolume() != 0 ) {
+      G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
+    } else {
+      G4cout << std::setw(10) << "OutOfWorld";
+    }
+
+    if(fStep->GetPostStepPoint()->GetProcessDefinedStep() != 0){
+      G4cout << "  "
+             << std::setw(10)
+             << fStep->GetPostStepPoint()->GetProcessDefinedStep()
+                                         ->GetProcessName();
+    } else {
+      G4cout << "   UserLimit";
+    }
+
+    G4cout << G4endl;
+
+    if( verboseLevel == 2 ){
+      G4int tN2ndariesTot = fN2ndariesAtRestDoIt +
+                            fN2ndariesAlongStepDoIt +
+                            fN2ndariesPostStepDoIt;
+      if(tN2ndariesTot>0){
+        G4cout << "    :----- List of 2ndaries - "
+               << "#SpawnInStep=" << std::setw(3) << tN2ndariesTot 
+               << "(Rest="  << std::setw(2) << fN2ndariesAtRestDoIt
+               << ",Along=" << std::setw(2) << fN2ndariesAlongStepDoIt
+               << ",Post="  << std::setw(2) << fN2ndariesPostStepDoIt
+               << "), "
+               << "#SpawnTotal=" << std::setw(3) << (*fSecondary).size()
+               << " ---------------"
+               << G4endl;
+
+        for(size_t lp1=(*fSecondary).size()-tN2ndariesTot;
+                        lp1<(*fSecondary).size(); lp1++){
+          G4cout << "    : "
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetPosition().x(),"Length")
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetPosition().y(),"Length")
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetPosition().z(),"Length")
+                 << std::setw(6)
+                 << G4BestUnit((*fSecondary)[lp1]->GetKineticEnergy(),"Energy")
+                 << std::setw(10)
+                 << (*fSecondary)[lp1]->GetDefinition()->GetParticleName();
+          G4cout << G4endl;
+        }
+ 
+        G4cout << "    :-----------------------------"
+               << "----------------------------------"
+               << "-- EndOf2ndaries Info ---------------"
+               << G4endl;
+      }
+    }
+
+  }
+  G4cout.precision(prec);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingVerbose::TrackingStarted()
+{
+
+  CopyState();
+  G4int prec = G4cout.precision(3);
+  if( verboseLevel > 0 ){
+
+    G4cout << std::setw( 5) << "Step#"      << " "
+           << std::setw( 6) << "X"          << "    "
+           << std::setw( 6) << "Y"          << "    "  
+           << std::setw( 6) << "Z"          << "    "
+           << std::setw( 9) << "KineE"      << " "
+           << std::setw( 9) << "dEStep"     << " "
+           << std::setw(10) << "StepLeng"
+           << std::setw(10) << "TrakLeng"
+           << std::setw(10) << "Volume"     << "  "
+           << std::setw(10) << "Process"    << G4endl;
+
+   G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
+    << std::setw( 6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
+    << std::setw( 6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
+    << std::setw( 6) << G4BestUnit(fStep->GetStepLength(),"Length")
+    << std::setw( 6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
+    << "  ";
+
+    if(fTrack->GetNextVolume()){
+      G4cout << std::setw(10) << fTrack->GetVolume()->GetName();
+    } else {
+      G4cout << "OutOfWorld";
+    }
+    G4cout << "    initStep" << G4endl;
+  }
+  G4cout.precision(prec);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/Simular_neutrones_monoenergeticos/src/UserEventAction.cc b/Simular_neutrones_monoenergeticos/src/UserEventAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..80b2f040d14ddfa1cf3671fce6f7f14c0c4b929e
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/src/UserEventAction.cc
@@ -0,0 +1,29 @@
+
+// Geant4 Libraries
+//
+#include "G4UserEventAction.hh"
+#include "G4Event.hh"
+
+// Local Libraries
+//
+#include "UserEventAction.hh"
+
+
+UserEventAction::UserEventAction()
+{}
+
+
+UserEventAction::~UserEventAction()
+{}
+
+
+void UserEventAction::BeginOfEventAction(const G4Event* event)
+{
+//G4cout << "Begin Event: " << event->GetEventID() << G4endl;
+}
+
+
+void UserEventAction::EndOfEventAction(const G4Event* event)
+{
+	//G4cout << "End Event: " << event->GetEventID() << G4endl;
+}
diff --git a/Simular_neutrones_monoenergeticos/therunLine.txt b/Simular_neutrones_monoenergeticos/therunLine.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0bb5ee4303dae0385858ab2f062f937da5a253e7
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/therunLine.txt
@@ -0,0 +1 @@
+cmake -DGeant4_DIR=/home/adriana/GEANT4/geant4.10.3-install/lib/Geant4-10.3.1/ ../minas/; make -j2; time ./wcd -m input.in
diff --git a/Simular_neutrones_monoenergeticos/view.html b/Simular_neutrones_monoenergeticos/view.html
new file mode 100644
index 0000000000000000000000000000000000000000..5cb38c3a0d85a76f0b1cf86313a5239cc18017ce
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/view.html
@@ -0,0 +1,182 @@
+<!DOCTYPE html><html><head><meta name="google" content="notranslate"><meta http-equiv="X-UA-Compatible" content="IE=edge;"><style nonce="/o0rCvpoCLbIcm25lPeXbg">@font-face{font-family:'Roboto';font-style:italic;font-weight:400;src:url(//fonts.gstatic.com/s/roboto/v18/KFOkCnqEu92Fr1Mu51xIIzc.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:300;src:url(//fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmSU5fBBc9.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:400;src:url(//fonts.gstatic.com/s/roboto/v18/KFOmCnqEu92Fr1Mu4mxP.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:500;src:url(//fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmEU9fBBc9.ttf)format('truetype');}@font-face{font-family:'Roboto';font-style:normal;font-weight:700;src:url(//fonts.gstatic.com/s/roboto/v18/KFOlCnqEu92Fr1MmWUlfBBc9.ttf)format('truetype');}</style><meta name="referrer" content="origin"><title>salidasimu.shw.bz2 - Google Drive</title><meta property="og:title" content="salidasimu.shw.bz2"><meta property="og:type" content="article"><meta property="og:site_name" content="Google Docs"><meta property="og:url" content="https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view?usp=embed_facebook"><link rel="shortcut icon" href="https://ssl.gstatic.com/images/branding/product/1x/drive_2020q4_32dp.png"><link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans_old:300,400,500,700" nonce="/o0rCvpoCLbIcm25lPeXbg"><link rel="stylesheet" href="https://www.gstatic.com/_/apps-fileview/_/ss/k=apps-fileview.v.aov5obDueaQ.L.W.O/d=0/rs=AO0039vPki5ZRO07UBz6fdWgcpEwg0DH3Q" nonce="/o0rCvpoCLbIcm25lPeXbg"><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">_docs_flag_initialData={"docs-ails":"docs_cold","docs-fwds":"docs_sdf","docs-crs":"docs_crs_nfd","docs-shdn":0,"docs-tfh":"","info_params":{},"docos-eddmh":false,"docs-eohmo":false,"uls":"","docs-obsImUrl":"https://ssl.gstatic.com/docs/common/netcheck.gif","docs-api-keys":{},"buildLabel":"texmex_2022.03-Thu_RC01","docs-show_debug_info":false,"ondlburl":"https://docs.google.com","drive_url":"https://drive.google.com","app_url":"https://drive.google.com/file/","docs-itrf":false,"docs-gsmd":"","docs-eofc":true,"docs-eidfc":false,"docs-ecpvib":false,"docs-msid":32767,"docs-rid":1024,"docs-mif":1000,"docs-icdmt":[],"docs-mip":6250000,"docs-eicd":true,"docs-rawff":2,"docs-mib":5242880,"docs-mid":2048,"docs-sup":"/file","docs-seu":"https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/edit","docs-crp":"/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view","docs-ecvca":true,"docs-uptc":["lsrp","ca","sh","noreplica","ouid","dl","hi","hi_ext","usp","urp","utm_source","utm_medium","utm_campaign","utm_term","utm_content","aaac","sle"],"docs-doddn":"","docs-uddn":"","docs-cwsd":"","docs-epq":false,"docs-erdiiv":false,"docs-acap":["docs.security.access_capabilities",1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],"docs-eefufs":false,"docs-eccfs":false,"docs-eefufd":false,"docs-hwg":"DISABLED","docs-hwst":"","docs-ndt":"Untitled Texmex","docs-prn":"","docs-een":false,"docs-as":"","docs-etdimo":false,"docs-mdck":"","docs-etiff":false,"docs-mriim":1800000,"docs-eccbs":false,"docs-rlmp":false,"docs-mmpt":15000,"docs-erd":false,"docs-erfar":false,"docs-ensb":false,"docs-ddts":false,"docs-uootuns":false,"docs-amawso":false,"docs-ofmpp":false,"docs-anlpfdo":false,"docs-eslars":true,"docs-eem":false,"docs-phe":"https://contacts.google.com","docs-pse":"PROD","docs-eridm":false,"docs-pid":"","docs-eedmlf":false,"docs-emmda":false,"docs-efs":false,"docs-net-edsle":false,"docs-ricocpb":false,"docs-erep":false,"docs-effnp":false,"docs-cttmtbr":0,"docs-caaffso":true,"docs-eaaswoc":false,"docs-edpsf":false,"docs-edp":false,"docs-edlo":false,"docs-cttmteq":0,"docos-edces":false,"docs-dec":false,"docs-eiasrpu":false,"docs-ectt":false,"docs-ebbouf":false,"docs-pcfloc":false,"docs-dsps":false,"docs-embmd":false,"docs-esmr":false,"docs-ecgd":false,"docs-eawflb":false,"docs-iosdl":false,"docs-hft":"","docs-edsi":false,"docs-ececs":false,"enable_emoji_picker_search_bar":false,"docs-eerp":false,"docs-ercwf":false,"docs-ecurf":false,"docs-efsii":false,"docs-elcfd":false,"docs-edmitm":false,"docs-enjec":false,"ecid":true,"docs-eir":false,"server_time_ms":1643377539193,"gaia_session_id":"","app-bc":"#d1d1d1","enable_iframed_embed_api":true,"docs-fut":"https://drive.google.com#folders/{folderId}","docs-isb":false,"docs-agdc":false,"docs-anddc":true,"docs-adndldc":false,"docs-dhnap":"drive.google.com","docs-ds":"https","docs-text-efnma":false,"docs-cide":true,"docs-cn":"","docs-depquafr":false,"docs-frbanmc":false,"docs-rldce":false,"docs-dom":false,"docs-ecsup":false,"docs-edamc":false,"docs-edomic":false,"docs-eddm":false,"kix-edrat":false,"docs-edhqlfr":false,"docs-fwd":false,"docs-efpgwb":false,"docs-efu":false,"docs-eiccp":false,"docs-elds":false,"docs-eph":false,"docs-epat":true,"docs-eppd":false,"docs-essph":false,"docs-tdd":false,"docs-rsc":"","docs-rgifem":true,"docs-ssi":false,"docs-uoci":"","docs-wia":"","docs-gth":"","docs-ndsom":[],"docs-dm":"application/x-bzip2","docs-sdsom":[],"docs-po":"https://drive.google.com","docs-to":"https://drive.google.com","docs-eastd":true,"opendv":false,"onePickImportDocumentUrl":"","opmbs":5242880,"opmpd":2500,"opbu":"https://docs.google.com/picker","opru":"https://drive.google.com/relay.html","opdu":false,"opccp":false,"ophi":"texmex","opst":"","opuci":"","docs-eopiiv2":true,"projector_base_url":"//drive.google.com","docs-drk":[],"docs-erkpp":false,"docs-erkfsu":true,"jobset":"prod","docs-eqam":false,"docs-ehlib":false,"docs-euaool":false,"docs-eua":false,"docs-ebfgf":false,"docs-ehib":false,"docs-uahnt":"","docs-esap":false,"docs-efib":false,"docs-eidib":false,"docs-se":false,"docs-egf":false,"docs-uptuf":true,"docs-eodpb":true,"docs-odpl":false,"docs-surfb":false,"docs-odpdu":[null,null,null,"//drive.google.com/odp/dialog"],"docs-odpu":[null,null,null,"//drive.google.com/odp/embed"],"docs-dafjera":false,"docs-daflia":false,"docs-dafwsa":false,"docs-dafgfma":false,"docs-fta-fnrhci":false,"docs-spdy":false,"xdbcfAllowHostNamePrefix":true,"xdbcfAllowXpc":true,"docs-dbctc":false,"docs-iror":true,"docs-eirj":false,"promo_url":"","promo_second_url":"","promo_title":"","promo_title_prefix":"","promo_content_html":"","promo_more_element_text":"","promo_second_more_element_text":"","promo_element_id":"","promo_orientation":1,"promo_arrow_alignment":0,"promo_show_on_click":false,"promo_hide_arrow":false,"promo_show_on_load":false,"promo_mark_dismissed_on_show":false,"promo_use_material_styling":false,"promo_close_button_text":"","promo_icon_url":"","promo_action_id":"","promo_impression_id":0,"promo_is_contextual":false,"docs-ccwt":80,"docs-epcc":false,"docs-era":true,"docs-msoil":"docs_spanner","docs-gsoil":"docs_gsabs","docs-fsd":false}; _docs_flag_cek= null ; if (window['DOCS_timing']) {DOCS_timing['ifdld']=new Date().getTime();}</script><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">window.viewerData = {config: {'id': '16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt', 'title': 'salidasimu.shw.bz2', 'isItemTrashed':  false , 'documentResourceKey': '','enableEmbedDialog': true,'projectorFeedbackId': '99950', 'projectorFeedbackBucket': 'viewer-web',}, configJson: ["",null,null,null,null,1,null,null,null,1,1,[1,null,null,"AIzaSyDVQw45DwoYh632gvsP5vPDqEKvb-Ywnb8",0,null,1,null,null,"AIzaSyC1eQ1xj69IdTMeii5r7brs3R90eck-m7k",null,"/drive/v2beta",0,0,1,[0],null,1,null,0,1,1],null,5,1,null,null,1,"https://drive.google.com",null,null,1,null,1,null,null,null,null,null,1,null,null,[[null,"0"],6,1,1,null,null,null,1],null,1,null,null,[null,null,null,null,"https://accounts.google.com/ServiceLogin?service\u003dwise\u0026passive\u003d1209600\u0026continue\u003dhttps://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view\u0026hl\u003des_419\u0026followup\u003dhttps://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view",null,null,null,1],null,null,1,null,null,"https://docs.google.com",null,1,[null,0],["https://youtube.googleapis.com",null,2],1,null,null,null,1,null,1,1,null,null,null,null,[1,1,1,1],null,1,null,3,null,null,null,null,1,["AIzaSyCMp6sr4oTC18AWkE2Ii4UBZHTHEpGZWZM","https://blobcomments-pa.clients6.google.com",null,1,1,1,null,null,null,null,"ANONYMOUS_17612595759507348808"],null,1,null,null,0,null,null,1,null,null,null,[1,1,1],null,null,1,1,[null,null,"https://clients6.google.com","AIzaSyD_InbmSFufIEps5UAt2NmB_3LvBH3Sz_8","https://people-pa.googleapis.com",null,null,1,1,1,1],null,1,null,null,null,null,[0,0],null,null,null,null,0,null,0,1,null,null,null,null,null,null,[0,"","","",""],1,[null,null,0,0,0,0,1],null,1,[[null,null,null,"//drive.google.com/odp/embed"],null,"","AIzaSyCIGHYEdm91p31HKyJSoU4at7IqhCViXuA",1,null,[null,null,null,"//drive.google.com/odp/dialog"]],[1],null,null,null,null,1,"https://workspace.google.com",null,null,1,1,1,1,1,null,1,["AIzaSyCMp6sr4oTC18AWkE2Ii4UBZHTHEpGZWZM","https://drivemetadata.clients6.google.com"],0,0,0], itemJson: [null,"salidasimu.shw.bz2",null,null,null,null,null,null,null,"https://drive.google.com/viewer2/prod-01/meta?ck\u003ddrive\u0026ds\u003dAPznzab6l-ZevSLJraLBrJ0Mvjvh5Yqzy0EubwMqDTYJgoMMvwwiILTkyNkhlDk22dvkgNGouBLKJUSt8D5kavqQhZ1OL5fNdZwlHAVXelerTjbQY-CPowsBNQc_AOYEx0pOV_MOVjmmXsuEPsubs-BF5Hd5dPdAkXAU14m2X6aFhjLSvNgPZiVIddPBaybWc4ANbgWY_02wvBd5BdUsPqxBZkkXZahNwzTJ-DI0z5jVPx2umZQJtM8pPfZZLLfbSjVQy9LhN3No7l5XmDL9sUFhvxY0hkTRVtm0Xe10pXI9QiofPKEEfiEulzlxguYAoIUxxVUo4sdM-c8uq36A9Wh3n_38fQkET-vR71yhCTRLwi44eNB9M9C-5pgXP29m3UMHQD4ZrzLx",null,"application/x-bzip2",null,null,6,null,"https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view",null,"https://drive.google.com/uc?id\u003d16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt\u0026export\u003ddownload",null,5,0,null,null,null,[null,null,"96124865"],null,null,null,null,null,0,"bz2",null,[["0B2Tl2quxl64SaFBTcFFUSFlXTys1bllrc004NUU0VWs0WjlRPQ"],[],["16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt"]],null,null,null,null,null,null,0,null,0]};</script><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">;this.gbar_={CONFIG:[[[0,"www.gstatic.com","og.qtm.en_US.jwekfjYLLn8.O","com.co","es-419","25",0,[4,2,"","","","423702901","0"],null,"g_PzYZXIDuOH_QbckZrIAQ",null,0,"og.qtm.8Apkshs-cBE.L.X.O","AA2YrTszg452UcK7ZldyRIlElPI7lXM0HQ","AA2YrTvZprRJNqGpqZVhXX4F8OlnvU9h6w","",2,1,200,"COL",null,null,"25","25",1],null,[1,0.1000000014901161,2,1],[1,0.001000000047497451,1],[0,0,0,null,"","","",""],[0,0,"",1,0,0,0,0,0,0,null,0,0,null,0,0,null,null,0,0,0,"","","","","","",null,0,0,0,0,0,null,null,null,"rgba(32,33,36,1)","rgba(255,255,255,1)",0,0,1,null,null,1,0,0],null,null,["1","gci_91f30755d6a6b787dcc2a4062e6e9824.js","googleapis.client:gapi.iframes","","es-419"],null,null,null,null,["m;/_/scs/abc-static/_/js/k=gapi.gapi.en.fQLVS3SAB_U.O/d=1/rs=AHpOoo9-gtqpJORJvBFDdao_eAhWe8xjHw/m=__features__","https://apis.google.com","","","","",null,1,"es_plusone_gc_20220110.0_p0","es-419",null,0],[0.009999999776482582,"com.co","25",[null,"","0",null,1,5184000,null,null,"",null,null,null,null,null,0,null,0,0,1,0,0,0,null,null,0,0,null,0,0,0,0],null,null,null,0,null,null,["5061451","google\\.(com|ru|ca|by|kz|com\\.mx|com\\.tr)$",1]],[1,1,null,27043,25,"COL","es-419","423702901.0",8,0.009999999776482582,0,0,null,null,null,null,"3700949",null,null,null,"g_PzYZXIDuOH_QbckZrIAQ",0,0],[[null,null,null,"https://www.gstatic.com/og/_/js/k=og.qtm.en_US.jwekfjYLLn8.O/rt=j/m=qabr,q_dnp,qapid/exm=qaaw,qadd,qaid,qein,qhaw,qhbr,qhch,qhga,qhid,qhin,qhpr/d=1/ed=1/rs=AA2YrTszg452UcK7ZldyRIlElPI7lXM0HQ"]]]],};this.gbar_=this.gbar_||{};(function(_){var window=this;
+try{
+var ka,ua,Aa,Ba,Ga,Ha,Ia,Ja,Ka,La,Na,Oa,Sa,Ta;_.aa=function(a){if(Error.captureStackTrace)Error.captureStackTrace(this,_.aa);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))};_.ba=function(){var a=_.n.navigator;return a&&(a=a.userAgent)?a:""};_.q=function(a){return-1!=_.ba().indexOf(a)};_.ca=function(){return _.q("Opera")};_.da=function(){return _.q("Trident")||_.q("MSIE")};_.ea=function(){return _.q("Firefox")||_.q("FxiOS")};
+_.ia=function(){return _.q("Safari")&&!(_.fa()||_.q("Coast")||_.ca()||_.q("Edge")||_.q("Edg/")||_.q("OPR")||_.ea()||_.q("Silk")||_.q("Android"))};_.fa=function(){return(_.q("Chrome")||_.q("CriOS"))&&!_.q("Edge")||_.q("Silk")};_.ja=function(){return _.q("Android")&&!(_.fa()||_.ea()||_.ca()||_.q("Silk"))};ka=function(){return _.q("iPhone")&&!_.q("iPod")&&!_.q("iPad")};_.la=function(){return ka()||_.q("iPad")||_.q("iPod")};_.na=function(a,b){return 0<=(0,_.ma)(a,b)};
+_.oa=function(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};_.pa=function(){return-1!=_.ba().toLowerCase().indexOf("webkit")&&!_.q("Edge")};_.ra=function(a){return _.qa&&null!=a&&a instanceof Uint8Array};_.ta=function(a){Object.isFrozen(a)||(sa?a[sa]|=1:void 0!==a.Qd?a.Qd|=1:Object.defineProperties(a,{Qd:{value:1,configurable:!0,writable:!0,enumerable:!1}}));return a};ua=function(a){return null!==a&&"object"===typeof a&&!Array.isArray(a)&&a.constructor===Object};
+_.ya=function(a){switch(typeof a){case "number":return isFinite(a)?a:String(a);case "object":if(a&&!Array.isArray(a)){if(_.ra(a))return _.va(a);if("function"==typeof _.wa&&a instanceof _.wa)return a.o()}}return a};Aa=function(a,b){if(null!=a){if(Array.isArray(a))a=_.za(a,b);else if(ua(a)){var c={},d;for(d in a)c[d]=Aa(a[d],b);a=c}else a=b(a);return a}};
+_.za=function(a,b){for(var c=a.slice(),d=0;d<c.length;d++)c[d]=Aa(c[d],b);if(b=Array.isArray(a)){var e;sa?e=a[sa]:e=a.Qd;b=(null==e?0:e)&1}b&&_.ta(c);return c};Ba=function(a){if(a&&"object"==typeof a&&a.toJSON)return a.toJSON();a=_.ya(a);return Array.isArray(a)?_.za(a,Ba):a};_.r=function(a,b){return null!=a?!!a:!!b};_.t=function(a,b){void 0==b&&(b="");return null!=a?a:b};_.Ca=function(a,b){void 0==b&&(b=0);return null!=a?a:b};_.Da=function(a,b,c){for(var d in a)b.call(c,a[d],d,a)};
+_.Fa=function(a,b){for(var c,d,e=1;e<arguments.length;e++){d=arguments[e];for(c in d)a[c]=d[c];for(var f=0;f<Ea.length;f++)c=Ea[f],Object.prototype.hasOwnProperty.call(d,c)&&(a[c]=d[c])}};Ga=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}};Ha="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
+Ia=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("a");};Ja=Ia(this);Ka=function(a,b){if(b)a:{var c=Ja;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&Ha(c,a,{configurable:!0,writable:!0,value:b})}};
+Ka("Symbol",function(a){if(a)return a;var b=function(f,g){this.j=f;Ha(this,"description",{configurable:!0,writable:!0,value:g})};b.prototype.toString=function(){return this.j};var c="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",d=0,e=function(f){if(this instanceof e)throw new TypeError("b");return new b(c+(f||"")+"_"+d++,f)};return e});
+Ka("Symbol.iterator",function(a){if(a)return a;a=Symbol("c");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=Ja[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&Ha(d.prototype,a,{configurable:!0,writable:!0,value:function(){return La(Ga(this))}})}return a});La=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a};
+_.Ma=function(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):{next:Ga(a)}};Na="function"==typeof Object.create?Object.create:function(a){var b=function(){};b.prototype=a;return new b};if("function"==typeof Object.setPrototypeOf)Oa=Object.setPrototypeOf;else{var Pa;a:{var Qa={a:!0},Ra={};try{Ra.__proto__=Qa;Pa=Ra.a;break a}catch(a){}Pa=!1}Oa=Pa?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError("d`"+a);return a}:null}Sa=Oa;
+_.u=function(a,b){a.prototype=Na(b.prototype);a.prototype.constructor=a;if(Sa)Sa(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.X=b.prototype};Ta=function(a,b,c){if(null==a)throw new TypeError("e`"+c);if(b instanceof RegExp)throw new TypeError("f`"+c);return a+""};
+Ka("String.prototype.startsWith",function(a){return a?a:function(b,c){var d=Ta(this,b,"startsWith"),e=d.length,f=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var g=0;g<f&&c<e;)if(d[c++]!=b[g++])return!1;return g>=f}});Ka("Array.prototype.find",function(a){return a?a:function(b,c){a:{var d=this;d instanceof String&&(d=String(d));for(var e=d.length,f=0;f<e;f++){var g=d[f];if(b.call(c,g,f,d)){b=g;break a}}b=void 0}return b}});var Ua=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)};
+Ka("WeakMap",function(a){function b(){}function c(l){var m=typeof l;return"object"===m&&null!==l||"function"===m}function d(l){if(!Ua(l,f)){var m=new b;Ha(l,f,{value:m})}}function e(l){var m=Object[l];m&&(Object[l]=function(p){if(p instanceof b)return p;Object.isExtensible(p)&&d(p);return m(p)})}if(function(){if(!a||!Object.seal)return!1;try{var l=Object.seal({}),m=Object.seal({}),p=new a([[l,2],[m,3]]);if(2!=p.get(l)||3!=p.get(m))return!1;p.delete(l);p.set(m,4);return!p.has(l)&&4==p.get(m)}catch(v){return!1}}())return a;
+var f="$jscomp_hidden_"+Math.random();e("freeze");e("preventExtensions");e("seal");var g=0,k=function(l){this.j=(g+=Math.random()+1).toString();if(l){l=_.Ma(l);for(var m;!(m=l.next()).done;)m=m.value,this.set(m[0],m[1])}};k.prototype.set=function(l,m){if(!c(l))throw Error("g");d(l);if(!Ua(l,f))throw Error("h`"+l);l[f][this.j]=m;return this};k.prototype.get=function(l){return c(l)&&Ua(l,f)?l[f][this.j]:void 0};k.prototype.has=function(l){return c(l)&&Ua(l,f)&&Ua(l[f],this.j)};k.prototype.delete=function(l){return c(l)&&
+Ua(l,f)&&Ua(l[f],this.j)?delete l[f][this.j]:!1};return k});
+Ka("Map",function(a){if(function(){if(!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var k=Object.seal({x:4}),l=new a(_.Ma([[k,"s"]]));if("s"!=l.get(k)||1!=l.size||l.get({x:4})||l.set({x:4},"t")!=l||2!=l.size)return!1;var m=l.entries(),p=m.next();if(p.done||p.value[0]!=k||"s"!=p.value[1])return!1;p=m.next();return p.done||4!=p.value[0].x||"t"!=p.value[1]||!m.next().done?!1:!0}catch(v){return!1}}())return a;var b=new WeakMap,c=function(k){this.o={};this.j=
+f();this.size=0;if(k){k=_.Ma(k);for(var l;!(l=k.next()).done;)l=l.value,this.set(l[0],l[1])}};c.prototype.set=function(k,l){k=0===k?0:k;var m=d(this,k);m.list||(m.list=this.o[m.id]=[]);m.Qa?m.Qa.value=l:(m.Qa={next:this.j,Vb:this.j.Vb,head:this.j,key:k,value:l},m.list.push(m.Qa),this.j.Vb.next=m.Qa,this.j.Vb=m.Qa,this.size++);return this};c.prototype.delete=function(k){k=d(this,k);return k.Qa&&k.list?(k.list.splice(k.index,1),k.list.length||delete this.o[k.id],k.Qa.Vb.next=k.Qa.next,k.Qa.next.Vb=
+k.Qa.Vb,k.Qa.head=null,this.size--,!0):!1};c.prototype.clear=function(){this.o={};this.j=this.j.Vb=f();this.size=0};c.prototype.has=function(k){return!!d(this,k).Qa};c.prototype.get=function(k){return(k=d(this,k).Qa)&&k.value};c.prototype.entries=function(){return e(this,function(k){return[k.key,k.value]})};c.prototype.keys=function(){return e(this,function(k){return k.key})};c.prototype.values=function(){return e(this,function(k){return k.value})};c.prototype.forEach=function(k,l){for(var m=this.entries(),
+p;!(p=m.next()).done;)p=p.value,k.call(l,p[1],p[0],this)};c.prototype[Symbol.iterator]=c.prototype.entries;var d=function(k,l){var m=l&&typeof l;"object"==m||"function"==m?b.has(l)?m=b.get(l):(m=""+ ++g,b.set(l,m)):m="p_"+l;var p=k.o[m];if(p&&Ua(k.o,m))for(k=0;k<p.length;k++){var v=p[k];if(l!==l&&v.key!==v.key||l===v.key)return{id:m,list:p,index:k,Qa:v}}return{id:m,list:p,index:-1,Qa:void 0}},e=function(k,l){var m=k.j;return La(function(){if(m){for(;m.head!=k.j;)m=m.Vb;for(;m.next!=m.head;)return m=
+m.next,{done:!1,value:l(m)};m=null}return{done:!0,value:void 0}})},f=function(){var k={};return k.Vb=k.next=k.head=k},g=0;return c});var Va=function(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var f=c++;return{value:b(f,a[f]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e};Ka("Array.prototype.entries",function(a){return a?a:function(){return Va(this,function(b,c){return[b,c]})}});
+Ka("Array.prototype.keys",function(a){return a?a:function(){return Va(this,function(b){return b})}});Ka("Number.MAX_SAFE_INTEGER",function(){return 9007199254740991});var Wa="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)Ua(d,e)&&(a[e]=d[e])}return a};Ka("Object.assign",function(a){return a||Wa});Ka("Array.prototype.values",function(a){return a?a:function(){return Va(this,function(b,c){return c})}});
+Ka("Array.from",function(a){return a?a:function(b,c,d){c=null!=c?c:function(k){return k};var e=[],f="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];if("function"==typeof f){b=f.call(b);for(var g=0;!(f=b.next()).done;)e.push(c.call(d,f.value,g++))}else for(f=b.length,g=0;g<f;g++)e.push(c.call(d,b[g],g));return e}});Ka("Object.is",function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});
+Ka("Array.prototype.includes",function(a){return a?a:function(b,c){var d=this;d instanceof String&&(d=String(d));var e=d.length;c=c||0;for(0>c&&(c=Math.max(c+e,0));c<e;c++){var f=d[c];if(f===b||Object.is(f,b))return!0}return!1}});Ka("String.prototype.includes",function(a){return a?a:function(b,c){return-1!==Ta(this,b,"includes").indexOf(b,c||0)}});Ka("Object.entries",function(a){return a?a:function(b){var c=[],d;for(d in b)Ua(b,d)&&c.push([d,b[d]]);return c}});
+Ka("Array.prototype.fill",function(a){return a?a:function(b,c,d){var e=this.length||0;0>c&&(c=Math.max(0,e+c));if(null==d||d>e)d=e;d=Number(d);0>d&&(d=Math.max(0,e+d));for(c=Number(c||0);c<d;c++)this[c]=b;return this}});var Xa=function(a){return a?a:Array.prototype.fill};Ka("Int8Array.prototype.fill",Xa);Ka("Uint8Array.prototype.fill",Xa);Ka("Uint8ClampedArray.prototype.fill",Xa);Ka("Int16Array.prototype.fill",Xa);Ka("Uint16Array.prototype.fill",Xa);Ka("Int32Array.prototype.fill",Xa);
+Ka("Uint32Array.prototype.fill",Xa);Ka("Float32Array.prototype.fill",Xa);Ka("Float64Array.prototype.fill",Xa);
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+var ab,bb,db,eb,fb;_.Ya=_.Ya||{};_.n=this||self;_.Za=function(){};_.$a=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b};_.cb=function(a){return Object.prototype.hasOwnProperty.call(a,ab)&&a[ab]||(a[ab]=++bb)};ab="closure_uid_"+(1E9*Math.random()>>>0);bb=0;db=function(a,b,c){return a.call.apply(a.bind,arguments)};
+eb=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}};_.w=function(a,b,c){Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?_.w=db:_.w=eb;return _.w.apply(null,arguments)};
+_.y=function(a,b){a=a.split(".");var c=_.n;a[0]in c||"undefined"==typeof c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b};_.z=function(a,b){function c(){}c.prototype=b.prototype;a.X=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.wk=function(d,e,f){for(var g=Array(arguments.length-2),k=2;k<arguments.length;k++)g[k-2]=arguments[k];return b.prototype[e].apply(d,g)}};fb=function(a){return a};
+_.gb=function(a){var b=null,c=_.n.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:fb,createScript:fb,createScriptURL:fb})}catch(d){_.n.console&&_.n.console.error(d.message)}return b};
+_.z(_.aa,Error);_.aa.prototype.name="CustomError";
+_.hb="undefined"!==typeof TextDecoder;_.ib="undefined"!==typeof TextEncoder;
+_.jb=function(a,b){return 0==a.lastIndexOf(b,0)};_.kb=String.prototype.trim?function(a){return a.trim()}:function(a){return/^[\s\xa0]*([\s\S]*?)[\s\xa0]*$/.exec(a)[1]};
+_.ma=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if("string"===typeof a)return"string"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var c=0;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1};_.lb=Array.prototype.forEach?function(a,b,c){Array.prototype.forEach.call(a,b,c)}:function(a,b,c){for(var d=a.length,e="string"===typeof a?a.split(""):a,f=0;f<d;f++)f in e&&b.call(c,e[f],f,a)};
+_.mb=Array.prototype.filter?function(a,b,c){return Array.prototype.filter.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=[],f=0,g="string"===typeof a?a.split(""):a,k=0;k<d;k++)if(k in g){var l=g[k];b.call(c,l,k,a)&&(e[f++]=l)}return e};_.nb=Array.prototype.map?function(a,b,c){return Array.prototype.map.call(a,b,c)}:function(a,b,c){for(var d=a.length,e=Array(d),f="string"===typeof a?a.split(""):a,g=0;g<d;g++)g in f&&(e[g]=b.call(c,f[g],g,a));return e};
+_.ob=Array.prototype.reduce?function(a,b,c){return Array.prototype.reduce.call(a,b,c)}:function(a,b,c){var d=c;(0,_.lb)(a,function(e,f){d=b.call(void 0,d,e,f,a)});return d};_.pb=Array.prototype.some?function(a,b){return Array.prototype.some.call(a,b,void 0)}:function(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)if(e in d&&b.call(void 0,d[e],e,a))return!0;return!1};
+_.qb=function(a){_.qb[" "](a);return a};_.qb[" "]=_.Za;
+var Eb,Fb,Lb;_.rb=_.ca();_.B=_.da();_.sb=_.q("Edge");_.tb=_.sb||_.B;_.ub=_.q("Gecko")&&!_.pa()&&!(_.q("Trident")||_.q("MSIE"))&&!_.q("Edge");_.vb=_.pa();_.wb=_.q("Macintosh");_.xb=_.q("Windows");_.yb=_.q("Linux")||_.q("CrOS");_.zb=_.q("Android");_.Ab=ka();_.Bb=_.q("iPad");_.Cb=_.q("iPod");_.Db=_.la();Eb=function(){var a=_.n.document;return a?a.documentMode:void 0};
+a:{var Hb="",Ib=function(){var a=_.ba();if(_.ub)return/rv:([^\);]+)(\)|;)/.exec(a);if(_.sb)return/Edge\/([\d\.]+)/.exec(a);if(_.B)return/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a);if(_.vb)return/WebKit\/(\S+)/.exec(a);if(_.rb)return/(?:Version)[ \/]?(\S+)/.exec(a)}();Ib&&(Hb=Ib?Ib[1]:"");if(_.B){var Jb=Eb();if(null!=Jb&&Jb>parseFloat(Hb)){Fb=String(Jb);break a}}Fb=Hb}_.Kb=Fb;if(_.n.document&&_.B){var Mb=Eb();Lb=Mb?Mb:parseInt(_.Kb,10)||void 0}else Lb=void 0;_.Nb=Lb;
+_.Ob=_.ea();_.Pb=ka()||_.q("iPod");_.Qb=_.q("iPad");_.Rb=_.ja();_.Sb=_.fa();_.Tb=_.ia()&&!_.la();
+var Ub;Ub={};_.Vb=null;_.va=function(a){var b;void 0===b&&(b=0);_.Wb();b=Ub[b];for(var c=Array(Math.floor(a.length/3)),d=b[64]||"",e=0,f=0;e<a.length-2;e+=3){var g=a[e],k=a[e+1],l=a[e+2],m=b[g>>2];g=b[(g&3)<<4|k>>4];k=b[(k&15)<<2|l>>6];l=b[l&63];c[f++]=m+g+k+l}m=0;l=d;switch(a.length-e){case 2:m=a[e+1],l=b[(m&15)<<2]||d;case 1:a=a[e],c[f]=b[a>>2]+b[(a&3)<<4|m>>4]+l+d}return c.join("")};
+_.Wb=function(){if(!_.Vb){_.Vb={};for(var a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split(""),b=["+/=","+/","-_=","-_.","-_"],c=0;5>c;c++){var d=a.concat(b[c].split(""));Ub[c]=d;for(var e=0;e<d.length;e++){var f=d[e];void 0===_.Vb[f]&&(_.Vb[f]=e)}}}};
+_.qa="function"===typeof Uint8Array;
+_.Xb="function"===typeof Uint8Array.prototype.slice;
+var sa="function"===typeof Symbol&&"symbol"===typeof Symbol()?Symbol(void 0):void 0;
+_.C=function(a,b,c){var d=_.Zb;_.Zb=null;a||(a=d);d=this.constructor.$b;a||(a=d?[d]:[]);this.A=(d?0:-1)-(this.constructor.Bk||0);this.j=void 0;this.Sa=a;a:{d=this.Sa.length;a=d-1;if(d&&(d=this.Sa[a],ua(d))){this.B=a-this.A;this.o=d;break a}void 0!==b&&-1<b?(this.B=Math.max(b,a+1-this.A),this.o=void 0):this.B=Number.MAX_VALUE}if(c)for(b=0;b<c.length;b++)if(a=c[b],a<this.B)a+=this.A,(d=this.Sa[a])?Array.isArray(d)&&_.ta(d):this.Sa[a]=_.$b;else{d=this.o||(this.o=this.Sa[this.B+this.A]={});var e=d[a];
+e?Array.isArray(e)&&_.ta(e):d[a]=_.$b}};_.$b=Object.freeze(_.ta([]));_.D=function(a,b,c){return-1===b?null:b>=a.B?a.o?a.o[b]:void 0:(void 0===c?0:c)&&a.o&&(c=a.o[b],null!=c)?c:a.Sa[b+a.A]};_.ac=function(a,b){return null!=_.D(a,b)};_.E=function(a,b){a=_.D(a,b);return null==a?a:!!a};_.bc=function(a,b,c){a=_.D(a,b);return null==a?c:a};_.cc=function(a,b,c){a=_.D(a,b);a=null==a?a:+a;return null==a?void 0===c?0:c:a};
+_.F=function(a,b,c,d){b<a.B&&(void 0===d||!d)?a.Sa[b+a.A]=c:(a.o||(a.o=a.Sa[a.B+a.A]={}))[b]=c;return a};_.G=function(a,b,c,d,e){if(-1===c)return null;a.j||(a.j={});var f=a.j[c];if(f)return f;e=_.D(a,c,void 0===e?!1:e);if(null==e&&!d)return f;b=new b(e);return a.j[c]=b};_.dc=function(a,b,c){var d;a.j||(a.j={});var e=c?c.Sa:c;a.j[b]=c;return _.F(a,b,e,void 0===d?!1:d)};_.C.prototype.toJSON=function(){var a=this.Sa;return _.Yb?a:_.za(a,Ba)};_.C.prototype.toString=function(){return this.Sa.toString()};
+_.ec=function(a,b,c){return _.bc(a,b,void 0===c?0:c)};
+_.fc=Symbol();_.gc=Symbol();_.hc=Symbol();_.ic=Symbol();
+var jc=function(a){_.C.call(this,a)};_.u(jc,_.C);
+_.kc=function(a){_.C.call(this,a)};_.u(_.kc,_.C);_.kc.prototype.Kc=function(a){return _.F(this,3,a)};
+var lc=function(a){_.C.call(this,a)};_.u(lc,_.C);
+_.mc=function(a){_.C.call(this,a)};_.u(_.mc,_.C);_.mc.prototype.Xe=function(a){return _.F(this,24,a)};
+_.nc=function(a){_.C.call(this,a)};_.u(_.nc,_.C);
+_.H=function(){this.Kb=this.Kb;this.Oa=this.Oa};_.H.prototype.Kb=!1;_.H.prototype.isDisposed=function(){return this.Kb};_.H.prototype.oa=function(){this.Kb||(this.Kb=!0,this.R())};_.H.prototype.R=function(){if(this.Oa)for(;this.Oa.length;)this.Oa.shift()()};
+var oc=function(a){_.H.call(this);this.A=a;this.j=[];this.o={}};_.u(oc,_.H);oc.prototype.resolve=function(a){var b=this.A;a=a.split(".");for(var c=a.length,d=0;d<c;++d)if(b[a[d]])b=b[a[d]];else return null;return b instanceof Function?b:null};oc.prototype.hd=function(){for(var a=this.j.length,b=this.j,c=[],d=0;d<a;++d){var e=b[d].j(),f=this.resolve(e);if(f&&f!=this.o[e])try{b[d].hd(f)}catch(g){}else c.push(b[d])}this.j=c.concat(b.slice(a))};
+var pc=function(a){_.H.call(this);this.A=a;this.C=this.j=null;this.B=0;this.F={};this.o=!1;a=window.navigator.userAgent;0<=a.indexOf("MSIE")&&0<=a.indexOf("Trident")&&(a=/\b(?:MSIE|rv)[: ]([^\);]+)(\)|;)/.exec(a))&&a[1]&&9>parseFloat(a[1])&&(this.o=!0)};_.u(pc,_.H);pc.prototype.D=function(a,b){this.j=b;this.C=a;b.preventDefault?b.preventDefault():b.returnValue=!1};
+_.qc=function(a){_.C.call(this,a)};_.u(_.qc,_.C);
+_.rc=function(a){_.C.call(this,a)};_.u(_.rc,_.C);
+_.sc=function(){this.data={}};_.sc.prototype.o=function(){window.console&&window.console.log&&window.console.log("Log data: ",this.data)};_.sc.prototype.j=function(a){var b=[],c;for(c in this.data)b.push(encodeURIComponent(c)+"="+encodeURIComponent(String(this.data[c])));return("atyp=i&zx="+(new Date).getTime()+"&"+b.join("&")).substr(0,a)};
+var tc=function(a,b){this.data={};var c=_.G(a,lc,8)||new lc;window.google&&window.google.kEI&&(this.data.ei=window.google.kEI);this.data.sei=_.t(_.D(a,10));this.data.ogf=_.t(_.D(c,3));this.data.ogrp=(window.google&&window.google.sn?!/.*hp$/.test(window.google.sn):_.r(_.E(a,7)))?"1":"";this.data.ogv=_.t(_.D(c,6))+"."+_.t(_.D(c,7));this.data.ogd=_.t(_.D(a,21));this.data.ogc=_.t(_.D(a,20));this.data.ogl=_.t(_.D(a,5));b&&(this.data.oggv=b)};_.u(tc,_.sc);
+var Ea="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");
+_.uc=function(a,b,c,d,e){tc.call(this,a,b);_.Fa(this.data,{jexpid:_.t(_.D(a,9)),srcpg:"prop="+_.t(_.D(a,6)),jsr:Math.round(1/d),emsg:c.name+":"+c.message});if(e){e._sn&&(e._sn="og."+e._sn);for(var f in e)this.data[encodeURIComponent(f)]=e[f]}};_.u(_.uc,tc);
+var vc,wc=function(){void 0===vc&&(vc=_.gb("ogb-qtm#html"));return vc};
+var xc;_.yc=function(a,b){this.j=b===xc?a:""};_.h=_.yc.prototype;_.h.Nb=!0;_.h.lb=function(){return this.j.toString()};_.h.Be=!0;_.h.qc=function(){return 1};_.h.toString=function(){return this.j+""};_.Ac=function(a){return _.zc(a).toString()};_.zc=function(a){return a instanceof _.yc&&a.constructor===_.yc?a.j:"type_error:TrustedResourceUrl"};xc={};_.Bc=function(a){var b=wc();a=b?b.createScriptURL(a):a;return new _.yc(a,xc)};
+var Fc,Gc,Hc,Cc;_.Dc=function(a,b){this.j=b===Cc?a:""};_.h=_.Dc.prototype;_.h.Nb=!0;_.h.lb=function(){return this.j.toString()};_.h.Be=!0;_.h.qc=function(){return 1};_.h.toString=function(){return this.j.toString()};_.Ec=function(a){return a instanceof _.Dc&&a.constructor===_.Dc?a.j:"type_error:SafeUrl"};
+Fc=RegExp('^(?:audio/(?:3gpp2|3gpp|aac|L16|midi|mp3|mp4|mpeg|oga|ogg|opus|x-m4a|x-matroska|x-wav|wav|webm)|font/\\w+|image/(?:bmp|gif|jpeg|jpg|png|tiff|webp|x-icon)|video/(?:mpeg|mp4|ogg|webm|quicktime|x-matroska))(?:;\\w+=(?:\\w+|"[\\w;,= ]+"))*$',"i");Gc=/^data:(.*);base64,[a-z0-9+\/]+=*$/i;Hc=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;
+_.Jc=function(a){if(a instanceof _.Dc)return a;a="object"==typeof a&&a.Nb?a.lb():String(a);if(Hc.test(a))a=_.Ic(a);else{a=String(a);a=a.replace(/(%0A|%0D)/g,"");var b=a.match(Gc);a=b&&Fc.test(b[1])?_.Ic(a):null}return a};_.Kc=function(a){if(a instanceof _.Dc)return a;a="object"==typeof a&&a.Nb?a.lb():String(a);Hc.test(a)||(a="about:invalid#zClosurez");return _.Ic(a)};Cc={};_.Ic=function(a){return new _.Dc(a,Cc)};_.Lc=_.Ic("about:invalid#zClosurez");
+_.Mc={};_.Nc=function(a,b){this.j=b===_.Mc?a:"";this.Nb=!0};_.Nc.prototype.lb=function(){return this.j};_.Nc.prototype.toString=function(){return this.j.toString()};_.Oc=new _.Nc("",_.Mc);_.Pc=RegExp("^[-,.\"'%_!#/ a-zA-Z0-9\\[\\]]+$");_.Qc=RegExp("\\b(url\\([ \t\n]*)('[ -&(-\\[\\]-~]*'|\"[ !#-\\[\\]-~]*\"|[!#-&*-\\[\\]-~]*)([ \t\n]*\\))","g");
+_.Rc=RegExp("\\b(calc|cubic-bezier|fit-content|hsl|hsla|linear-gradient|matrix|minmax|repeat|rgb|rgba|(rotate|scale|translate)(X|Y|Z|3d)?|var)\\([-+*/0-9a-zA-Z.%#\\[\\], ]+\\)","g");
+var Sc;Sc={};_.Tc=function(a,b,c){this.j=c===Sc?a:"";this.o=b;this.Nb=this.Be=!0};_.Tc.prototype.qc=function(){return this.o};_.Tc.prototype.lb=function(){return this.j.toString()};_.Tc.prototype.toString=function(){return this.j.toString()};_.Uc=function(a){return a instanceof _.Tc&&a.constructor===_.Tc?a.j:"type_error:SafeHtml"};_.Vc=function(a,b){var c=wc();a=c?c.createHTML(a):a;return new _.Tc(a,b,Sc)};_.Wc=new _.Tc(_.n.trustedTypes&&_.n.trustedTypes.emptyHTML||"",0,Sc);_.Xc=_.Vc("<br>",0);
+var Zc;_.Yc=function(a){var b=!1,c;return function(){b||(c=a(),b=!0);return c}}(function(){var a=document.createElement("div"),b=document.createElement("div");b.appendChild(document.createElement("div"));a.appendChild(b);b=a.firstChild.firstChild;a.innerHTML=_.Uc(_.Wc);return!b.parentElement});Zc=/^[\w+/_-]+[=]{0,2}$/;
+_.$c=function(a){a=(a||_.n).document;return a.querySelector?(a=a.querySelector('style[nonce],link[rel="stylesheet"][nonce]'))&&(a=a.nonce||a.getAttribute("nonce"))&&Zc.test(a)?a:"":""};
+_.ad=RegExp("^\\s{3,4}at(?: (?:(.*?)\\.)?((?:new )?(?:[a-zA-Z_$][\\w$]*|<anonymous>))(?: \\[as ([a-zA-Z_$][\\w$]*)\\])?)? (?:\\(unknown source\\)|\\(native\\)|\\((?:eval at )?((?:http|https|file)://[^\\s)]+|javascript:.*)\\)|((?:http|https|file)://[^\\s)]+|javascript:.*))$");_.bd=RegExp("^(?:(.*?)\\.)?([a-zA-Z_$][\\w$]*(?:/.?<)?)?(\\(.*\\))?@(?::0|((?:http|https|file)://[^\\s)]+|javascript:.*))$");
+var cd,fd,ed;_.dd=function(a){var b=window.google&&window.google.logUrl?"":"https://www.google.com";b+="/gen_204?use_corp=on&";b+=a.j(2040-b.length);cd(_.Jc(b)||_.Lc)};cd=function(a){var b=new Image,c=ed;b.onerror=b.onload=b.onabort=function(){c in fd&&delete fd[c]};fd[ed++]=b;b.src=_.Ec(a)};fd=[];ed=0;
+_.gd=function(a){_.C.call(this,a)};_.u(_.gd,_.C);
+_.hd=function(a){var b="vc";if(a.vc&&a.hasOwnProperty(b))return a.vc;b=new a;return a.vc=b};
+_.id=function(){this.j={};this.o={}};_.kd=function(a,b){var c=_.id.j();if(a in c.j){if(c.j[a]!=b)throw new jd(a);}else{c.j[a]=b;if(b=c.o[a])for(var d=0,e=b.length;d<e;d++)b[d].j(c.j,a);delete c.o[a]}};_.md=function(a,b){if(b in a.j)return a.j[b];throw new ld(b);};_.id.j=function(){return _.hd(_.id)};var nd=function(){_.aa.call(this)};_.u(nd,_.aa);var jd=function(){_.aa.call(this)};_.u(jd,nd);var ld=function(){_.aa.call(this)};_.u(ld,nd);
+var qd=function(){var a=od;this.C=pd;this.o=_.Ca(_.cc(a,2,.001),.001);this.F=_.r(_.E(a,1))&&Math.random()<this.o;this.D=_.Ca(_.ec(a,3,1),1);this.B=0;this.j=this.A=null};qd.prototype.log=function(a,b){if(this.j){var c=new jc;_.F(c,1,a.message);_.F(c,2,a.stack);_.F(c,3,a.lineNumber);_.F(c,5,1);var d=new _.kc;_.dc(d,40,c);this.j.log(98,d)}try{if(this.F&&this.B<this.D){try{var e=(this.A||_.md(_.id.j(),"lm")).B(a,b)}catch(f){e=new _.uc(this.C,"quantum:gapiBuildLabel",a,this.o,b)}_.dd(e);this.B++}}catch(f){}};
+var rd=[1,2,3,4,5,6,9,10,11,13,14,28,29,30,34,35,37,38,39,40,42,43,48,49,50,51,52,53,62,500],ud=function(a,b,c,d,e,f){tc.call(this,a,b);_.Fa(this.data,{oge:d,ogex:_.t(_.D(a,9)),ogp:_.t(_.D(a,6)),ogsr:Math.round(1/(sd(d)?_.Ca(_.cc(c,3,1)):_.Ca(_.cc(c,2,1E-4)))),ogus:e});if(f){"ogw"in f&&(this.data.ogw=f.ogw,delete f.ogw);"ved"in f&&(this.data.ved=f.ved,delete f.ved);a=[];for(var g in f)0!=a.length&&a.push(","),a.push(td(g)),a.push("."),a.push(td(f[g]));f=a.join("");""!=f&&(this.data.ogad=f)}};
+_.u(ud,tc);var td=function(a){a=String(a);return a.replace(".","%2E").replace(",","%2C")},sd=function(a){if(!vd){vd={};for(var b=0;b<rd.length;b++)vd[rd[b]]=!0}return!!vd[a]},vd=null;
+var wd=function(a){_.C.call(this,a)};_.u(wd,_.C);
+var Ad=function(){var a=xd,b=yd,c=zd;this.o=a;this.j=b;this.B=_.Ca(_.cc(a,2,1E-4),1E-4);this.F=_.Ca(_.cc(a,3,1),1);b=Math.random();this.A=_.r(_.E(a,1))&&b<this.B;this.C=_.r(_.E(a,1))&&b<this.F;a=0;_.r(_.E(c,1))&&(a|=1);_.r(_.E(c,2))&&(a|=2);_.r(_.E(c,3))&&(a|=4);this.D=a};Ad.prototype.log=function(a,b){try{if(sd(a)?this.C:this.A){var c=new ud(this.j,"quantum:gapiBuildLabel",this.o,a,this.D,b);_.dd(c)}}catch(d){}};
+_.Bd=function(a){this.j=a;this.o=void 0;this.A=[]};_.Bd.prototype.then=function(a,b,c){this.A.push(new Cd(a,b,c));Dd(this)};_.Bd.prototype.resolve=function(a){if(void 0!==this.j||void 0!==this.o)throw Error("F");this.j=a;Dd(this)};_.Bd.prototype.reject=function(a){if(void 0!==this.j||void 0!==this.o)throw Error("F");this.o=a;Dd(this)};var Dd=function(a){if(0<a.A.length){var b=void 0!==a.j,c=void 0!==a.o;if(b||c){b=b?a.B:a.C;c=a.A;a.A=[];try{_.lb(c,b,a)}catch(d){console.error(d)}}}};
+_.Bd.prototype.B=function(a){a.o&&a.o.call(a.j,this.j)};_.Bd.prototype.C=function(a){a.A&&a.A.call(a.j,this.o)};var Cd=function(a,b,c){this.o=a;this.A=b;this.j=c};
+_.I=function(){this.B=new _.Bd;this.j=new _.Bd;this.G=new _.Bd;this.F=new _.Bd;this.D=new _.Bd;this.H=new _.Bd;this.C=new _.Bd;this.A=new _.Bd;this.o=new _.Bd;this.K=new _.Bd};_.h=_.I.prototype;_.h.Ih=function(){return this.B};_.h.Qh=function(){return this.j};_.h.Xh=function(){return this.G};_.h.Ph=function(){return this.F};_.h.Vh=function(){return this.D};_.h.Mh=function(){return this.H};_.h.Nh=function(){return this.C};_.h.Ch=function(){return this.A};_.h.Bh=function(){return this.o};_.I.j=function(){return _.hd(_.I)};
+var Ed=function(a){_.C.call(this,a)};_.u(Ed,_.C);_.Gd=function(){return _.G(_.Fd,_.mc,1)};_.Hd=function(){return _.G(_.Fd,_.nc,5)};
+var Id;window.gbar_&&window.gbar_.CONFIG?Id=window.gbar_.CONFIG[0]||{}:Id=[];_.Fd=new Ed(Id);
+var od,pd,yd,zd,xd;od=_.G(_.Fd,_.gd,3)||new _.gd;pd=_.Gd()||new _.mc;_.J=new qd;yd=_.Gd()||new _.mc;zd=_.Hd()||new _.nc;xd=_.G(_.Fd,wd,4)||new wd;_.Jd=new Ad;
+_.y("gbar_._DumpException",function(a){_.J?_.J.log(a):console.error(a)});
+_.Kd=new pc(_.J);
+_.Jd.log(8,{m:"BackCompat"==document.compatMode?"q":"s"});_.y("gbar.A",_.Bd);_.Bd.prototype.aa=_.Bd.prototype.then;_.y("gbar.B",_.I);_.I.prototype.ba=_.I.prototype.Qh;_.I.prototype.bb=_.I.prototype.Xh;_.I.prototype.bd=_.I.prototype.Vh;_.I.prototype.bf=_.I.prototype.Ih;_.I.prototype.bg=_.I.prototype.Ph;_.I.prototype.bh=_.I.prototype.Mh;_.I.prototype.bi=_.I.prototype.Nh;_.I.prototype.bj=_.I.prototype.Ch;_.I.prototype.bk=_.I.prototype.Bh;_.y("gbar.a",_.I.j());var Ld=new oc(window);_.kd("api",Ld);
+var Md=_.Hd()||new _.nc;window.__PVT=_.t(_.D(Md,8));_.kd("eq",_.Kd);
+
+}catch(e){_._DumpException(e)}
+try{
+var Nd=function(a){_.C.call(this,a)};_.u(Nd,_.C);
+var Od=function(){_.H.call(this);this.o=[];this.j=[]};_.u(Od,_.H);Od.prototype.A=function(a,b){this.o.push({features:a,options:b})};Od.prototype.init=function(a,b,c){window.gapi={};var d=window.___jsl={};d.h=_.t(_.D(a,1));_.ac(a,12)&&(d.dpo=_.r(_.E(a,12)));d.ms=_.t(_.D(a,2));d.m=_.t(_.D(a,3));d.l=[];_.D(b,1)&&(a=_.D(b,3))&&this.j.push(a);_.D(c,1)&&(c=_.D(c,2))&&this.j.push(c);_.y("gapi.load",(0,_.w)(this.A,this));return this};
+var Pd=_.G(_.Fd,_.qc,14)||new _.qc,Qd=_.G(_.Fd,_.rc,9)||new _.rc,Rd=new Nd,Sd=new Od;Sd.init(Pd,Qd,Rd);_.kd("gs",Sd);
+
+}catch(e){_._DumpException(e)}
+})(this.gbar_);
+// Google Inc.
+</script><style nonce="/o0rCvpoCLbIcm25lPeXbg">.gb_Ua:not(.gb_Ad){font:13px/27px Roboto,RobotoDraft,Arial,sans-serif;z-index:986}@keyframes gb__a{0%{opacity:0}50%{opacity:1}}a.gb_W{border:none;color:#4285f4;cursor:default;font-weight:bold;outline:none;position:relative;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}a.gb_W:hover:after,a.gb_W:focus:after{background-color:rgba(0,0,0,.12);content:'';height:100%;left:0;position:absolute;top:0;width:100%}a.gb_W:hover,a.gb_W:focus{text-decoration:none}a.gb_W:active{background-color:rgba(153,153,153,.4);text-decoration:none}a.gb_X{background-color:#4285f4;color:#fff}a.gb_X:active{background-color:#0043b2}.gb_Z{box-shadow:0 1px 1px rgba(0,0,0,.16)}.gb_W,.gb_X,.gb_0,.gb_1{display:inline-block;line-height:28px;padding:0 12px;border-radius:2px}.gb_0{background:#f8f8f8;border:1px solid #c6c6c6}.gb_1{background:#f8f8f8}.gb_0,#gb a.gb_0.gb_0,.gb_1{color:#666;cursor:default;text-decoration:none}#gb a.gb_1.gb_1{cursor:default;text-decoration:none}.gb_1{border:1px solid #4285f4;font-weight:bold;outline:none;background:#4285f4;background:linear-gradient(top,#4387fd,#4683ea);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4387fd,endColorstr=#4683ea,GradientType=0)}#gb a.gb_1.gb_1{color:#fff}.gb_1:hover{box-shadow:0 1px 0 rgba(0,0,0,.15)}.gb_1:active{box-shadow:inset 0 2px 0 rgba(0,0,0,.15);background:#3c78dc;background:linear-gradient(top,#3c7ae4,#3f76d3);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3c7ae4,endColorstr=#3f76d3,GradientType=0)}.gb_ya{display:none!important}.gb_za{visibility:hidden}.gb_ad{display:inline-block;vertical-align:middle}.gb_sf{position:relative}.gb_A{display:inline-block;outline:none;vertical-align:middle;border-radius:2px;box-sizing:border-box;height:40px;width:40px;color:#000;cursor:pointer;text-decoration:none}#gb#gb a.gb_A{color:#000;cursor:pointer;text-decoration:none}.gb_Wa{border-color:transparent;border-bottom-color:#fff;border-style:dashed dashed solid;border-width:0 8.5px 8.5px;display:none;position:absolute;left:11.5px;top:43px;z-index:1;height:0;width:0;animation:gb__a .2s}.gb_Xa{border-color:transparent;border-style:dashed dashed solid;border-width:0 8.5px 8.5px;display:none;position:absolute;left:11.5px;z-index:1;height:0;width:0;animation:gb__a .2s;border-bottom-color:#ccc;border-bottom-color:rgba(0,0,0,.2);top:42px}x:-o-prefocus,div.gb_Xa{border-bottom-color:#ccc}.gb_C{background:#fff;border:1px solid #ccc;border-color:rgba(0,0,0,.2);color:#000;box-shadow:0 2px 10px rgba(0,0,0,.2);display:none;outline:none;overflow:hidden;position:absolute;right:8px;top:62px;animation:gb__a .2s;border-radius:2px}.gb_ad.gb_ja .gb_Wa,.gb_ad.gb_ja .gb_Xa,.gb_ad.gb_ja .gb_C,.gb_ja.gb_C{display:block}.gb_ad.gb_ja.gb_tf .gb_Wa,.gb_ad.gb_ja.gb_tf .gb_Xa{display:none}.gb_uf{position:absolute;right:8px;top:62px;z-index:-1}.gb_Ha .gb_Wa,.gb_Ha .gb_Xa,.gb_Ha .gb_C{margin-top:-10px}.gb_ad:first-child,#gbsfw:first-child+.gb_ad{padding-left:4px}.gb_na.gb_Ke .gb_ad:first-child{padding-left:0}.gb_Le{position:relative}.gb_Lc .gb_Le,.gb_Rd .gb_Le{float:right}.gb_A{padding:8px;cursor:pointer}.gb_na .gb_2c:not(.gb_W):focus img{background-color:rgba(0,0,0,0.20);outline:none;border-radius:50%}.gb_Me button:focus svg,.gb_Me button:hover svg,.gb_Me button:active svg,.gb_A:focus,.gb_A:hover,.gb_A:active,.gb_A[aria-expanded=true]{outline:none;border-radius:50%}.gb_uc .gb_Me.gb_Ne button:focus svg,.gb_uc .gb_Me.gb_Ne button:focus:hover svg,.gb_Me button:focus svg,.gb_Me button:focus:hover svg,.gb_A:focus,.gb_A:focus:hover{background-color:rgba(60,64,67,0.1)}.gb_uc .gb_Me.gb_Ne button:active svg,.gb_Me button:active svg,.gb_A:active{background-color:rgba(60,64,67,0.12)}.gb_uc .gb_Me.gb_Ne button:hover svg,.gb_Me button:hover svg,.gb_A:hover{background-color:rgba(60,64,67,0.08)}.gb_ga .gb_A.gb_Ka:hover{background-color:transparent}.gb_A[aria-expanded=true],.gb_A:hover[aria-expanded=true]{background-color:rgba(95,99,104,0.24)}.gb_A[aria-expanded=true] .gb_Oe,.gb_A[aria-expanded=true] .gb_Pe{fill:#5f6368;opacity:1}.gb_uc .gb_Me button:hover svg,.gb_uc .gb_A:hover{background-color:rgba(232,234,237,0.08)}.gb_uc .gb_Me button:focus svg,.gb_uc .gb_Me button:focus:hover svg,.gb_uc .gb_A:focus,.gb_uc .gb_A:focus:hover{background-color:rgba(232,234,237,0.10)}.gb_uc .gb_Me button:active svg,.gb_uc .gb_A:active{background-color:rgba(232,234,237,0.12)}.gb_uc .gb_A[aria-expanded=true],.gb_uc .gb_A:hover[aria-expanded=true]{background-color:rgba(255,255,255,0.12)}.gb_uc .gb_A[aria-expanded=true] .gb_Oe,.gb_uc .gb_A[aria-expanded=true] .gb_Pe{fill:#ffffff;opacity:1}.gb_ad{padding:4px}.gb_na.gb_Ke .gb_ad{padding:4px 2px}.gb_na.gb_Ke .gb_La.gb_ad{padding-left:6px}.gb_C{z-index:991;line-height:normal}.gb_C.gb_Qe{left:8px;right:auto}@media (max-width:350px){.gb_C.gb_Qe{left:0}}.gb_Re .gb_C{top:56px}.gb_z .gb_A,.gb_B .gb_z .gb_A{background-position:-64px -29px}.gb_g .gb_z .gb_A{background-position:-29px -29px;opacity:1}.gb_z .gb_A,.gb_z .gb_A:hover,.gb_z .gb_A:focus{opacity:1}.gb_Bd{display:none}.gb_Tc{font-family:Google Sans,Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-size:20px;font-weight:400;letter-spacing:0.25px;line-height:48px;margin-bottom:2px;opacity:1;overflow:hidden;padding-left:16px;position:relative;text-overflow:ellipsis;vertical-align:middle;top:2px;white-space:nowrap;flex:1 1 auto}.gb_Tc.gb_Uc{color:#3c4043}.gb_na.gb_oa .gb_Tc{margin-bottom:0}.gb_Vc.gb_Wc .gb_Tc{padding-left:4px}.gb_na.gb_oa .gb_Xc{position:relative;top:-2px}.gb_na{color:black;min-width:320px;position:relative;transition:box-shadow 250ms}.gb_na.gb_Cc{min-width:240px}.gb_na.gb_Cd .gb_Dd{display:none}.gb_na.gb_Cd .gb_Ed{height:56px}header.gb_na{display:block}.gb_na svg{fill:currentColor}.gb_Fd{position:fixed;top:0;width:100%}.gb_Hd{box-shadow:0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12),0px 2px 4px -1px rgba(0,0,0,0.2)}.gb_Id{height:64px}.gb_Ed{box-sizing:border-box;position:relative;width:100%;display:flex;justify-content:space-between;min-width:min-content}.gb_na:not(.gb_oa) .gb_Ed{padding:8px}.gb_na.gb_Jd .gb_Ed{flex:1 0 auto}.gb_na .gb_Ed.gb_Kd.gb_Ld{min-width:0}.gb_na.gb_oa .gb_Ed{padding:4px;padding-left:8px;min-width:0}.gb_Dd{height:48px;vertical-align:middle;white-space:nowrap;align-items:center;display:flex}.gb_Nd>.gb_Dd{display:table-cell;width:100%}.gb_Vc{padding-right:30px;box-sizing:border-box;flex:1 0 auto}.gb_na.gb_oa .gb_Vc{padding-right:14px}.gb_Od{flex:1 1 100%}.gb_Od>:only-child{display:inline-block}.gb_Pd.gb_Mc{padding-left:4px}.gb_Pd.gb_Qd,.gb_na.gb_Jd .gb_Pd,.gb_na.gb_oa:not(.gb_Rd) .gb_Pd{padding-left:0}.gb_na.gb_oa .gb_Pd.gb_Qd{padding-right:0}.gb_na.gb_oa .gb_Pd.gb_Qd .gb_ga{margin-left:10px}.gb_Mc{display:inline}.gb_na.gb_Fc .gb_Pd.gb_Sd,.gb_na.gb_Rd .gb_Pd.gb_Sd{padding-left:2px}.gb_Tc{display:inline-block}.gb_Pd{box-sizing:border-box;height:48px;line-height:normal;padding:0 4px;padding-left:30px;flex:0 0 auto;justify-content:flex-end}.gb_Rd{height:48px}.gb_na.gb_Rd{min-width:initial;min-width:auto}.gb_Rd .gb_Pd{float:right;padding-left:32px}.gb_Rd .gb_Pd.gb_Td{padding-left:0}.gb_Ud{font-size:14px;max-width:200px;overflow:hidden;padding:0 12px;text-overflow:ellipsis;white-space:nowrap}.gb_Vd{transition:background-color .4s}.gb_Wd{color:black}.gb_uc{color:white}.gb_na a,.gb_zc a{color:inherit}.gb_q{color:rgba(0,0,0,0.87)}.gb_na svg,.gb_zc svg,.gb_Vc .gb_Xd,.gb_Lc .gb_Xd{color:#5f6368;opacity:1}.gb_uc svg,.gb_zc.gb_Dc svg,.gb_uc .gb_Vc .gb_Xd,.gb_uc .gb_Vc .gb_tc,.gb_uc .gb_Vc .gb_Xc,.gb_zc.gb_Dc .gb_Xd{color:rgba(255,255,255,0.87)}.gb_uc .gb_Vc .gb_sc:not(.gb_Zd){opacity:0.87}.gb_Uc{color:inherit;opacity:1;text-rendering:optimizeLegibility}.gb_uc .gb_Uc,.gb_Wd .gb_Uc{opacity:1}.gb_0d{position:relative}.gb_1d{font-family:arial,sans-serif;line-height:normal;padding-right:15px}a.gb_d,span.gb_d{color:rgba(0,0,0,0.87);text-decoration:none}.gb_uc a.gb_d,.gb_uc span.gb_d{color:white}a.gb_d:focus{outline-offset:2px}a.gb_d:hover{text-decoration:underline}.gb_e{display:inline-block;padding-left:15px}.gb_e .gb_d{display:inline-block;line-height:24px;vertical-align:middle}.gb_2d{font-family:Google Sans,Roboto,RobotoDraft,Helvetica,Arial,sans-serif;font-weight:500;font-size:14px;letter-spacing:0.25px;line-height:16px;margin-left:10px;margin-right:8px;min-width:96px;padding:9px 23px;text-align:center;vertical-align:middle;border-radius:4px;box-sizing:border-box}.gb_na.gb_Rd .gb_2d{margin-left:8px}#gb a.gb_1.gb_1.gb_2d,#gb a.gb_0.gb_0.gb_2d{cursor:pointer}.gb_1.gb_2d:hover{background:#2b7de9;box-shadow:0 1px 2px 0 rgba(66,133,244,0.3),0 1px 3px 1px rgba(66,133,244,0.15)}.gb_1.gb_2d:focus,.gb_1.gb_2d:hover:focus{background:#5094ed;box-shadow:0 1px 2px 0 rgba(66,133,244,0.3),0 1px 3px 1px rgba(66,133,244,0.15)}.gb_1.gb_2d:active{background:#63a0ef;box-shadow:0 1px 2px 0 rgba(66,133,244,0.3),0 1px 3px 1px rgba(66,133,244,0.15)}.gb_2d:not(.gb_0){background:#1a73e8;border:1px solid transparent}.gb_na.gb_oa .gb_2d{padding:9px 15px;min-width:80px}.gb_3d{text-align:left}#gb a.gb_2d.gb_0,#gb .gb_uc a.gb_2d,#gb.gb_uc a.gb_2d{background:#ffffff;border-color:#dadce0;box-shadow:none;color:#1a73e8}#gb a.gb_1.gb_ha.gb_2d{background:#8ab4f8;border:1px solid transparent;box-shadow:none;color:#202124}#gb a.gb_2d.gb_0:hover,#gb .gb_uc a.gb_2d:hover,#gb.gb_uc a.gb_2d:hover{background:#f8fbff;border-color:#cce0fc}#gb a.gb_1.gb_ha.gb_2d:hover{background:#93baf9;border-color:transparent;box-shadow:0 1px 3px 1px rgba(0,0,0,0.15),0 1px 2px rgba(0,0,0,0.3)}#gb a.gb_2d.gb_0:focus,#gb a.gb_2d.gb_0:focus:hover,#gb .gb_uc a.gb_2d:focus,#gb .gb_uc a.gb_2d:focus:hover,#gb.gb_uc a.gb_2d:focus,#gb.gb_uc a.gb_2d:focus:hover{background:#f4f8ff;border-color:#c9ddfc}#gb a.gb_1.gb_ha.gb_2d:focus,#gb a.gb_1.gb_ha.gb_2d:focus:hover{background:#a6c6fa;border-color:transparent;box-shadow:none}#gb a.gb_2d.gb_0:active,#gb .gb_uc a.gb_2d:active,#gb.gb_uc a.gb_2d:active{background:#ecf3fe}#gb a.gb_1.gb_ha.gb_2d:active{background:#a1c3f9;box-shadow:0 1px 2px rgba(60,64,67,0.3),0 2px 6px 2px rgba(60,64,67,0.15)}#gb a.gb_2d.gb_0:not(.gb_ha):active{box-shadow:0 1px 2px 0 rgba(60,64,67,0.3),0 2px 6px 2px rgba(60,64,67,0.15)}.gb_ga{background-color:rgba(255,255,255,0.88);border:1px solid #dadce0;box-sizing:border-box;cursor:pointer;display:inline-block;max-height:48px;overflow:hidden;outline:none;padding:0;vertical-align:middle;width:134px;border-radius:8px}.gb_ga.gb_ha{background-color:transparent;border:1px solid #5f6368}.gb_ia{display:inherit}.gb_ga.gb_ha .gb_ia{background:#ffffff;border-radius:4px;display:inline-block;left:8px;margin-right:5px;position:relative;padding:3px;top:-1px}.gb_ga:hover{border:1px solid #d2e3fc;background-color:rgba(248,250,255,0.88)}.gb_ga.gb_ha:hover{border:1px solid #5f6368;background-color:rgba(232,234,237,0.08)}.gb_ga:focus{border:1px solid #fff;background-color:rgba(255,255,255);box-shadow:0px 1px 2px 0px rgba(60,64,67,0.3),0px 1px 3px 1px rgba(60,64,67,0.15)}.gb_ga.gb_ha:focus{border:1px solid #e8eaed;background-color:#38383b}.gb_ga.gb_ha:active,.gb_ga.gb_ja.gb_ha:focus{border:1px solid #5f6368;background-color:#333438}.gb_ka{display:inline-block;padding-bottom:2px;padding-left:7px;padding-top:2px;text-align:center;vertical-align:middle;line-height:32px;width:78px}.gb_ga.gb_ha .gb_ka{line-height:26px;margin-left:0;padding-bottom:0;padding-left:0;padding-top:0;width:72px}.gb_ka.gb_la{background-color:#f1f3f4;border-radius:4px;margin-left:8px;padding-left:0}.gb_ka.gb_la .gb_ma{vertical-align:middle}.gb_na:not(.gb_oa) .gb_ga{margin-left:10px;margin-right:4px}.gb_pa{max-height:32px;width:78px}.gb_ga.gb_ha .gb_pa{max-height:26px;width:72px}.gb_Aa{background-size:32px 32px;border:0;border-radius:50%;display:block;margin:0px;position:relative;height:32px;width:32px;z-index:0}.gb_Ba{background-color:#e8f0fe;border:1px solid rgba(32,33,36,.08);position:relative}.gb_Ba.gb_Aa{height:30px;width:30px}.gb_Ba.gb_Aa:hover,.gb_Ba.gb_Aa:active{box-shadow:none}.gb_Ca{background:#fff;border:none;border-radius:50%;bottom:2px;box-shadow:0px 1px 2px 0px rgba(60,64,67,.30),0px 1px 3px 1px rgba(60,64,67,.15);height:14px;margin:2px;position:absolute;right:0;width:14px}.gb_Da{color:#1f71e7;font:400 22px/32px Google Sans,Roboto,RobotoDraft,Helvetica,Arial,sans-serif;text-align:center;text-transform:uppercase}@media (min-resolution:1.25dppx),(-o-min-device-pixel-ratio:5/4),(-webkit-min-device-pixel-ratio:1.25),(min-device-pixel-ratio:1.25){.gb_Aa::before{display:inline-block;transform:scale(.5);transform-origin:left 0}.gb_Ea::before{display:inline-block;transform:scale(.5);transform-origin:left 0}.gb_i .gb_Ea::before{transform:scale(0.416666667)}}.gb_Aa:hover,.gb_Aa:focus{box-shadow:0 1px 0 rgba(0,0,0,.15)}.gb_Aa:active{box-shadow:inset 0 2px 0 rgba(0,0,0,.15)}.gb_Aa:active::after{background:rgba(0,0,0,.1);border-radius:50%;content:'';display:block;height:100%}.gb_Fa{cursor:pointer;line-height:40px;min-width:30px;opacity:.75;overflow:hidden;vertical-align:middle;text-overflow:ellipsis}.gb_A.gb_Fa{width:auto}.gb_Fa:hover,.gb_Fa:focus{opacity:.85}.gb_Ha .gb_Fa,.gb_Ha .gb_Ia{line-height:26px}#gb#gb.gb_Ha a.gb_Fa,.gb_Ha .gb_Ia{font-size:11px;height:auto}.gb_Ja{border-top:4px solid #000;border-left:4px dashed transparent;border-right:4px dashed transparent;display:inline-block;margin-left:6px;opacity:.75;vertical-align:middle}.gb_Ka:hover .gb_Ja{opacity:.85}.gb_ga>.gb_La{padding:3px 3px 3px 4px}.gb_Ma.gb_za{color:#fff}.gb_Na{background-color:white;border-radius:50%;bottom:2px;height:18px;position:absolute;right:2px;width:18px}.gb_g .gb_Fa,.gb_g .gb_Ja{opacity:1}#gb#gb.gb_g.gb_g a.gb_Fa,#gb#gb .gb_g.gb_g a.gb_Fa{color:#fff}.gb_g.gb_g .gb_Ja{border-top-color:#fff;opacity:1}.gb_B .gb_Aa:hover,.gb_g .gb_Aa:hover,.gb_B .gb_Aa:focus,.gb_g .gb_Aa:focus{box-shadow:0 1px 0 rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.2)}.gb_Oa .gb_La,.gb_Pa .gb_La{position:absolute;right:1px}.gb_La.gb_f,.gb_Qa.gb_f,.gb_Ka.gb_f{flex:0 1 auto;flex:0 1 main-size}.gb_Ra.gb_Sa .gb_Fa{width:30px!important}.gb_Ta{height:40px;position:absolute;right:-5px;top:-5px;width:40px}.gb_Ua .gb_Ta,.gb_Va .gb_Ta{right:0;top:0}.gb_La .gb_A{padding:4px}.gb_5d{display:none}sentinel{}</style></head><body dir="ltr" role="application" itemscope itemtype="http://schema.org/CreativeWork/FileObject"><div style="display:none"><div id="one-google-bar" class="ndfHFb-c4YZDc-Woal0c-jcJzye-ZMv3u ndfHFb-c4YZDc-n1UuX-Bz112c"><div class="gb_na gb_Rd gb_Ua" id="gb"><div class="gb_Pd gb_Ra gb_Dd" ng-non-bindable="" data-ogsr-up="" style="padding:0"><div class="gb_Le" style="display:block"><div class="gb_Mc"></div><a class="gb_1 gb_2 gb_2d gb_2c" href="https://accounts.google.com/ServiceLogin?service=wise&amp;passive=1209600&amp;continue=https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view&amp;followup=https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view&amp;ec=GAZAGQ" target="_top">Acceder</a></div></div></div><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">this.gbar_=this.gbar_||{};(function(_){var window=this;
+try{
+_.Td=function(a,b,c){if(!a.o)if(c instanceof Array){c=_.Ma(c);for(var d=c.next();!d.done;d=c.next())_.Td(a,b,d.value)}else{d=(0,_.w)(a.D,a,b);var e=a.B+c;a.B++;b.setAttribute("data-eqid",e);a.F[e]=d;b&&b.addEventListener?b.addEventListener(c,d,!1):b&&b.attachEvent?b.attachEvent("on"+c,d):a.A.log(Error("z`"+b))}};
+
+}catch(e){_._DumpException(e)}
+try{
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+_.Ud=function(){if(!_.n.addEventListener||!Object.defineProperty)return!1;var a=!1,b=Object.defineProperty({},"passive",{get:function(){a=!0}});try{_.n.addEventListener("test",_.Za,b),_.n.removeEventListener("test",_.Za,b)}catch(c){}return a}();
+_.Vd=_.vb?"webkitTransitionEnd":"transitionend";
+
+}catch(e){_._DumpException(e)}
+try{
+var Wd=document.querySelector(".gb_z .gb_A"),Xd=document.querySelector("#gb.gb_Cc");Wd&&!Xd&&_.Td(_.Kd,Wd,"click");
+
+}catch(e){_._DumpException(e)}
+try{
+var Ch=function(a){_.H.call(this);this.C=a;this.A=null;this.o={};this.F={};this.j={};this.B=null};_.u(Ch,_.H);_.Dh=function(a){if(a.A)return a.A;for(var b in a.j)if(a.j[b].De()&&a.j[b].Fb())return a.j[b];return null};_.h=Ch.prototype;_.h.Ve=function(a){a&&_.Dh(this)&&a!=_.Dh(this)&&_.Dh(this).Cd(!1);this.A=a};_.h.Wf=function(a){a=this.j[a]||a;return _.Dh(this)==a};_.h.ne=function(a,b){b=b.Cc();if(this.o[a]&&this.o[a][b])for(var c=0;c<this.o[a][b].length;c++)try{this.o[a][b][c]()}catch(d){this.C.log(d)}};
+_.h.fh=function(a){return!this.F[a.Cc()]};_.h.tg=function(a){this.j[a]&&(_.Dh(this)&&_.Dh(this).Cc()==a||this.j[a].Cd(!0))};_.h.Ta=function(a){this.B=a;for(var b in this.j)this.j[b].De()&&this.j[b].Ta(a)};_.h.Re=function(a){this.j[a.Cc()]=a};_.h.ee=function(a){return a in this.j?this.j[a]:null};var Eh=new Ch(_.J);_.kd("dd",Eh);
+
+}catch(e){_._DumpException(e)}
+try{
+var fj=document.querySelector(".gb_La .gb_A"),gj=document.querySelector("#gb.gb_Cc");fj&&!gj&&_.Td(_.Kd,fj,"click");
+
+}catch(e){_._DumpException(e)}
+})(this.gbar_);
+// Google Inc.
+</script></div></div><meta itemprop="name" content="salidasimu.shw.bz2"><meta itemprop="faviconUrl" content="https://ssl.gstatic.com/images/branding/product/1x/drive_2020q4_32dp.png"><meta itemprop="url" content="https://drive.google.com/file/d/16BHZksUYniZ5w_Vg9jZYT5K5iQEjy4jt/view?usp=embed_googleplus"><div ng-non-bindable=""></div><script nonce="Etjc2y2tlbpKDhPK4jOJ1A">this.gbar_=this.gbar_||{};(function(_){var window=this;
+try{
+/*
+
+ Copyright The Closure Library Authors.
+ SPDX-License-Identifier: Apache-2.0
+*/
+_.Yd=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"};_.Zd=function(a){var b=_.Yd(a);return"array"==b||"object"==b&&"number"==typeof a.length};_.$d=function(a,b){var c=Array.prototype.slice.call(arguments,1);return function(){var d=c.slice();d.push.apply(d,arguments);return a.apply(this,d)}};try{(new self.OffscreenCanvas(0,0)).getContext("2d")}catch(a){}_.ae=_.B||_.vb;
+_.be=function(a,b){this.width=a;this.height=b};_.h=_.be.prototype;_.h.aspectRatio=function(){return this.width/this.height};_.h.mb=function(){return!(this.width*this.height)};_.h.ceil=function(){this.width=Math.ceil(this.width);this.height=Math.ceil(this.height);return this};_.h.floor=function(){this.width=Math.floor(this.width);this.height=Math.floor(this.height);return this};_.h.round=function(){this.width=Math.round(this.width);this.height=Math.round(this.height);return this};
+var ee,he;_.ce=function(a,b){return(b||document).getElementsByTagName(String(a))};_.K=function(a,b){var c=b||document;if(c.getElementsByClassName)a=c.getElementsByClassName(a)[0];else{c=document;var d=b||c;a=d.querySelectorAll&&d.querySelector&&a?d.querySelector(a?"."+a:""):_.de(c,a,b)[0]||null}return a||null};
+_.de=function(a,b,c){var d;a=c||a;if(a.querySelectorAll&&a.querySelector&&b)return a.querySelectorAll(b?"."+b:"");if(b&&a.getElementsByClassName){var e=a.getElementsByClassName(b);return e}e=a.getElementsByTagName("*");if(b){var f={};for(c=d=0;a=e[c];c++){var g=a.className;"function"==typeof g.split&&_.na(g.split(/\s+/),b)&&(f[d++]=a)}f.length=d;return f}return e};
+_.fe=function(a,b){_.Da(b,function(c,d){c&&"object"==typeof c&&c.Nb&&(c=c.lb());"style"==d?a.style.cssText=c:"class"==d?a.className=c:"for"==d?a.htmlFor=c:ee.hasOwnProperty(d)?a.setAttribute(ee[d],c):_.jb(d,"aria-")||_.jb(d,"data-")?a.setAttribute(d,c):a[d]=c})};ee={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};
+_.ie=function(a,b){var c=b[1],d=_.ge(a,String(b[0]));c&&("string"===typeof c?d.className=c:Array.isArray(c)?d.className=c.join(" "):_.fe(d,c));2<b.length&&he(a,d,b);return d};
+he=function(a,b,c){function d(k){k&&b.appendChild("string"===typeof k?a.createTextNode(k):k)}for(var e=2;e<c.length;e++){var f=c[e];if(!_.Zd(f)||_.$a(f)&&0<f.nodeType)d(f);else{a:{if(f&&"number"==typeof f.length){if(_.$a(f)){var g="function"==typeof f.item||"string"==typeof f.item;break a}if("function"===typeof f){g="function"==typeof f.item;break a}}g=!1}_.lb(g?_.oa(f):f,d)}}};_.je=function(a){return _.ge(document,a)};
+_.ge=function(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)};_.ke=function(a){for(var b;b=a.firstChild;)a.removeChild(b)};_.le=function(a){return a&&a.parentNode?a.parentNode.removeChild(a):null};_.me=function(a){return _.$a(a)&&1==a.nodeType};_.ne=function(a){return 9==a.nodeType?a:a.ownerDocument||a.document};_.oe=function(a,b,c){for(var d=0;a&&(null==c||d<=c);){if(b(a))return a;a=a.parentNode;d++}return null};
+
+}catch(e){_._DumpException(e)}
+try{
+_.kj=function(a){_.C.call(this,a)};_.u(_.kj,_.C);
+
+}catch(e){_._DumpException(e)}
+try{
+_.lj=function(a,b,c){a.rel=c;-1!=c.toLowerCase().indexOf("stylesheet")?(a.href=_.Ac(b),(b=_.$c(a.ownerDocument&&a.ownerDocument.defaultView))&&a.setAttribute("nonce",b)):a.href=b instanceof _.yc?_.Ac(b):b instanceof _.Dc?_.Ec(b):_.Ec(_.Kc(b))};
+
+}catch(e){_._DumpException(e)}
+try{
+_.nj=function(a){if("function"==typeof _.mj&&a instanceof _.mj)return a.j;throw Error("E");};_.pj=function(a){return"function"==typeof _.oj&&a instanceof _.oj?_.nj(a):_.zc(a)};_.qj=function(a){var b,c=(a.ownerDocument&&a.ownerDocument.defaultView||window).document,d=null===(b=c.querySelector)||void 0===b?void 0:b.call(c,"script[nonce]");(b=d?d.nonce||d.getAttribute("nonce")||"":"")&&a.setAttribute("nonce",b)};
+/*
+
+ SPDX-License-Identifier: Apache-2.0
+*/
+
+}catch(e){_._DumpException(e)}
+try{
+var rj=function(a,b,c){_.Jd.log(46,{att:a,max:b,url:c})},tj=function(a,b,c){_.Jd.log(47,{att:a,max:b,url:c});a<b?sj(a+1,b):_.J.log(Error("da`"+a+"`"+b),{url:c})},sj=function(a,b){if(uj){var c=_.je("SCRIPT");c.async=!0;c.type="text/javascript";c.charset="UTF-8";c.src=_.pj(uj);_.qj(c);c.onload=_.$d(rj,a,b,c.src);c.onerror=_.$d(tj,a,b,c.src);_.Jd.log(45,{att:a,max:b,url:c.src});_.ce("HEAD")[0].appendChild(c)}},vj=function(a){_.C.call(this,a)};_.u(vj,_.C);
+var wj=_.G(_.Fd,vj,17)||new vj,xj,uj=(xj=_.G(wj,_.kj,1))?_.Bc(_.D(xj,4)||""):null,yj,zj=(yj=_.G(wj,_.kj,2))?_.Bc(_.D(yj,4)||""):null,Aj=function(){sj(1,2);if(zj){var a=_.je("LINK");a.setAttribute("type","text/css");_.lj(a,zj,"stylesheet");var b=_.$c(void 0);b&&a.setAttribute("nonce",b);_.ce("HEAD")[0].appendChild(a)}};
+(function(){var a=_.Gd();if(_.E(a,18))Aj();else{var b=_.D(a,19)||0;window.addEventListener("load",function(){window.setTimeout(Aj,b)})}})();
+
+}catch(e){_._DumpException(e)}
+})(this.gbar_);
+// Google Inc.
+</script><script id="base-js" async type="text/javascript" src="https://www.gstatic.com/_/apps-fileview/_/js/k=apps-fileview.v.es_419.rQe1Jd16VZo.O/d=1/rs=AO0039vCsbL3BEQOz-Wsyi93zGPrsA-HTA/m=v,wb" nonce="Etjc2y2tlbpKDhPK4jOJ1A"></script></body></html>
\ No newline at end of file
diff --git a/Simular_neutrones_monoenergeticos/vis.mac b/Simular_neutrones_monoenergeticos/vis.mac
new file mode 100644
index 0000000000000000000000000000000000000000..9f218d0a80ec49c6e618023381a4033fdfa0bdb5
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/vis.mac
@@ -0,0 +1,74 @@
+# Use this open statement to create an OpenGL view:
+/vis/open OGL 600x600-0+0
+#
+# Use this open statement to create a .prim file suitable for
+# viewing in DAWN:
+#/vis/open DAWNFILE
+#
+# Use this open statement to create a .heprep file suitable for
+# viewing in HepRApp:
+#/vis/open HepRepFile
+#
+# Use this open statement to create a .wrl file suitable for
+# viewing in a VRML viewer:
+#/vis/open VRML2FILE
+#
+# Disable auto refresh and quieten vis messages whilst scene and
+# trajectories are established:
+/vis/viewer/set/autoRefresh false
+/vis/verbose errors
+#
+# Draw geometry:
+/vis/drawVolume
+#
+# Specify view angle:
+#/vis/viewer/set/viewpointThetaPhi 90. 0.
+#
+# Specify zoom value:
+/vis/viewer/zoom 1.5
+#
+# Specify style (surface or wireframe):
+#/vis/viewer/set/style wireframe
+#
+# Draw coordinate axes:
+#/vis/scene/add/axes 0 0 0 1 m
+#
+# Draw smooth trajectories at end of event, showing trajectory points
+# as markers 2 pixels wide:
+/vis/scene/add/trajectories smooth
+/vis/modeling/trajectories/create/drawByCharge
+/vis/modeling/trajectories/drawByCharge-0/default/setDrawStepPts true
+/vis/modeling/trajectories/drawByCharge-0/default/setStepPtsSize 2
+# (if too many tracks cause core dump => /tracking/storeTrajectory 0)
+#
+# Draw hits at end of event:
+#/vis/scene/add/hits
+
+/vis/scene/add/scale
+/vis/scene/add/axes
+
+#/vis/geometry/set/visibility World 0 false
+#/vis/geometry/set/colour Envelope 0 0 0 1 .3
+#
+# To draw only gammas:
+#/vis/filtering/trajectories/create/particleFilter
+#/vis/filtering/trajectories/particleFilter-0/add gamma
+#
+# To invert the above, drawing all particles except gammas,
+# keep the above two lines but also add:
+#/vis/filtering/trajectories/particleFilter-0/invert true
+#
+# Many other options are available with /vis/modeling and /vis/filtering.
+# For example, to select colour by particle ID:
+#/vis/modeling/trajectories/create/drawByParticleID
+#/vis/modeling/trajectories/drawByParticleID-0/set e- blue
+#
+# To superimpose all of the events from a given run:
+/vis/scene/endOfEventAction accumulate
+#
+# Re-establish auto refreshing and verbosity:
+/vis/viewer/set/autoRefresh true
+/vis/verbose warnings
+#
+# For file-based drivers, use this to create an empty detector view:
+#/vis/viewer/flush
diff --git a/Simular_neutrones_monoenergeticos/wcd.cc b/Simular_neutrones_monoenergeticos/wcd.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e1ac29ff04a21f3d91fe9f4b92c0bd861930844f
--- /dev/null
+++ b/Simular_neutrones_monoenergeticos/wcd.cc
@@ -0,0 +1,194 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file OpNovice/OpNovice.cc
+/// \brief Main program of the OpNovice example
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//
+// Description: Test of Continuous Process G4Cerenkov
+//              and RestDiscrete Process G4Scintillation
+//              -- Generation Cerenkov Photons --
+//              -- Generation Scintillation Photons --
+//              -- Transport of optical Photons --
+// Version:     5.0
+// Created:     1996-04-30
+// Author:      Juliet Armstrong
+// mail:        gum@triumf.ca
+//     
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifdef G4MULTITHREADED
+#include "G4MTRunManager.hh"
+#else
+#include "G4RunManager.hh"
+#endif
+
+#ifdef G4VIS_USE
+#include "G4VisExecutive.hh"
+#endif
+
+#ifdef G4UI_USE
+#include "G4UIExecutive.hh"
+#endif
+
+
+#include "G4UImanager.hh"
+
+#include "Randomize.hh"
+
+#include "PhysicsList.hh"
+#include "DetectorConstruction.hh"
+#include "ActionInitialization.hh"
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+namespace {
+  void PrintUsage() {
+    G4cerr << " Usage: " << G4endl;
+    G4cerr << " OpNovic [-m macro ] [-u UIsession] [-t nThreads] [-r seed] "
+           << G4endl;
+    G4cerr << "   note: -t option is available only for multi-threaded mode."
+           << G4endl;
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+int main(int argc,char** argv)
+{
+  // Evaluate arguments
+  //
+  if ( argc > 9 ) {
+    PrintUsage();
+    return 1;
+  }
+
+  G4String macro;
+  G4String session;
+#ifdef G4MULTITHREADED
+  G4int nThreads = 0;
+#endif
+
+  G4long myseed = time(NULL); //345354;
+
+  for ( G4int i=1; i<argc; i=i+2 ) {
+     if      ( G4String(argv[i]) == "-m" ) macro   = argv[i+1];
+     else if ( G4String(argv[i]) == "-u" ) session = argv[i+1];
+     else if ( G4String(argv[i]) == "-r" ) myseed  = atoi(argv[i+1]);
+#ifdef G4MULTITHREADED
+     else if ( G4String(argv[i]) == "-t" ) {
+                    nThreads = G4UIcommand::ConvertToInt(argv[i+1]);
+    }
+#endif
+    else {
+      PrintUsage();
+      return 1;
+    }
+  }
+
+  // Choose the Random engine
+  //
+  G4Random::setTheEngine(new CLHEP::RanecuEngine);
+
+  // Construct the default run manager
+  //
+#ifdef G4MULTITHREADED
+  G4MTRunManager * runManager = new G4MTRunManager;
+  if ( nThreads > 0 ) runManager->SetNumberOfThreads(nThreads);
+#else
+  G4RunManager * runManager = new G4RunManager;
+#endif
+
+  // Seed the random number generator manually
+  G4Random::setTheSeed(myseed);
+  G4cout << "myseed: " << myseed << G4endl;
+
+  G4String physName = "QGSP_BERT_HP";
+
+  // Set mandatory initialization classes
+  //
+  // Detector construction
+  runManager-> SetUserInitialization(new DetectorConstruction());
+  // Physics list
+  runManager-> SetUserInitialization(new PhysicsList(physName));
+  // User action initialization
+  runManager->SetUserInitialization(new ActionInitialization());
+
+  // Initialize G4 kernel
+  //
+  runManager->Initialize();
+
+#ifdef G4VIS_USE
+  // Initialize visualization
+  //
+  G4VisManager* visManager = new G4VisExecutive;
+  // G4VisExecutive can take a verbosity argument - see /vis/verbose guidance.
+  // G4VisManager* visManager = new G4VisExecutive("Quiet");
+  visManager->Initialize();
+#endif
+
+  // Get the pointer to the User Interface manager
+  //
+  G4UImanager* UImanager = G4UImanager::GetUIpointer(); 
+   
+  if ( macro.size() ) {
+     // Batch mode
+     G4String command = "/control/execute ";
+     UImanager->ApplyCommand(command+macro);
+  }
+  else // Define UI session for interactive mode
+  {
+#ifdef G4UI_USE
+     G4UIExecutive * ui = new G4UIExecutive(argc,argv,session);
+#ifdef G4VIS_USE
+     UImanager->ApplyCommand("/control/execute vis.mac");
+#else
+     UImanager->ApplyCommand("/control/execute input.in");
+#endif
+     if (ui->IsGUI())
+        UImanager->ApplyCommand("/control/execute gui.mac");
+     ui->SessionStart();
+     delete ui;
+#endif
+  }
+
+  // Job termination
+  // Free the store: user actions, physics_list and detector_description are
+  //                 owned and deleted by the run manager, so they should not
+  //                 be deleted in the main() program !
+
+#ifdef G4VIS_USE
+  delete visManager;
+#endif
+  delete runManager;
+
+  return 0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......