diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07f6a9164b8723f99d4b5223378ecc80e68a85dc..b6e982e6be1c610a57f8cfb6d93b8725318b31be 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,7 @@
 #----------------------------------------------------------------------------
 # Setup the project
 cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
-project(OpNovice)
+project(lightGuide)
 
 #----------------------------------------------------------------------------
 # Find Geant4 package, activating all available UI and Vis drivers by default
@@ -12,7 +12,7 @@ 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)
+  find_package(Geant4 REQUIRED )
 endif()
 #----------------------------------------------------------------------------
 # Find ROOT
@@ -20,9 +20,12 @@ list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})
 find_package (ROOT REQUIRED)
 include(${ROOT_USE_FILE})
 #----------------------------------------------------------------------------
-# Include CADMesh in your project.
+# Find CADMesh
 find_package(cadmesh)
 include_directories(${CADMESH_INCLUDE_DIRS})
+if(CADMESH_INCLUDE_DIRS)
+  add_definitions(-DCADMESH)
+endif()
 
 #----------------------------------------------------------------------------
 # Setup Geant4 include directories and compile definitions
@@ -40,24 +43,20 @@ file(GLOB headers ${PROJECT_SOURCE_DIR}/include/*.hh)
 #----------------------------------------------------------------------------
 # Add the executable, and link it to the Geant4 libraries
 #
-add_executable(OpNovice OpNovice.cc ${sources} ${headers})
-target_link_libraries(OpNovice ${Geant4_LIBRARIES} ${ROOT_LIBRARIES} cadmesh )
+add_executable(lightGuide lightGuide.cc ${sources} ${headers})
+target_link_libraries(lightGuide ${Geant4_LIBRARIES} ${ROOT_LIBRARIES} cadmesh )
 
 #----------------------------------------------------------------------------
 # 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
+# build lightGuide. This is so that we can run the executable directly because it
 # relies on these scripts being in the current working directory.
 #
-set(OpNovice_SCRIPTS
-    OpNovice.out
-    OpNovice.in
-    optPhoton.mac
-    gui.mac
+set(lightGuide_SCRIPTS
     vis.mac
     run1.mac
   )
 
-foreach(_script ${OpNovice_SCRIPTS})
+foreach(_script ${lightGuide_SCRIPTS})
   configure_file(
     ${PROJECT_SOURCE_DIR}/${_script}
     ${PROJECT_BINARY_DIR}/${_script}
@@ -68,4 +67,7 @@ endforeach()
 #----------------------------------------------------------------------------
 # Install the executable to 'bin' directory under CMAKE_INSTALL_PREFIX
 #
-install(TARGETS OpNovice DESTINATION bin)
+install(TARGETS lightGuide DESTINATION bin)
+install(FILES run1.mac DESTINATION bin )
+install(FILES vis.mac DESTINATION bin )
+install(DIRECTORY models/ DESTINATION models FILES_MATCHING PATTERN "*.*")
diff --git a/History b/History
deleted file mode 100644
index 5b53cc9d2b0c3b9be76392c93bf337f3ce8f3921..0000000000000000000000000000000000000000
--- a/History
+++ /dev/null
@@ -1,286 +0,0 @@
--------------------------------------------------------------------
-
-     =========================================================
-     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
-     =========================================================
-
-                    Example OpNovice History file
-                    -----------------------------
-This file should be used by the G4 example coordinator to briefly
-summarize all major modifications introduced in the code and keep
-track of all tags.
-
-     ----------------------------------------------------------
-     * Reverse chronological order (last date on top), please *
-     ----------------------------------------------------------
-
-July 31, 2018 I. Hrivnacova (OpNovice-V10-04-02)
-- Macro review: 
-  - Added test for /OpNovice/phys/cerenkovMaxPhotons command at the end 
-    of OpNovice.in macro
-  - Updated README files
-
-May 17, 2018 J. Allison (OpNovice-V10-04-01)
-- Remove G4UI_USE and G4VIS_USE.
-- Move instantiation of G4UIExecutive to start of main.
-
-May 08, 2018 B. Morgan (OpNovice-V10-04-00)
-- Include G4Types before use of G4MULTITHREADED. For forward
-  compatibility with move to #defines over -D for G4 preprocessor
-  symbols.
-
-August 18, 2017 J.Allison (OpNovice-V10-03-02)
-- Fix gui.mac, which executed vis.mac (it should not!).
-
-Mar 22, 2017 P.Gumplinger (OpNovice-V10-03-00/OpNovice-V10-03-01)
-- exercise the new DAVIS LUT surface model
-
-Nov 02, 2016 L.Garnier (OpNovice-V10-02-01)
-- Remove icons.mac. Automatically include since interfaces-V10-02-07
-
-Nov 02, 2016 I. Hrivnacova (OpNovice-V10-02-00)
-- Added file descriptions for Doxygen documentation
-
-Oct 14, 2016 G.Folger (OpNovice-V10-00-00) - not tagged
-- remove direct use of theParticleIterator, use GetParticleTableIterator().
-    fix required by clang39 on Linux and MAC
-
-Jun 15, 2015 - P. Gumplinger (OpNovice-V10-01-04)
-- introduce G4ThreadLocal in OpNovicePhysicsList class
-
-Jun 09, 2015 - P. Gumplinger (OpNovice-V10-01-03)
-- revert back to kernel initialization in main
-
-Jun 05, 2015 - P. Gumplinger (OpNovice-V10-01-02)
-- reduce output size and move kernel initialization to input macro
-
-May 22, 2015 - P. Gumplinger (OpNovice-V10-01-01)
-- apply coding guideline 3.3
-
-May 16, 2015 J. Allison (OpNovice-V10-01-00)
-- Replaced !G4Threading::IsWorkerThread() by G4Threading::IsMasterThread().
-
-October 27, 2014 A. Dotti (OpNovice-V10-00-06)
-- Migration to new UI system. Requires:
-  xrays-V10-00-06, op-V10-00-09, phys-ctro-em-V10-00-17
-
-July 11, 2014 P. Gumplinger (OpNovice-V10-00-05)
-- Use implicit dimensioning for all arrays in
-  OpNoviceDetectorConstruction.cc and assert that they are the
-  same (thanks to M. Kelsey for suggesting this)
-
-December 23, 2013 M. Asai (OpNovice-V10-00-04)
-- Limit invokation of static method only from master/sequential.
-
-December 22, 2013 M. Asai (OpNovice-V10-00-03)
-- Avoid static G4Scintillation method invoked through a pointer.
-
-December 18, 2013 M. Asai/P. Gumplinger (OpNovice-V10-00-02)
-- allows changes to G4Cerenkov and G4Scintillation in Idle state
-
-December 16, 2013 M. Asai (OpNovice-V10-00-01)
-- Fix race condision issue in OpNovicePhysicsList.
-
-December 04, 2013 P. Gumplinger (OpNovice-V10-00-00)
-- Fixes in gui.mac:
-  Commented out command specific to B2 example
-  Let execute vis.mac first to make the command in added menus available;
-  Corrected wireframe parameter
-
-November 28, 2013 P. Gumplinger (OpNovice-V09-06-11)
-- add gui.mac, icons.mac and run.png
-
-November 2, 2013 P. Gumplinger (OpNovice-V09-06-10)
-- place G4Random::setTheSeed(myseed) so that it is executed for both
-  sequential and MT mode
-
-October 31, 2013 P. Gumplinger (OpNovice-V09-06-09)
-- to work with ctests-V09-06-19
-
-October 29, 2013 P. Gumplinger (OpNovice-V09-06-08)
-- remove all reference to LXeWorkerInitialization and remove SetNumberOfThreads
-
-October 25, 2013 P. Gumplinger (OpNovice-V09-06-07)
-- Instantiate SteppingVerbose in a new method in OpNoviceActionInitialization
-  and removed LXeWorkerInitialization (not needed anymore)
-- Add OpNoviceSteppingAction to count secondary optical photons to compare
-  with OpNoviceStackingAction
-
-11 June 2013, V.Ivanchenko (OpNovice-V09-06-06)
-- OpNovicePhysicsList - construct all particles to avoid exception
-    in execution of ConstructParticle() method; removed unnecessary
-    methods to construct individual particle types
-
-02 June 2013, P.Gumplinger (OpNovice-V09-06-05)
-- make MultiThread (MT) capable
-
-27 May 2013, I.Hrivnacova (OpNovice-V09-06-04)
-- Updated .README file 
-
-27 May 2013, I.Hrivnacova (OpNovice-V09-06-03)
-- Apply Examples Coding Guidelines 
-  (data members/base class initialization)
-
-13 May 2013 P. Gumplinger (OpNovice-V09-06-02)
-- Add .README file
-
-06 May 2013 P. Gumplinger (OpNovice-V09-06-01)
-- Apply all Examples Coding Guidelines
-
-18 Dec 2012 I. Hrivnacova (OpNovice-V09-06-00)
-- Fixed CMake build: removed add_custom_target(..)
-
-17 Dec 2012 P. Gumplinger 
-- move the example to /extended/optical/novice (from /novice/N06) and
-  rename N06 to OpNovice
-
-20 June 2012 P. Gumplinger (exampleN06-V09-05-01)
-- remove SetModel from ExN06PhysicsList.cc to cowork with op-V09-05-04
-
-24 January 2012 P. Gumplinger (exampleN06-V09-05-00)
-- set /tracking/verbose 3 in exampleN06.in and optPhoton.mac
-  to also test timing of optical photons - see Problem #1275
-
-29 November 2011 Ben Morgan (exampleN06-V09-04-01)
-- CMakeLists.txt edited to add standard UI/Vis activation and copying of scripts
-  to build directory, plus comments and neatification.
-
-14th October 2011 P. Gumplinger (exampleN06-V09-04-00)
-- modify to work with materials-V09-04-15 and use spline interpolation
-  for some of the G4MaterialPropertyVector (e.g. G4PhysicsOrderedFreeVector)
-
-23rd October 2010 P. Gumplinger (exampleN06-V09-03-01)
-- add G4OpMieHG scattering process and associated material properties
-
-4th June 2010 Joseph Perl (exampleN06-V09-03-00)
-- Updated vis usage
-
-09th November 2009 Peter Gumplinger (exampleN06-V09-02-01)
-- use G4eMultipleScattering, G4MuMultipleScattering and
-  G4hMultipleScattering instead of G4MultipleScattering
-
-30th October 2009 John Allison (exampleN06-V09-02-00)
-- Introduced G4UIExecutive.
-
-20th November 2008 P. Gumplinger (exampleN06-V09-01-03)
-- add theCerenkovProcess->SetMaxBetaChangePerStep in ExN06PhysicsList
-
-16th July 2008 P. Gumplinger (exampleN06-V09-01-02)
-- use dynamic_cast <G4OpticalSurface*> in ExN06DetectorConstruction.cc
-
-12th June 2008 P. Gumplinger (exampleN06-V09-01-01)
-- now use G4EmSaturation to implement the Birks Correction
-  for G4Scintillation
-
-07th May 2008 J.Allison (exampleN06-V09-01-00)
-- Protected "/control/execute vis.mac" with G4VIS_USE flag.
-     
-30 Sept 2007 Peter Gumplinger (exampleN06-V09-00-00)
-- adjust to the G4Cerenkov process now being a G4VDiscreteProcess
-
-October 18th 2006 J.Allison  (exampleN06-V08-01-00)
-- Migrate to new trajectory modeling commands.
-
-16th June 2006 Gabriele Cosmo (exampleN06-V08-00-02)
-- Use coherent allocation scheme for user-classes and
-  initialisation in main().
-
-15th June 2006 Peter Gumplinger (exampleN06-V08-00-01)
-- add new method ExN06PrimaryGeneratorAction::SetOptPhotonPolar()
-  to set a random linear polarization when the command -
-  /N06/gun/optPhotonPolar - is given without arguments
-
-15th June 2006 Gabriele Cosmo (exampleN06-V08-00-00)
-- Separate instantiation of the user-stepping-verbose class from
-  initialisation of the G4VSteppingVerbose singleton.
-
-6th December 2005 Gabriele Cosmo
-- Trivial changes for support of CLHEP-2.0.X series.
-
-4th December 2005 John Allison (exampleN06-V07-01-00)
-- Replaced vis code in EndOfEventAction by suitable vis commands in vis.mac.
-
-16 May 2005 Peter Gumplinger (exampleN06-V07-00-01)
-- use SetProcessOrdering for theDecayProces
-     
-11 May 2005 Michel Maire (exampleN06-V07-00-00)
-- UI command cerenkovMaxPhotons available in Idle state only 
-
-3rd May 2005 John Allison  (examples-V07-00-03)
-- Replaced vis manager with G4VisExecutive.
-
-June 1, 2004 Peter Gunplinger (exampleN06-V06-01-01)
-- Updated README file.
-
-April 2, 2004 Michel Maire (exampleN06-V06-01-00)
-- PrimaryGenerator: e+ 500 keV
-- Removed vis commands from RunAction
-
-March 17, 2004 Peter Gumplinger (exampleN06-V06-00-00)
-- DetectorConstruction: change surface model between OpWaterSurface
-                        and OpAirSurface
-
-December 1, 2003 Peter Gumplinger (exampleN06-V05-02-02)
-- DetectorConstruction: use G4SurfaceProperty.
-
-November 13, 2003 John Allison
-- Removed OPACS from Vis Manager.
-
-October 24, 2003 Michel Maire (exampleN06-V05-02-01)
-- PhysicsList: AddProcess(Bremsstrahlung,-1,3,3) ..etc..
-     
-October 06, 2003 Michel Maire (exampleN06-V05-02-00)
-- Cosmetic cleanup of material definition
-
-April 17, 2003 Peter Gumplinger (exampleN06-V05-00-03)
-- Changed OpWaterSurface to dielectric_dielectric in class
-  ExN06DetectorConstruction
-     
-March 26, 2003 Michel Maire (exampleN06-V05-00-02)
-- G4PVPlacement in logical mother
-     
-Febuary 11, 2003 Michel Maire (exampleN06-V05-00-01)
-- Added a blank in steppingVerbose !
-
-January 23, 2003 Michel Maire (exampleN06-V05-00-00)
-- Added tools for interactive session : UItcsh, visualisation of tracks.
-- Added 2 messenger classes : PhysicsList and PrimaryGenerator
-- exampleN06.in changed --> exampleN06.out reduced
-
-November 21, 2002 Peter Gumplinger (exampleN06-V04-01-02)
-- exampleN06.out output changed because of small change in G4Scintillation
- 
-November 14, 2002 Peter Gumplinger (exampleN06-V04-01-01)
-- Reduced the scintillation photon yield to reduce the output size
-
-November 12, 2002 Peter Gumplinger (exampleN06-V04-01-00)
-- Added ExN06StackingAction
-- Changed user interface to new version of G4Scintillation
-
-May 30, 2002 Gabriele Cosmo (exampleN06-V04-00-02)
-- Renamed file ExN06PrimaryGeneratoraction.cc to ExN06PrimaryGeneratorAction.cc
-  to be consistent with class name.
-
-May 16, 2002 Peter Gumplinger (exampleN06-V04-00-01)
-- Added G4Scintillation to the example and update reference output
-
-Oct 19, 2001 Steve O'Neale (examples-V03-02-00)
-- Updated reference output
-
-06-02-2001 Update reference output for op-V03-00-05 S.W.O'Neale
-
-June 17, 2000 John Allison  (exampleN06-V01-01-00)
-- Updated exampleN06.out for geant4-01-01-ref-06.
-
-16th April 1999 Hisaya Kurashige
-- Modified ExN06RunAction 
-- Modified ExN06PhysicsList::SetCuts
-
-21st August 1998 John Allison
-- Changed file names from N06* to ExN06*.
-
-9th August 1998 John Allison
-- Changed G4UIterminal to G4UIGAG.
-
-April 09, 98 Gabriele Cosmo
-- Created.
diff --git a/OpNovice.err b/OpNovice.err
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/OpNovice.in b/OpNovice.in
deleted file mode 100644
index 6476a3b461d9c39dae482a2dbe8e538c37b3f889..0000000000000000000000000000000000000000
--- a/OpNovice.in
+++ /dev/null
@@ -1,14 +0,0 @@
-/control/verbose 2
-/tracking/verbose 0
-#
-/gun/particle e+
-/gun/energy 500 keV
-#
-/OpNovice/phys/verbose 0
-#
-/run/beamOn 1
-#
-/OpNovice/phys/cerenkovMaxPhotons  15  # default: 20
-#
-/run/beamOn 1
-
diff --git a/OpNovice.out b/OpNovice.out
deleted file mode 100644
index a1a12bd37d0d5a260c9bc1426dc84eecb23760ef..0000000000000000000000000000000000000000
--- a/OpNovice.out
+++ /dev/null
@@ -1,675 +0,0 @@
-
-        ############################################
-        !!! WARNING - FPE detection is activated !!!
-        ############################################
-
-**************************************************************
- Geant4 version Name: geant4-10-05-ref-00    (7-December-2018)
-                       Copyright : Geant4 Collaboration
-                      References : NIM A 506 (2003), 250-303
-                                 : IEEE-TNS 53 (2006), 270-278
-                                 : NIM A 835 (2016), 186-225
-                             WWW : http://geant4.org/
-**************************************************************
-
-Water G4MaterialPropertiesTable
-0: RINDEX
-2.034e-06   1.3435
-2.068e-06   1.344
-2.103e-06   1.3445
-2.139e-06   1.345
-2.177e-06   1.3455
-2.216e-06   1.346
-2.256e-06   1.3465
-2.298e-06   1.347
-2.341e-06   1.3475
-2.386e-06   1.348
-2.433e-06   1.3485
-2.481e-06   1.3492
-2.532e-06   1.35
-2.585e-06   1.3505
-2.64e-06   1.351
-2.697e-06   1.3518
-2.757e-06   1.3522
-2.82e-06   1.353
-2.885e-06   1.3535
-2.954e-06   1.354
-3.026e-06   1.3545
-3.102e-06   1.355
-3.181e-06   1.3555
-3.265e-06   1.356
-3.353e-06   1.3568
-3.446e-06   1.3572
-3.545e-06   1.358
-3.649e-06   1.3585
-3.76e-06   1.359
-3.877e-06   1.3595
-4.002e-06   1.36
-4.136e-06   1.3608
-9: GROUPVEL
-2.034e-06   218.243
-2.051e-06   218.204
-2.0855e-06   218.183
-2.121e-06   218.157
-2.158e-06   218.246
-2.1965e-06   218.204
-2.236e-06   218.158
-2.277e-06   218.212
-2.3195e-06   218.155
-2.3635e-06   218.188
-2.4095e-06   218.208
-2.457e-06   216.507
-2.5065e-06   215.846
-2.5585e-06   218.128
-2.6125e-06   218.11
-2.6685e-06   215.856
-2.727e-06   218.798
-2.7885e-06   215.988
-2.8525e-06   218.001
-2.9195e-06   218.046
-2.99e-06   218.029
-3.064e-06   218.046
-3.1415e-06   218.01
-3.223e-06   218.041
-3.309e-06   216.226
-3.3995e-06   218.568
-3.4955e-06   216.325
-3.597e-06   217.945
-3.7045e-06   217.962
-3.8185e-06   217.941
-3.9395e-06   217.951
-4.136e-06   216.443
-10: MIEHG
-1.56962e-06   1.67024e+08
-1.58974e-06   1.58727e+08
-1.61039e-06   1.50742e+08
-1.63157e-06   1.43062e+08
-1.65333e-06   1.3568e+08
-1.67567e-06   1.28587e+08
-1.69863e-06   1.21776e+08
-1.72222e-06   1.1524e+08
-1.74647e-06   1.0897e+08
-1.77142e-06   1.02959e+08
-1.7971e-06   9.72004e+07
-1.82352e-06   9.16869e+07
-1.85074e-06   8.64113e+07
-1.87878e-06   8.13668e+07
-1.90769e-06   7.65464e+07
-1.93749e-06   7.19435e+07
-1.96825e-06   6.75513e+07
-1.99999e-06   6.33634e+07
-2.03278e-06   5.93732e+07
-2.06666e-06   5.55746e+07
-2.10169e-06   5.19612e+07
-2.13793e-06   4.8527e+07
-2.17543e-06   4.52659e+07
-2.21428e-06   4.21719e+07
-2.25454e-06   3.92394e+07
-2.29629e-06   3.64625e+07
-2.33962e-06   3.38357e+07
-2.38461e-06   3.13534e+07
-2.43137e-06   2.90103e+07
-2.47999e-06   2.6801e+07
-2.53061e-06   2.47204e+07
-2.58333e-06   2.27634e+07
-2.63829e-06   2.09249e+07
-2.69565e-06   1.92001e+07
-2.75555e-06   1.75842e+07
-2.81817e-06   1.60724e+07
-2.88371e-06   1.46604e+07
-2.95237e-06   1.33435e+07
-3.02438e-06   1.21173e+07
-3.09999e-06   1.09777e+07
-3.17948e-06   9.92042e+06
-3.26315e-06   8.94141e+06
-3.35134e-06   8.03671e+06
-3.44444e-06   7.20247e+06
-3.54285e-06   6.43493e+06
-3.64705e-06   5.73043e+06
-3.75757e-06   5.08542e+06
-3.87499e-06   4.49647e+06
-3.99999e-06   3.96021e+06
-4.13332e-06   3.47341e+06
-4.27585e-06   3.03294e+06
-4.42856e-06   2.63575e+06
-4.59258e-06   2.27891e+06
-4.76922e-06   1.95959e+06
-4.95999e-06   1.67506e+06
-5.16665e-06   1.42271e+06
-5.39129e-06   1.2e+06
-5.63635e-06   1.00453e+06
-5.90475e-06   833967
-6.19998e-06   686106
-14: ABSLENGTH
-2.034e-06   3448
-2.068e-06   4082
-2.103e-06   6329
-2.139e-06   9174
-2.177e-06   12346
-2.216e-06   13889
-2.256e-06   15152
-2.298e-06   17241
-2.341e-06   18868
-2.386e-06   20000
-2.433e-06   26316
-2.481e-06   35714
-2.532e-06   45455
-2.585e-06   47619
-2.64e-06   52632
-2.697e-06   52632
-2.757e-06   55556
-2.82e-06   52632
-2.885e-06   52632
-2.954e-06   47619
-3.026e-06   45455
-3.102e-06   41667
-3.181e-06   37037
-3.265e-06   33333
-3.353e-06   30000
-3.446e-06   28500
-3.545e-06   27000
-3.649e-06   24500
-3.76e-06   22000
-3.877e-06   19500
-4.002e-06   17500
-4.136e-06   14500
-15: FASTCOMPONENT
-2.034e-06   1
-2.068e-06   1
-2.103e-06   1
-2.139e-06   1
-2.177e-06   1
-2.216e-06   1
-2.256e-06   1
-2.298e-06   1
-2.341e-06   1
-2.386e-06   1
-2.433e-06   1
-2.481e-06   1
-2.532e-06   1
-2.585e-06   1
-2.64e-06   1
-2.697e-06   1
-2.757e-06   1
-2.82e-06   1
-2.885e-06   1
-2.954e-06   1
-3.026e-06   1
-3.102e-06   1
-3.181e-06   1
-3.265e-06   1
-3.353e-06   1
-3.446e-06   1
-3.545e-06   1
-3.649e-06   1
-3.76e-06   1
-3.877e-06   1
-4.002e-06   1
-4.136e-06   1
-16: SLOWCOMPONENT
-2.034e-06   0.01
-2.068e-06   1
-2.103e-06   2
-2.139e-06   3
-2.177e-06   4
-2.216e-06   5
-2.256e-06   6
-2.298e-06   7
-2.341e-06   8
-2.386e-06   9
-2.433e-06   8
-2.481e-06   7
-2.532e-06   6
-2.585e-06   4
-2.64e-06   3
-2.697e-06   2
-2.757e-06   1
-2.82e-06   0.01
-2.885e-06   1
-2.954e-06   2
-3.026e-06   3
-3.102e-06   4
-3.181e-06   5
-3.265e-06   6
-3.353e-06   7
-3.446e-06   8
-3.545e-06   9
-3.649e-06   8
-3.76e-06   7
-3.877e-06   6
-4.002e-06   5
-4.136e-06   4
-5: MIEHG_FORWARD
-0.99
-6: MIEHG_BACKWARD
-0.99
-7: MIEHG_FORWARD_RATIO
-0.8
-8: SCINTILLATIONYIELD
-50
-9: RESOLUTIONSCALE
-1
-10: FASTTIMECONSTANT
-1
-12: SLOWTIMECONSTANT
-10
-14: YIELDRATIO
-0.8
-Air G4MaterialPropertiesTable
-0: RINDEX
-2.034e-06   1
-2.068e-06   1
-2.103e-06   1
-2.139e-06   1
-2.177e-06   1
-2.216e-06   1
-2.256e-06   1
-2.298e-06   1
-2.341e-06   1
-2.386e-06   1
-2.433e-06   1
-2.481e-06   1
-2.532e-06   1
-2.585e-06   1
-2.64e-06   1
-2.697e-06   1
-2.757e-06   1
-2.82e-06   1
-2.885e-06   1
-2.954e-06   1
-3.026e-06   1
-3.102e-06   1
-3.181e-06   1
-3.265e-06   1
-3.353e-06   1
-3.446e-06   1
-3.545e-06   1
-3.649e-06   1
-3.76e-06   1
-3.877e-06   1
-4.002e-06   1
-4.136e-06   1
-9: GROUPVEL
-2.034e-06   299.792
-2.051e-06   299.792
-2.0855e-06   299.792
-2.121e-06   299.792
-2.158e-06   299.792
-2.1965e-06   299.792
-2.236e-06   299.792
-2.277e-06   299.792
-2.3195e-06   299.792
-2.3635e-06   299.792
-2.4095e-06   299.792
-2.457e-06   299.792
-2.5065e-06   299.792
-2.5585e-06   299.792
-2.6125e-06   299.792
-2.6685e-06   299.792
-2.727e-06   299.792
-2.7885e-06   299.792
-2.8525e-06   299.792
-2.9195e-06   299.792
-2.99e-06   299.792
-3.064e-06   299.792
-3.1415e-06   299.792
-3.223e-06   299.792
-3.309e-06   299.792
-3.3995e-06   299.792
-3.4955e-06   299.792
-3.597e-06   299.792
-3.7045e-06   299.792
-3.8185e-06   299.792
-3.9395e-06   299.792
-4.136e-06   299.792
-LUT DAVIS - data file: /cvmfs/geant4.cern.ch/share/data/RealSurface2.1.1/Rough_LUT.dat read in! 
-Reflectivity LUT DAVIS - data file: /cvmfs/geant4.cern.ch/share/data/RealSurface2.1.1/Rough_LUTR.dat read in! 
-  Surface type   = 3
-  Surface finish = 30
-  Surface model  = 3
-
-  Surface parameter 
-  ----------------- 
-0
-
-  Surface type   = 1
-  Surface finish = 0
-  Surface model  = 0
-
-  Surface parameter 
-  ----------------- 
-1
-
-Water Surface G4MaterialPropertiesTable
-0: RINDEX
-2.034e-06   1.35
-4.136e-06   1.4
-6: SPECULARLOBECONSTANT
-2.034e-06   0.3
-4.136e-06   0.3
-7: SPECULARSPIKECONSTANT
-2.034e-06   0.2
-4.136e-06   0.2
-8: BACKSCATTERCONSTANT
-2.034e-06   0.2
-4.136e-06   0.2
-9: GROUPVEL
-2.034e-06   211.055
-4.136e-06   203.878
-Air Surface G4MaterialPropertiesTable
-1: REFLECTIVITY
-2.034e-06   0.3
-4.136e-06   0.5
-4: EFFICIENCY
-2.034e-06   0.8
-4.136e-06   1
-### Birks coefficients used in run time
-   Water     0.126 mm/MeV     0.0126 g/cm^2/MeV  massFactor=  85.0756 effCharge= 62.0606
- AddDiscreteProcess to OpticalPhoton 
-Visualization Manager instantiating with verbosity "warnings (3)"...
-Visualization Manager initialising...
-Registering graphics systems...
-
-You have successfully registered the following graphics systems.
-Current available graphics systems are:
-ASCIITree (ATree)
-DAWNFILE (DAWNFILE)
-G4HepRep (HepRepXML)
-G4HepRepFile (HepRepFile)
-RayTracer (RayTracer)
-VRML1FILE (VRML1FILE)
-VRML2FILE (VRML2FILE)
-gMocrenFile (gMocrenFile)
-OpenGLImmediateQt (OGLIQt, OGLI)
-OpenGLStoredQt (OGLSQt, OGL, OGLS)
-OpenGLImmediateXm (OGLIXm, OGLIQt_FALLBACK)
-OpenGLStoredXm (OGLSXm, OGLSQt_FALLBACK)
-OpenGLImmediateX (OGLIX, OGLIQt_FALLBACK, OGLIXm_FALLBACK)
-OpenGLStoredX (OGLSX, OGLSQt_FALLBACK, OGLSXm_FALLBACK)
-RayTracerX (RayTracerX)
-
-Registering model factories...
-
-You have successfully registered the following model factories.
-Registered model factories:
-  generic
-  drawByAttribute
-  drawByCharge
-  drawByOriginVolume
-  drawByParticleID
-  drawByEncounteredVolume
-
-Registered filter factories:
-  attributeFilter
-  chargeFilter
-  originVolumeFilter
-  particleFilter
-  encounteredVolumeFilter
-
-You have successfully registered the following user vis actions.
-Run Duration User Vis Actions: none
-End of Event User Vis Actions: none
-End of Run User Vis Actions: none
-
-Some /vis commands (optionally) take a string to specify colour.
-"/vis/list" to see available colours.
-/tracking/verbose 0
-#
-/gun/particle e+
-/gun/energy 500 keV
-#
-/OpNovice/phys/verbose 0
-#
-/run/beamOn 1
-
-conv:   for  gamma    SubType= 14  BuildTable= 1
-      Lambda table from 1.022 MeV to 100 TeV, 18 bins per decade, spline: 1
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-        BetheHeitler :  Emin=        0 eV    Emax=       80 GeV   AngularGenUrban
-     BetheHeitlerLPM :  Emin=       80 GeV   Emax=      100 TeV   AngularGenUrban
-
-compt:   for  gamma    SubType= 13  BuildTable= 1
-      Lambda table from 100 eV  to 1 MeV, 7 bins per decade, spline: 1
-      LambdaPrime table from 1 MeV to 100 TeV in 56 bins 
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-       Klein-Nishina :  Emin=        0 eV    Emax=      100 TeV
-
-phot:   for  gamma    SubType= 12  BuildTable= 0
-      LambdaPrime table from 200 keV to 100 TeV in 61 bins 
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-       PhotoElectric :  Emin=        0 eV    Emax=      100 TeV   AngularGenSauterGavrila
-
-msc:   for e-    SubType= 10
-      RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-eIoni:   for  e-    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-        MollerBhabha :  Emin=        0 eV    Emax=      100 TeV
-
-eBrem:   for  e-    SubType= 3
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      LPM flag: 1 for E > 1 GeV,  VertexHighEnergyTh(GeV)= 100000
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-             eBremSB :  Emin=        0 eV    Emax=        1 GeV   AngularGenUrban
-            eBremLPM :  Emin=        1 GeV   Emax=      100 TeV   AngularGenUrban
-
-msc:   for e+    SubType= 10
-      RangeFactor= 0.04, stepLimitType: 1, latDisplacement: 1
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-eIoni:   for  e+    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-        MollerBhabha :  Emin=        0 eV    Emax=      100 TeV
-
-eBrem:   for  e+    SubType= 3
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      LPM flag: 1 for E > 1 GeV,  VertexHighEnergyTh(GeV)= 100000
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-             eBremSB :  Emin=        0 eV    Emax=        1 GeV   AngularGenUrban
-            eBremLPM :  Emin=        1 GeV   Emax=      100 TeV   AngularGenUrban
-
-annihil:   for  e+, integral: 1     SubType= 5  BuildTable= 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            eplus2gg :  Emin=        0 eV    Emax=      100 TeV
-
-msc:   for proton    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  proton    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-               Bragg :  Emin=        0 eV    Emax=        2 MeV
-          BetheBloch :  Emin=        2 MeV   Emax=      100 TeV
-
-msc:   for GenericIon    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV
-
-hIoni:   for  GenericIon    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-               Bragg :  Emin=        0 eV    Emax=        2 MeV
-          BetheBloch :  Emin=        2 MeV   Emax=      100 TeV
-
-msc:   for alpha    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  alpha    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-               Bragg :  Emin=        0 eV    Emax=   7.9452 MeV
-          BetheBloch :  Emin=   7.9452 MeV   Emax=      100 TeV
-
-msc:   for anti_proton    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  anti_proton    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            ICRU73QO :  Emin=        0 eV    Emax=        2 MeV
-          BetheBloch :  Emin=        2 MeV   Emax=      100 TeV
-
-msc:   for kaon+    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  kaon+    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-               Bragg :  Emin=        0 eV    Emax=  1.05231 MeV
-          BetheBloch :  Emin=  1.05231 MeV   Emax=      100 TeV
-
-msc:   for kaon-    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  kaon-    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            ICRU73QO :  Emin=        0 eV    Emax=  1.05231 MeV
-          BetheBloch :  Emin=  1.05231 MeV   Emax=      100 TeV
-
-msc:   for mu+    SubType= 10
-      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-muIoni:   for  mu+    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-               Bragg :  Emin=        0 eV    Emax=      200 keV
-          BetheBloch :  Emin=      200 keV   Emax=        1 GeV
-        MuBetheBloch :  Emin=        1 GeV   Emax=      100 TeV
-
-muBrems:   for  mu+    SubType= 3
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-              MuBrem :  Emin=        0 eV    Emax=      100 TeV
-
-muPairProd:   for  mu+    SubType= 4
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      Sampling table 21x1001 from 1 GeV to 100 TeV 
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-          muPairProd :  Emin=        0 eV    Emax=      100 TeV
-
-msc:   for mu-    SubType= 10
-      RangeFactor= 0.2, step limit type: 0, lateralDisplacement: 0, polarAngleLimit(deg)= 180
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-muIoni:   for  mu-    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            ICRU73QO :  Emin=        0 eV    Emax=      200 keV
-          BetheBloch :  Emin=      200 keV   Emax=        1 GeV
-        MuBetheBloch :  Emin=        1 GeV   Emax=      100 TeV
-
-muBrems:   for  mu-    SubType= 3
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-              MuBrem :  Emin=        0 eV    Emax=      100 TeV
-
-muPairProd:   for  mu-    SubType= 4
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      Sampling table 21x1001 from 1 GeV to 100 TeV 
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-          muPairProd :  Emin=        0 eV    Emax=      100 TeV
-
-msc:   for pi+    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  pi+    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-               Bragg :  Emin=        0 eV    Emax=  297.505 keV
-          BetheBloch :  Emin=  297.505 keV   Emax=      100 TeV
-
-msc:   for pi-    SubType= 10
-      RangeFactor= 0.2, stepLimitType: 0, latDisplacement: 0
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            UrbanMsc :  Emin=        0 eV    Emax=      100 TeV  Table with 84 bins Emin=    100 eV    Emax=    100 TeV
-
-hIoni:   for  pi-    SubType= 2
-      dE/dx and range tables from 100 eV  to 100 TeV in 84 bins
-      Lambda tables from threshold to 100 TeV, 7 bins per decade, spline: 1
-      finalRange(mm)= 0.1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01
-      ===== EM models for the G4Region  DefaultRegionForTheWorld ======
-            ICRU73QO :  Emin=        0 eV    Emax=  297.505 keV
-          BetheBloch :  Emin=  297.505 keV   Emax=      100 TeV
-
-========= Table of registered couples ==============================
-
-Index : 0     used in the geometry : Yes
- Material : Air
- Range cuts        :  gamma  1 mm     e-  1 mm     e+  1 mm  proton 1 mm 
- Energy thresholds :  gamma  990 eV     e-  990 eV     e+  990 eV  proton 100 keV
- Region(s) which use this couple : 
-    DefaultRegionForTheWorld
-
-Index : 1     used in the geometry : Yes
- Material : Water
- Range cuts        :  gamma  1 mm     e-  1 mm     e+  1 mm  proton 1 mm 
- Energy thresholds :  gamma  2.94056 keV    e-  351.877 keV    e+  342.545 keV proton 100 keV
- Region(s) which use this couple : 
-    DefaultRegionForTheWorld
-
-====================================================================
-
-### Run 0 start.
-Number of Scintillation photons produced in this event : 69
-Number of Cerenkov photons produced in this event : 22
-number of event = 1 User=0.010000s Real=0.002789s Sys=0.000000s
-#
-/OpNovice/phys/cerenkovMaxPhotons 15
-#
-/run/beamOn 1
-### Run 1 start.
-Number of Scintillation photons produced in this event : 61
-Number of Cerenkov photons produced in this event : 14
-number of event = 1 User=0.000000s Real=0.000693s Sys=0.000000s
-Graphics systems deleted.
-Visualization Manager deleting...
diff --git a/gui.mac b/gui.mac
deleted file mode 100644
index 589ae20e42bf953727b0a40d956b62cb99df8ad5..0000000000000000000000000000000000000000
--- a/gui.mac
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# This file permits to customize, with commands,
-# the menu bar of the G4UIXm, G4UIQt, G4UIWin32 sessions.
-# It has no effect with G4UIterminal.
-#
-# 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/include/OpNoviceActionInitialization.hh b/include/ActionInitialization.hh
similarity index 82%
rename from include/OpNoviceActionInitialization.hh
rename to include/ActionInitialization.hh
index b7d46fb9a2da7aaeb84c04372dc124428d2e46af..1d7a19ec1b167d3298b91419048baed7cc18470d 100644
--- a/include/OpNoviceActionInitialization.hh
+++ b/include/ActionInitialization.hh
@@ -24,11 +24,11 @@
 // ********************************************************************
 //
 //
-/// \file OpNoviceActionInitialization.hh
-/// \brief Definition of the OpNoviceActionInitialization class
+/// \file ActionInitialization.hh
+/// \brief Definition of the ActionInitialization class
 
-#ifndef OpNoviceActionInitialization_h
-#define OpNoviceActionInitialization_h 1
+#ifndef ActionInitialization_h
+#define ActionInitialization_h 1
 
 #include "G4VUserActionInitialization.hh"
 #include "G4String.hh"
@@ -38,16 +38,15 @@ class B4DetectorConstruction;
 /// Action initialization class.
 ///
 
-class OpNoviceActionInitialization : public G4VUserActionInitialization
+class ActionInitialization : public G4VUserActionInitialization
 {
   public:
-    OpNoviceActionInitialization(G4String);
-    virtual ~OpNoviceActionInitialization();
+    ActionInitialization(G4String);
+    virtual ~ActionInitialization();
 
     virtual void BuildForMaster() const;
     virtual void Build() const;
 
-    virtual G4VSteppingVerbose* InitializeSteppingVerbose() const;
     G4String ffileName;
 };
 
diff --git a/include/OpNoviceDetectorConstruction.hh b/include/DetectorConstruction.hh
similarity index 83%
rename from include/OpNoviceDetectorConstruction.hh
rename to include/DetectorConstruction.hh
index f2cedb95fa01b20dccc6d7fe3542f1a7877ecb5f..44b675382055041e802df1bc6bb8eeed7e3ddad9 100644
--- a/include/OpNoviceDetectorConstruction.hh
+++ b/include/DetectorConstruction.hh
@@ -23,14 +23,14 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/include/OpNoviceDetectorConstruction.hh
-/// \brief Definition of the OpNoviceDetectorConstruction class
+/// \file /include/DetectorConstruction.hh
+/// \brief Definition of the DetectorConstruction class
 //
 //
 //
 //
-#ifndef OpNoviceDetectorConstruction_h
-#define OpNoviceDetectorConstruction_h 1
+#ifndef DetectorConstruction_h
+#define DetectorConstruction_h 1
 
 #include "globals.hh"
 #include "G4Material.hh"
@@ -40,11 +40,11 @@
 #include "Materials.hh"
 
 
-class OpNoviceDetectorConstruction : public G4VUserDetectorConstruction
+class DetectorConstruction : public G4VUserDetectorConstruction
 {
   public:
-    OpNoviceDetectorConstruction();
-    virtual ~OpNoviceDetectorConstruction();
+    DetectorConstruction();
+    virtual ~DetectorConstruction();
 
   public:
     virtual G4VPhysicalVolume* Construct();
@@ -58,12 +58,20 @@ class OpNoviceDetectorConstruction : public G4VUserDetectorConstruction
     G4LogicalVolume*     m_logicWorld;
     G4VPhysicalVolume*   m_physWorld;
 
+    G4LogicalVolume*     cad_logical;
+    G4VPhysicalVolume*   cad_physical;
+
     Materials* materials;
 
     std::string filename = "";
     std::string filetype = "";
     std::string GDMLoutput;
     G4double    fRoughness = 0;
+
+    #ifdef G4LIB_USE_GDML
+    G4GDMLParser fParser;
+    #elif defined CADMesh
+    CADMesh* mesh;
 };
 
-#endif /*OpNoviceDetectorConstruction_h*/
+#endif /*DetectorConstruction_h*/
diff --git a/include/OpNoviceEventAction.hh b/include/EventAction.hh
similarity index 91%
rename from include/OpNoviceEventAction.hh
rename to include/EventAction.hh
index 1feff62ba2022ea0f645aafd7369440ae1a1ed03..cd2d9f38177a106a294afab6ca0cabd6850fe4f9 100644
--- a/include/OpNoviceEventAction.hh
+++ b/include/EventAction.hh
@@ -23,17 +23,17 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 // @Author Chad Lantz
-#ifndef OpNoviceEventAction_H
-#define OpNoviceEventAction_H 1
+#ifndef EventAction_H
+#define EventAction_H 1
 
 #include "globals.hh"
 #include "G4UserEventAction.hh"
 
 
-class OpNoviceEventAction : public G4UserEventAction{
+class EventAction : public G4UserEventAction{
   public:
-    OpNoviceEventAction();
-    virtual ~OpNoviceEventAction();
+    EventAction();
+    virtual ~EventAction();
 
     virtual void  BeginOfEventAction( const G4Event* event );
     virtual void    EndOfEventAction( const G4Event* event );
diff --git a/include/OpNovicePhysicsList.hh b/include/OpNovicePhysicsList.hh
deleted file mode 100644
index 4e55dae32c475ad0ffb3f3d367e583495a98959c..0000000000000000000000000000000000000000
--- a/include/OpNovicePhysicsList.hh
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// ********************************************************************
-// * 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/include/OpNovicePhysicsList.hh
-/// \brief Definition of the OpNovicePhysicsList class
-//
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#ifndef OpNovicePhysicsList_h
-#define OpNovicePhysicsList_h 1
-
-#include "globals.hh"
-#include "G4VUserPhysicsList.hh"
-
-class OpNovicePhysicsListMessenger;
-
-class G4Cerenkov;
-class G4Scintillation;
-class G4OpAbsorption;
-class G4OpRayleigh;
-class G4OpMieHG;
-class G4OpBoundaryProcess;
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-class OpNovicePhysicsList : public G4VUserPhysicsList
-{
-  public:
-
-    OpNovicePhysicsList();
-    virtual ~OpNovicePhysicsList();
-
-  public:
-
-    virtual void ConstructParticle();
-    virtual void ConstructProcess();
-
-    virtual void SetCuts();
-
-    //these methods Construct physics processes and register them
-    void ConstructDecay();
-    void ConstructEM();
-    void ConstructOp();
-
-    //for the Messenger 
-    void SetVerbose(G4int);
-    void SetNbOfPhotonsCerenkov(G4int);
- 
-  private:
-
-    OpNovicePhysicsListMessenger* fMessenger;
-
-    static G4ThreadLocal G4int fVerboseLevel;
-    static G4ThreadLocal G4int fMaxNumPhotonStep;
-
-    static G4ThreadLocal G4Cerenkov* fCerenkovProcess;
-    static G4ThreadLocal G4Scintillation* fScintillationProcess;
-    static G4ThreadLocal G4OpAbsorption* fAbsorptionProcess;
-    static G4ThreadLocal G4OpRayleigh* fRayleighScatteringProcess;
-    static G4ThreadLocal G4OpMieHG* fMieHGScatteringProcess;
-    static G4ThreadLocal G4OpBoundaryProcess* fBoundaryProcess;
-};
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#endif /* OpNovicePhysicsList_h */
diff --git a/include/OpNovicePhysicsListMessenger.hh b/include/OpNovicePhysicsListMessenger.hh
deleted file mode 100644
index b0ce3c56eff3e16971022bac4e7c4b5935440a8c..0000000000000000000000000000000000000000
--- a/include/OpNovicePhysicsListMessenger.hh
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// ********************************************************************
-// * 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/include/OpNovicePhysicsListMessenger.hh
-/// \brief Definition of the OpNovicePhysicsListMessenger class
-//
-//
-//
-// 
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#ifndef OpNovicePhysicsListMessenger_h
-#define OpNovicePhysicsListMessenger_h 1
-
-#include "globals.hh"
-#include "G4UImessenger.hh"
-
-class OpNovicePhysicsList;
-class G4UIdirectory;
-class G4UIcmdWithAnInteger;
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-class OpNovicePhysicsListMessenger: public G4UImessenger
-{
-  public:
-    OpNovicePhysicsListMessenger(OpNovicePhysicsList* );
-    virtual ~OpNovicePhysicsListMessenger();
- 
-    virtual void SetNewValue(G4UIcommand*, G4String);
- 
-  private:
-    OpNovicePhysicsList*  fPhysicsList;
- 
-    G4UIdirectory*        fOpNoviceDir;
-    G4UIdirectory*        fPhysDir;
-    G4UIcmdWithAnInteger* fVerboseCmd;
-    G4UIcmdWithAnInteger* fCerenkovCmd;
-};
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#endif
diff --git a/include/OpNoviceSteppingVerbose.hh b/include/OpNoviceSteppingVerbose.hh
deleted file mode 100644
index 295dfd1e9cfc329b87e604327e2db9b6e05c6cc8..0000000000000000000000000000000000000000
--- a/include/OpNoviceSteppingVerbose.hh
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// ********************************************************************
-// * 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/include/OpNoviceSteppingVerbose.hh
-/// \brief Definition of the OpNoviceSteppingVerbose class
-//
-//
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-class OpNoviceSteppingVerbose;
-
-#ifndef OpNoviceSteppingVerbose_h
-#define OpNoviceSteppingVerbose_h 1
-
-#include "G4SteppingVerbose.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-class OpNoviceSteppingVerbose : public G4SteppingVerbose
-{
- public:
-
-   OpNoviceSteppingVerbose();
-   virtual ~OpNoviceSteppingVerbose();
-
-   virtual void StepInfo();
-   virtual void TrackingStarted();
-
-};
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#endif
diff --git a/include/OpticalPhysics.hh b/include/OpticalPhysics.hh
deleted file mode 100644
index a2c16bbcfc168f7f1acd541f83a8f83eda349ca9..0000000000000000000000000000000000000000
--- a/include/OpticalPhysics.hh
+++ /dev/null
@@ -1,50 +0,0 @@
-#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* GetWLSProcess() {return fWLSProcess;}
-    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*             fWLSProcess;
-    G4Cerenkov*          fCerenkovProcess;
-    G4Scintillation*     fScintProcess;
-    G4OpAbsorption*      fAbsorptionProcess;
-    G4OpRayleigh*        fRayleighScattering;
-    G4OpMieHG*           fMieHGScatteringProcess;
-    G4OpBoundaryProcess* fBoundaryProcess;
- 
-    G4bool fAbsorptionOn;
-
-};
-#endif
diff --git a/include/AirHit.hh b/include/PMTHit.hh
similarity index 84%
rename from include/AirHit.hh
rename to include/PMTHit.hh
index ac7881670434221e6582a628581d13954c7f454f..a2f3809f123d2e905f390eb0ec6dc07187982969 100644
--- a/include/AirHit.hh
+++ b/include/PMTHit.hh
@@ -24,8 +24,8 @@
 //
 // @Author Chad Lantz
 
-#ifndef AirHit_h
-#define AirHit_h 1
+#ifndef PMTHit_h
+#define PMTHit_h 1
 
 #include "G4VHit.hh"
 #include "G4THitsCollection.hh"
@@ -33,14 +33,14 @@
 #include "G4ThreeVector.hh"
 #include "G4ParticleDefinition.hh"
 
-class AirHit : public G4VHit{
+class PMTHit : public G4VHit{
 public:
 
-  AirHit();
-  ~AirHit();
-  AirHit(const AirHit&);
-  const AirHit& operator=(const AirHit&);
-  G4int operator==(const AirHit&) const;
+  PMTHit();
+  ~PMTHit();
+  PMTHit(const PMTHit&);
+  const PMTHit& operator=(const PMTHit&);
+  G4int operator==(const PMTHit&) const;
 
   inline void* operator new(size_t);
   inline void  operator delete(void*);
@@ -70,14 +70,14 @@ private:
 
 
 ///////////////////////// Hit collection definition /////////////////////////
-typedef G4THitsCollection<AirHit> HitsCollection;
+typedef G4THitsCollection<PMTHit> HitsCollection;
 
-extern G4Allocator<AirHit> HitAllocator;
+extern G4Allocator<PMTHit> HitAllocator;
 
 /*
  *
  */
-inline void* AirHit::operator new(size_t)
+inline void* PMTHit::operator new(size_t)
 {
   void *aHit;
   aHit = (void *) HitAllocator.MallocSingle();
@@ -87,9 +87,9 @@ inline void* AirHit::operator new(size_t)
 /*
  *
  */
-inline void AirHit::operator delete(void *aHit)
+inline void PMTHit::operator delete(void *aHit)
 {
-  HitAllocator.FreeSingle((AirHit*) aHit);
+  HitAllocator.FreeSingle((PMTHit*) aHit);
 }
 
 #endif
diff --git a/include/AirSD.hh b/include/PMTSD.hh
similarity index 91%
rename from include/AirSD.hh
rename to include/PMTSD.hh
index 5a13c96435a9aaa3e5b282ab00a7c0c7e8b6898f..4f07175a0a09fed6229b8b8ae9d77e506ad2f57c 100644
--- a/include/AirSD.hh
+++ b/include/PMTSD.hh
@@ -25,21 +25,21 @@
 //
 // @Author Chad Lantz
 
-#ifndef AirSD_h
-#define AirSD_h 1
+#ifndef PMTSD_h
+#define PMTSD_h 1
 
 #include "G4VSensitiveDetector.hh"
-#include "AirHit.hh"
+#include "PMTHit.hh"
 
 class G4Step;
 class G4HCofThisEvent;
 
 
-class AirSD : public G4VSensitiveDetector
+class PMTSD : public G4VSensitiveDetector
 {
 public:
-  AirSD(G4String);
-  ~AirSD();
+  PMTSD(G4String);
+  ~PMTSD();
 
   void Initialize(G4HCofThisEvent*);
   G4bool ProcessHits(G4Step*, G4TouchableHistory*);
diff --git a/include/PhysicsList.hh b/include/PhysicsList.hh
index bdf1006d01402d45345fb3d365f285153e583666..98484ba5e7b8e8c55d161177bfc511ff2bf7b8b3 100644
--- a/include/PhysicsList.hh
+++ b/include/PhysicsList.hh
@@ -1,55 +1,91 @@
+//
+// ********************************************************************
+// * 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/PhysicsList.hh
+/// \brief Definition of the PhysicsList class
+//
+//
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
 #ifndef PhysicsList_h
 #define PhysicsList_h 1
 
 #include "globals.hh"
-#include "G4VModularPhysicsList.hh"
+#include "G4VUserPhysicsList.hh"
+
+class PhysicsListMessenger;
 
-class G4VPhysicsConstructor;
+class G4Cerenkov;
+class G4Scintillation;
+class G4OpAbsorption;
+class G4OpRayleigh;
+class G4OpMieHG;
+class G4OpBoundaryProcess;
 
-class OpticalPhysics;
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
-class PhysicsList: public G4VModularPhysicsList{
+class PhysicsList : public G4VUserPhysicsList
+{
   public:
 
     PhysicsList();
     virtual ~PhysicsList();
 
-    void SetCuts();
-    void SetCutForGamma(G4double);
-    void SetCutForElectron(G4double);
-    void SetCutForPositron(G4double);
-
-    void SetStepMax(G4double);
-    void AddStepMax();
-
-    /// Remove specific physics from physics list.
-    void RemoveFromPhysicsList(const G4String&);
-
-    /// Make sure that the physics list is empty.
-    void ClearPhysics();
+  public:
 
     virtual void ConstructParticle();
     virtual void ConstructProcess();
 
-    // Turn on or off the absorption process
-    void SetAbsorption(G4bool);
+    virtual void SetCuts();
 
-    void SetNbOfPhotonsCerenkov(G4int);
+    //these methods Construct physics processes and register them
+    void ConstructDecay();
+    void ConstructEM();
+    void ConstructOp();
 
+    //for the Messenger
     void SetVerbose(G4int);
+    void SetNbOfPhotonsCerenkov(G4int);
 
   private:
 
-    G4double fCutForGamma;
-    G4double fCutForElectron;
-    G4double fCutForPositron;
-
-    OpticalPhysics* fOpticalPhysics;
+    PhysicsListMessenger* fMessenger;
 
-    G4bool fAbsorptionOn;
-
-    G4VMPLData::G4PhysConstVectorData* fPhysicsVector;
+    static G4ThreadLocal G4int fVerboseLevel;
+    static G4ThreadLocal G4int fMaxNumPhotonStep;
 
+    static G4ThreadLocal G4Cerenkov* fCerenkovProcess;
+    static G4ThreadLocal G4Scintillation* fScintillationProcess;
+    static G4ThreadLocal G4OpAbsorption* fAbsorptionProcess;
+    static G4ThreadLocal G4OpRayleigh* fRayleighScatteringProcess;
+    static G4ThreadLocal G4OpMieHG* fMieHGScatteringProcess;
+    static G4ThreadLocal G4OpBoundaryProcess* fBoundaryProcess;
 };
 
-#endif
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif /* PhysicsList_h */
diff --git a/include/OpNovicePrimaryGeneratorAction.hh b/include/PrimaryGeneratorAction.hh
similarity index 81%
rename from include/OpNovicePrimaryGeneratorAction.hh
rename to include/PrimaryGeneratorAction.hh
index dde28109a508a3afe956e6b446c18d5c3ea02293..584a1c779e671d0f27ea4c9d5784bde34bb7796c 100644
--- a/include/OpNovicePrimaryGeneratorAction.hh
+++ b/include/PrimaryGeneratorAction.hh
@@ -1,4 +1,3 @@
-//
 // ********************************************************************
 // * License and Disclaimer                                           *
 // *                                                                  *
@@ -23,11 +22,11 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/include/OpNovicePrimaryGeneratorAction.hh
-/// \brief Definition of the OpNovicePrimaryGeneratorAction class
+/// \file /include/PrimaryGeneratorAction.hh
+/// \brief Definition of the PrimaryGeneratorAction class
 //
-#ifndef OpNovicePrimaryGeneratorAction_h
-#define OpNovicePrimaryGeneratorAction_h 1
+#ifndef PrimaryGeneratorAction_h
+#define PrimaryGeneratorAction_h 1
 
 #include "G4VUserPrimaryGeneratorAction.hh"
 #include "globals.hh"
@@ -36,11 +35,11 @@ class G4GeneralParticleSource;
 class G4Event;
 
 
-class OpNovicePrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
+class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
 {
   public:
-    OpNovicePrimaryGeneratorAction();
-    virtual ~OpNovicePrimaryGeneratorAction();
+    PrimaryGeneratorAction();
+    virtual ~PrimaryGeneratorAction();
 
   public:
     virtual void GeneratePrimaries(G4Event*);
@@ -49,4 +48,4 @@ class OpNovicePrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
     G4GeneralParticleSource* fParticleGun;
 };
 
-#endif /*OpNovicePrimaryGeneratorAction_h*/
+#endif /*PrimaryGeneratorAction_h*/
diff --git a/include/OpNoviceRunAction.hh b/include/RunAction.hh
similarity index 87%
rename from include/OpNoviceRunAction.hh
rename to include/RunAction.hh
index f018d1bdd14dcf66ea1613a4c94dda0c1a74f619..317238b2392e77e19295d84d1075a2ce34239b28 100644
--- a/include/OpNoviceRunAction.hh
+++ b/include/RunAction.hh
@@ -23,16 +23,16 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/include/OpNoviceRunAction.hh
-/// \brief Definition of the OpNoviceRunAction class
+/// \file /include/RunAction.hh
+/// \brief Definition of the RunAction class
 //
 //
 //
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
-#ifndef OpNoviceRunAction_h
-#define OpNoviceRunAction_h 1
+#ifndef RunAction_h
+#define RunAction_h 1
 
 #include "globals.hh"
 #include "G4UserRunAction.hh"
@@ -42,11 +42,11 @@
 class G4Timer;
 class G4Run;
 
-class OpNoviceRunAction : public G4UserRunAction
+class RunAction : public G4UserRunAction
 {
   public:
-    OpNoviceRunAction(G4String fileName);
-    virtual ~OpNoviceRunAction();
+    RunAction(G4String fileName);
+    virtual ~RunAction();
 
   public:
     virtual void BeginOfRunAction(const G4Run* aRun);
@@ -59,4 +59,4 @@ class OpNoviceRunAction : public G4UserRunAction
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
-#endif /*OpNoviceRunAction_h*/
+#endif /*RunAction_h*/
diff --git a/include/OpNoviceSteppingAction.hh b/include/SteppingAction.hh
similarity index 87%
rename from include/OpNoviceSteppingAction.hh
rename to include/SteppingAction.hh
index 34cbc866ce15cdc2482559c791bb5b466b150ab6..231833259118122f4f68b77052956f2908572207 100644
--- a/include/OpNoviceSteppingAction.hh
+++ b/include/SteppingAction.hh
@@ -24,23 +24,23 @@
 // ********************************************************************
 //
 //
-/// \file OpNoviceSteppingAction.hh
-/// \brief Definition of the OpNoviceSteppingAction class
+/// \file SteppingAction.hh
+/// \brief Definition of the SteppingAction class
 
-#ifndef OpNoviceSteppingAction_h
-#define OpNoviceSteppingAction_h 1
+#ifndef SteppingAction_h
+#define SteppingAction_h 1
 
 #include "G4UserSteppingAction.hh"
 #include "globals.hh"
 
 /// Stepping action class
-/// 
+///
 
-class OpNoviceSteppingAction : public G4UserSteppingAction
+class SteppingAction : public G4UserSteppingAction
 {
   public:
-    OpNoviceSteppingAction();
-    virtual ~OpNoviceSteppingAction();
+    SteppingAction();
+    virtual ~SteppingAction();
 
     // method from the base class
     virtual void UserSteppingAction(const G4Step*);
diff --git a/OpNovice.cc b/lightGuide.cc
similarity index 75%
rename from OpNovice.cc
rename to lightGuide.cc
index 5296689e7ace7c3d22bf89a5df7503acf274fc20..e9ad2130837d5ac1c26b271dbe0fb0895e0da712 100644
--- a/OpNovice.cc
+++ b/lightGuide.cc
@@ -1,4 +1,3 @@
-//
 // ********************************************************************
 // * License and Disclaimer                                           *
 // *                                                                  *
@@ -23,25 +22,14 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/OpNovice.cc
-/// \brief Main program of the OpNovice example
-//
-//
+/// \file /lightGuide.cc
+/// \brief Main program of the  example
 //
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+// Description: -- Transport of optical Photons through a light guide
 //
-// 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......
+// Version:     1.0
+// Created:     2019-8-13
+// Author:      Chad Lantz
 
 #include "G4Types.hh"
 
@@ -53,28 +41,29 @@
 
 #include "G4UImanager.hh"
 
-#include "OpNovicePhysicsList.hh"
 #include "PhysicsList.hh"
-#include "OpNoviceDetectorConstruction.hh"
+#include "DetectorConstruction.hh"
 
-#include "OpNoviceActionInitialization.hh"
+#include "ActionInitialization.hh"
 
 #include "G4VisExecutive.hh"
 #include "G4UIExecutive.hh"
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+/*
+*/
 namespace {
   void PrintUsage() {
     G4cerr << " Usage: " << G4endl;
-    G4cerr << " OpNovice [-m macro ] [-u UIsession] [-t nThreads] [-r seed] [-o outputFileName] [-c CADmodelName filetype] [-co GDMLoutFileName] [-s ReflectiveSurfaceRoughness]"
+    G4cerr << " lightGuide [-m macro ] [-u UIsession] [-t nThreads] [-r seed] [-o outputFileName] [-c CADmodelName filetype] [-co GDMLoutFileName] [-s ReflectiveSurfaceRoughness]"
            << 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
@@ -115,18 +104,28 @@ int main(int argc,char** argv)
     }
   }
 
+
+//----------------- Check options against dependencies -----------------//
+
+  if(CADmodel != ""){
   // Check if the user has GDML support and if they are asking for it
-/*#ifndef G4LIB_USE_GDML
-  filetype.toLower();
-  if(filetype == "gdml"){
-    G4cout << "G4GDML not defined!!! aborting" << G4endl;
-    return 0;
+    #ifndef G4LIB_USE_GDML
+      filetype.toLower();
+      if(filetype == "gdml"){
+        G4cout << "G4GDML not defined!!! aborting" << G4endl;
+        return 0;
+      }
+      if(CADoutFile != ""){
+          G4cout << "G4GDML not defined!!! Model will not be converted" << G4endl;
+          CADoutFile = "";
+      }
+    #endif
+    #ifndef CADMESH
+      if(filetype != "gdml"){
+        G4cout << "Cannot read non-gdml geometries without CADMESH installed!!! aborting" << G4endl;
+      }
+    #endif
   }
-  if(CADoutFile != ""){
-      G4cout << "G4GDML not defined!!! Model will not be converted" << G4endl;
-      CADoutFile = "";
-  }
-#endif*/
 
   // Instantiate G4UIExecutive if interactive mode
   G4UIExecutive* ui = nullptr;
@@ -143,6 +142,7 @@ int main(int argc,char** argv)
 #ifdef G4MULTITHREADED
   G4MTRunManager * runManager = new G4MTRunManager;
   if ( nThreads > 0 ) runManager->SetNumberOfThreads(nThreads);
+  G4cout << "Using G4MULTITHREADED" << G4endl;
 #else
   G4RunManager * runManager = new G4RunManager;
 #endif
@@ -153,7 +153,7 @@ int main(int argc,char** argv)
   // Set mandatory initialization classes
   //
   // Detector construction
-  OpNoviceDetectorConstruction* DetConst = new OpNoviceDetectorConstruction();
+  DetectorConstruction* DetConst = new DetectorConstruction();
   if(CADmodel != ""){
     DetConst->SetCADFilename(CADmodel);
     DetConst->SetCADFiletype(filetype);
@@ -162,12 +162,11 @@ int main(int argc,char** argv)
   }
   runManager-> SetUserInitialization(DetConst);
   // Physics list
-  runManager-> SetUserInitialization(new OpNovicePhysicsList());
+  runManager-> SetUserInitialization(new PhysicsList());
   // User action initialization
-  runManager->SetUserInitialization(new OpNoviceActionInitialization(output));
+  runManager->SetUserInitialization(new ActionInitialization(output));
 
   // Initialize G4 kernel
-  //
   runManager->Initialize();
 
   // Initialize visualization
@@ -205,5 +204,3 @@ int main(int argc,char** argv)
 
   return 0;
 }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/optPhoton.mac b/optPhoton.mac
deleted file mode 100644
index 3ff011888ef5db028c0695b20c0e2a494bcfbf8c..0000000000000000000000000000000000000000
--- a/optPhoton.mac
+++ /dev/null
@@ -1,14 +0,0 @@
-/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/src/ActionInitialization.cc b/src/ActionInitialization.cc
new file mode 100644
index 0000000000000000000000000000000000000000..04599319ab116fbfec2de04127d03a6bb2e53a30
--- /dev/null
+++ b/src/ActionInitialization.cc
@@ -0,0 +1,63 @@
+//
+// ********************************************************************
+// * 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 ActionInitialization.cc
+/// \brief Implementation of the ActionInitialization class
+
+#include "ActionInitialization.hh"
+#include "PrimaryGeneratorAction.hh"
+#include "RunAction.hh"
+#include "SteppingAction.hh"
+#include "EventAction.hh"
+
+
+/*
+ */
+ActionInitialization::ActionInitialization(G4String fileName)
+ : G4VUserActionInitialization(){
+   ffileName = fileName;
+ }
+
+ /*
+  */
+ActionInitialization::~ActionInitialization(){
+
+}
+
+/*
+ */
+void ActionInitialization::BuildForMaster() const{
+  SetUserAction(new RunAction(ffileName));
+}
+
+/*
+ */
+void ActionInitialization::Build() const{
+  SetUserAction(new PrimaryGeneratorAction());
+  SetUserAction(new RunAction(ffileName));
+  SetUserAction(new SteppingAction());
+  SetUserAction(new EventAction());
+}
diff --git a/src/OpNoviceDetectorConstruction.cc b/src/DetectorConstruction.cc
similarity index 78%
rename from src/OpNoviceDetectorConstruction.cc
rename to src/DetectorConstruction.cc
index 60ecc9cc2ffffa96f299304e2e24328bfc97dbfb..82efa903f3e8fd5c8efb75c2edd6cfb5969da7fb 100644
--- a/src/OpNoviceDetectorConstruction.cc
+++ b/src/DetectorConstruction.cc
@@ -22,15 +22,15 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/src/OpNoviceDetectorConstruction.cc
-/// \brief Implementation of the OpNoviceDetectorConstruction class
+/// \file /src/DetectorConstruction.cc
+/// \brief Implementation of the DetectorConstruction class
 //
 //
 
 // USER //
-#include "OpNoviceDetectorConstruction.hh"
+#include "DetectorConstruction.hh"
 #include "Materials.hh"
-#include "AirSD.hh"
+#include "PMTSD.hh"
 
 #include <math.h>
 
@@ -50,17 +50,19 @@
 #include "G4VisAttributes.hh"
 #include "G4Colour.hh"
 
-//#ifdef G4LIB_USE_GDML
+#ifdef G4LIB_USE_GDML
 #include "G4GDMLParser.hh"
-//#endif
+#endif
 
 // CADMESH //
+#ifdef CADMESH
 #include "CADMesh.hh"
+#endif
 
 /*
  *
  */
-OpNoviceDetectorConstruction::OpNoviceDetectorConstruction()
+DetectorConstruction::DetectorConstruction()
  : G4VUserDetectorConstruction(){
    materials = Materials::getInstance();
 }
@@ -69,15 +71,15 @@ OpNoviceDetectorConstruction::OpNoviceDetectorConstruction()
 /*
  *
  */
-OpNoviceDetectorConstruction::~OpNoviceDetectorConstruction(){
+DetectorConstruction::~DetectorConstruction(){
 
 }
 
 
-/* Make the detector
- * Ideally this will become the quartz rod, winston cone and PMT
+/* Detector construction is currently all done here
+ * Breaking out into modules may be done later
  */
-G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct(){
+G4VPhysicalVolume* DetectorConstruction::Construct(){
   //Set up the materials
   materials->UseOpticalMaterials(true);
   materials->DefineOpticalProperties();
@@ -85,6 +87,8 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct(){
   G4Material* Al = materials->Al;
   G4Material* Silica = materials->pQuartz;
 
+  //Set the lightguide height. Hardcoded for now,
+  //should be determined by the model dimensions
   G4double lgHeight = 339.*mm/2;
 
   bool checkOverlaps = false;
@@ -117,6 +121,7 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct(){
 
 
   //----------------- Make the light guide -----------------//
+  ////////////////////This got all sorts of fucked up. I'll probably drop GDML support or make it required
   materials->AlSurface->SetSigmaAlpha(fRoughness);
 
   //If we have defined a CAD file, use it
@@ -127,56 +132,53 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct(){
     rot->rotateZ(90*deg);
     rot->rotateY(-90*deg);
 
-    CADMesh* mesh = new CADMesh((char*) filename.c_str());
-    mesh->SetScale(mm);
-    mesh->SetOffset( G4ThreeVector(-20*cm, 0, 0) );
-    mesh->SetReverse(false);
-
-    G4VSolid* cad_solid = mesh->TessellatedMesh();
-
-    G4LogicalVolume* cad_logical =
-      new G4LogicalVolume(cad_solid,     //solid
-                          Al,            //material
-                          "LightGuide"); //name
-
-    G4VPhysicalVolume* cad_physical =
-      new G4PVPlacement(rot,
-                        G4ThreeVector(0,0,lgHeight-(3*cm)),
-                        cad_logical,
-                        "cad_physical",
-                        m_logicWorld,
-                        false,
-                        0);
-
-    //#ifdef G4LIB_USE_GDML
+    //Import the cad model and place it
+    #ifdef CADMESH
+    if(filetype != "gdml"){
+      CADMesh* mesh = new CADMesh((char*) filename.c_str());
+      mesh->SetScale(mm);
+      mesh->SetOffset( G4ThreeVector(-20*cm, 0, 0) );
+      mesh->SetReverse(false);
+
+      cad_logical =
+        new G4LogicalVolume(mesh->TessellatedMesh(), //solid
+                            Al,                      //material
+                            "LightGuide");           //name
+    }
+    #elif defined G4LIB_USE_GDML
+    if(filetype == "gdml"){
+      fParser.Read(fReadFile);
+      break;
+    }
+    if(filetype == "step"){
+      cad_logical = fParser.ParseST(filename,Air,Al);
+    }
+
+    if(cad_logical !=0 ){
+      cad_physical =
+        new G4PVPlacement(0, //rot,
+                          G4ThreeVector(0,0,lgHeight-(3*cm)),
+                          cad_logical,
+                          "cad_physical",
+                          m_logicWorld,
+                          false,
+                          0);
+    }
+
+    //If output to GDML if requested and supported
+    #ifdef G4LIB_USE_GDML
       if(GDMLoutput != ""){
         G4GDMLParser* gdml = new G4GDMLParser();
         gdml->Write("GDMLoutput",cad_physical);
       }
-    //#endif
+    #endif
 
+    //Make the surface optically reflective
     G4LogicalSkinSurface* alumLSS =
       new G4LogicalSkinSurface("AlSkinSurface",
                                cad_logical,
                                materials->AlSurface );
 
-/*
-    if (filetype != "") {
-     // Load CAD file as tetrahedral mesh //
-     CADMesh * tet_mesh = new CADMesh((char*) filename.c_str(),
-                                      (char*) filetype.c_str());
-     tet_mesh->SetScale(1.5);
-     tet_mesh->SetMaterial(Al); // We have to do this before making the G4AssemblyVolume.
-
-     G4AssemblyVolume * cad_assembly = tet_mesh->TetrahedralMesh();
-
-     G4Translate3D translation(20*cm, 0., 0.);
-     G4Transform3D rotation = G4Rotate3D(*rot);
-     G4Transform3D transform = translation*rotation;
-
-     cad_assembly->MakeImprint(m_logicWorld, transform, 0, 0);
-   }*/
-
   }else{
     //Create a trapezoidal air light guide made of aluminum sheet
     G4double thickness = 1.0*mm;
@@ -227,16 +229,13 @@ G4VPhysicalVolume* OpNoviceDetectorConstruction::Construct(){
                                logicLightGuide,
                                materials->AlSurface );
 
-  }
-
-
-
+  }//end else
 
 
   //----------------- Define PMT window -----------------//
   double PMTradius = 65.0/2*mm;
   G4SDManager* SDman = G4SDManager::GetSDMpointer();
-  AirSD* PMT = new AirSD("MyPMT");
+  PMTSD* PMT = new PMTSD("MyPMT");
   SDman->AddNewDetector( PMT );
 
   G4Tubs* solidPMT =
diff --git a/src/OpNoviceEventAction.cc b/src/EventAction.cc
similarity index 69%
rename from src/OpNoviceEventAction.cc
rename to src/EventAction.cc
index 027b9df57244df062ba1f6b57fee73d7383e98e6..6e366df4c290eee486d34f06834235d2a090bc99 100644
--- a/src/OpNoviceEventAction.cc
+++ b/src/EventAction.cc
@@ -23,7 +23,7 @@
 // ********************************************************************
 //
 // @Author Chad Lantz
-#include "OpNoviceEventAction.hh"
+#include "EventAction.hh"
 
 #include "G4VProcess.hh"
 
@@ -34,13 +34,13 @@
 #include "G4Track.hh"
 #include "G4ios.hh"
 
-#include "AirHit.hh"
+#include "PMTHit.hh"
 #include "lgAnalysis.hh"
 
 /*
  *
  */
-OpNoviceEventAction::OpNoviceEventAction()
+EventAction::EventAction()
   : G4UserEventAction(),
     hitsCollID(0){
 
@@ -49,14 +49,14 @@ OpNoviceEventAction::OpNoviceEventAction()
 /*
  *
  */
-OpNoviceEventAction::~OpNoviceEventAction(){
+EventAction::~EventAction(){
 
 }
 
 /*
  *
  */
-void OpNoviceEventAction::BeginOfEventAction(const G4Event* event){
+void EventAction::BeginOfEventAction(const G4Event* event){
   fEventNo = event->GetEventID();
   if(fEventNo%100000 == 0) G4cout << "Begin Event " << fEventNo << G4endl;
   hitsCollID = 0;
@@ -65,27 +65,22 @@ void OpNoviceEventAction::BeginOfEventAction(const G4Event* event){
 /*
  *
  */
-void OpNoviceEventAction::EndOfEventAction(const G4Event* event){
+void EventAction::EndOfEventAction(const G4Event* event){
 
   hitsCollID = G4SDManager::GetSDMpointer()->GetCollectionID("MyPMT");
   G4HCofThisEvent* HCE = event->GetHCofThisEvent();
   if(HCE){
     HitsCollection* HC = (HitsCollection*)(HCE->GetHC(hitsCollID));
     if( HC->entries() ){
-      AirHit* aHit = (*HC)[0];
+      PMTHit* aHit = (*HC)[0];
       // fill ntuple  //
       G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
-      analysisManager->FillNtupleDColumn(0,  aHit->getTrackID()      );
-      analysisManager->FillNtupleDColumn(1,  aHit->getPos().x()      );
-      analysisManager->FillNtupleDColumn(2,  aHit->getPos().y()      );
-      analysisManager->FillNtupleDColumn(3,  aHit->getPos().z()      );
-      analysisManager->FillNtupleDColumn(4,  aHit->getHit().x()      );
-      analysisManager->FillNtupleDColumn(5,  aHit->getHit().y()      );
-      analysisManager->FillNtupleDColumn(6,  aHit->getHit().z()      );
-      analysisManager->FillNtupleDColumn(7,  aHit->getEnergy()       );
-      analysisManager->FillNtupleDColumn(8,  aHit->getMomentum().x() );
-      analysisManager->FillNtupleDColumn(9,  aHit->getMomentum().y() );
-      analysisManager->FillNtupleDColumn(10, aHit->getMomentum().z() );
+      analysisManager->FillNtupleDColumn(0, aHit->getPos().x() );
+      analysisManager->FillNtupleDColumn(1, aHit->getPos().y() );
+      analysisManager->FillNtupleDColumn(2, aHit->getHit().x() );
+      analysisManager->FillNtupleDColumn(3, aHit->getHit().y() );
+      analysisManager->FillNtupleDColumn(4, aHit->getEnergy()  );
+      //Add global timeanalysisManager->FillNtupleDColumn(5, aHit->getTime()  );
       analysisManager->AddNtupleRow();
     }
   }
diff --git a/src/OpNoviceActionInitialization.cc b/src/OpNoviceActionInitialization.cc
deleted file mode 100644
index 0f6b70cff5f9c6ddc01c7135f1167cc2d7690b7e..0000000000000000000000000000000000000000
--- a/src/OpNoviceActionInitialization.cc
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// ********************************************************************
-// * 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 OpNoviceActionInitialization.cc
-/// \brief Implementation of the OpNoviceActionInitialization class
-
-#include "OpNoviceActionInitialization.hh"
-#include "OpNovicePrimaryGeneratorAction.hh"
-#include "OpNoviceRunAction.hh"
-#include "OpNoviceSteppingAction.hh"
-#include "OpNoviceEventAction.hh"
-#include "OpNoviceSteppingVerbose.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNoviceActionInitialization::OpNoviceActionInitialization(G4String fileName)
- : G4VUserActionInitialization(){
-   ffileName = fileName;
- }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNoviceActionInitialization::~OpNoviceActionInitialization()
-{}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNoviceActionInitialization::BuildForMaster() const
-{
-  SetUserAction(new OpNoviceRunAction(ffileName));
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNoviceActionInitialization::Build() const
-{
-  SetUserAction(new OpNovicePrimaryGeneratorAction());
-  SetUserAction(new OpNoviceRunAction(ffileName));
-  SetUserAction(new OpNoviceSteppingAction());
-  SetUserAction(new OpNoviceEventAction());
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-G4VSteppingVerbose*
-               OpNoviceActionInitialization::InitializeSteppingVerbose() const
-{
-  return new OpNoviceSteppingVerbose();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/src/OpNovicePhysicsList.cc b/src/OpNovicePhysicsList.cc
deleted file mode 100644
index b312596d211ecfba6a350de8d409b09dc5d8c934..0000000000000000000000000000000000000000
--- a/src/OpNovicePhysicsList.cc
+++ /dev/null
@@ -1,307 +0,0 @@
-//
-// ********************************************************************
-// * 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/src/OpNovicePhysicsList.cc
-/// \brief Implementation of the OpNovicePhysicsList class
-//
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "globals.hh"
-#include "OpNovicePhysicsList.hh"
-#include "OpNovicePhysicsListMessenger.hh"
-
-#include "G4ParticleDefinition.hh"
-#include "G4ParticleTypes.hh"
-#include "G4ParticleTable.hh"
-
-#include "G4BosonConstructor.hh"
-#include "G4LeptonConstructor.hh"
-#include "G4MesonConstructor.hh"
-#include "G4BaryonConstructor.hh"
-#include "G4IonConstructor.hh"
-#include "G4ShortLivedConstructor.hh"
-
-#include "G4ProcessManager.hh"
-
-#include "G4Cerenkov.hh"
-#include "G4Scintillation.hh"
-#include "G4OpAbsorption.hh"
-#include "G4OpRayleigh.hh"
-#include "G4OpMieHG.hh"
-#include "G4OpBoundaryProcess.hh"
-
-#include "G4LossTableManager.hh"
-#include "G4EmSaturation.hh"
-
-G4ThreadLocal G4int OpNovicePhysicsList::fVerboseLevel = 0;
-G4ThreadLocal G4int OpNovicePhysicsList::fMaxNumPhotonStep = 20;
-G4ThreadLocal G4Cerenkov* OpNovicePhysicsList::fCerenkovProcess = 0;
-G4ThreadLocal G4Scintillation* OpNovicePhysicsList::fScintillationProcess = 0;
-G4ThreadLocal G4OpAbsorption* OpNovicePhysicsList::fAbsorptionProcess = 0;
-G4ThreadLocal G4OpRayleigh* OpNovicePhysicsList::fRayleighScatteringProcess = 0;
-G4ThreadLocal G4OpMieHG* OpNovicePhysicsList::fMieHGScatteringProcess = 0;
-G4ThreadLocal G4OpBoundaryProcess* OpNovicePhysicsList::fBoundaryProcess = 0;
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNovicePhysicsList::OpNovicePhysicsList()
- : G4VUserPhysicsList()
-{
-  fMessenger = new OpNovicePhysicsListMessenger(this);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNovicePhysicsList::~OpNovicePhysicsList() { delete fMessenger; }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::ConstructParticle()
-{
-  // In this method, static member functions should be called
-  // for all particles which you want to use.
-  // This ensures that objects of these particle types will be
-  // created in the program.
-
-  G4BosonConstructor bConstructor;
-  bConstructor.ConstructParticle();
-
-  G4LeptonConstructor lConstructor;
-  lConstructor.ConstructParticle();
-
-  G4MesonConstructor mConstructor;
-  mConstructor.ConstructParticle();
-
-  G4BaryonConstructor rConstructor;
-  rConstructor.ConstructParticle();
-
-  G4IonConstructor iConstructor;
-  iConstructor.ConstructParticle();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::ConstructProcess()
-{
-  AddTransportation();
-  ConstructDecay();
-  ConstructEM();
-  ConstructOp();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "G4Decay.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::ConstructDecay()
-{
-  // Add Decay Process
-  G4Decay* theDecayProcess = new G4Decay();
-  auto particleIterator=GetParticleIterator();
-  particleIterator->reset();
-  while( (*particleIterator)() ){
-    G4ParticleDefinition* particle = particleIterator->value();
-    G4ProcessManager* pmanager = particle->GetProcessManager();
-    if (theDecayProcess->IsApplicable(*particle)) {
-      pmanager ->AddProcess(theDecayProcess);
-      // set ordering for PostStepDoIt and AtRestDoIt
-      pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
-      pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "G4ComptonScattering.hh"
-#include "G4GammaConversion.hh"
-#include "G4PhotoElectricEffect.hh"
-
-#include "G4eMultipleScattering.hh"
-#include "G4MuMultipleScattering.hh"
-#include "G4hMultipleScattering.hh"
-
-#include "G4eIonisation.hh"
-#include "G4eBremsstrahlung.hh"
-#include "G4eplusAnnihilation.hh"
-
-#include "G4MuIonisation.hh"
-#include "G4MuBremsstrahlung.hh"
-#include "G4MuPairProduction.hh"
-
-#include "G4hIonisation.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::ConstructEM()
-{
-  auto particleIterator=GetParticleIterator();
-  particleIterator->reset();
-  while( (*particleIterator)() ){
-    G4ParticleDefinition* particle = particleIterator->value();
-    G4ProcessManager* pmanager = particle->GetProcessManager();
-    G4String particleName = particle->GetParticleName();
-
-    if (particleName == "gamma") {
-    // gamma
-      // Construct processes for gamma
-      pmanager->AddDiscreteProcess(new G4GammaConversion());
-      pmanager->AddDiscreteProcess(new G4ComptonScattering());
-      pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
-
-    } else if (particleName == "e-") {
-    //electron
-      // Construct processes for electron
-      pmanager->AddProcess(new G4eMultipleScattering(),-1, 1, 1);
-      pmanager->AddProcess(new G4eIonisation(),       -1, 2, 2);
-      pmanager->AddProcess(new G4eBremsstrahlung(),   -1, 3, 3);
-
-    } else if (particleName == "e+") {
-    //positron
-      // Construct processes for positron
-      pmanager->AddProcess(new G4eMultipleScattering(),-1, 1, 1);
-      pmanager->AddProcess(new G4eIonisation(),       -1, 2, 2);
-      pmanager->AddProcess(new G4eBremsstrahlung(),   -1, 3, 3);
-      pmanager->AddProcess(new G4eplusAnnihilation(),  0,-1, 4);
-
-    } else if( particleName == "mu+" ||
-               particleName == "mu-"    ) {
-    //muon
-     // Construct processes for muon
-     pmanager->AddProcess(new G4MuMultipleScattering(),-1, 1, 1);
-     pmanager->AddProcess(new G4MuIonisation(),      -1, 2, 2);
-     pmanager->AddProcess(new G4MuBremsstrahlung(),  -1, 3, 3);
-     pmanager->AddProcess(new G4MuPairProduction(),  -1, 4, 4);
-
-    } else {
-      if ((particle->GetPDGCharge() != 0.0) &&
-          (particle->GetParticleName() != "chargedgeantino") &&
-          !particle->IsShortLived()) {
-       // all others charged particles except geantino
-       pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);
-       pmanager->AddProcess(new G4hIonisation(),       -1,2,2);
-     }
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-#include "G4Threading.hh"
-
-void OpNovicePhysicsList::ConstructOp()
-{
-  fCerenkovProcess = new G4Cerenkov("Cerenkov");
-  fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotonStep);
-  fCerenkovProcess->SetMaxBetaChangePerStep(10.0);
-  fCerenkovProcess->SetTrackSecondariesFirst(true);
-  fScintillationProcess = new G4Scintillation("Scintillation");
-  fScintillationProcess->SetScintillationYieldFactor(1.);
-  fScintillationProcess->SetTrackSecondariesFirst(true);
-  fAbsorptionProcess = new G4OpAbsorption();
-  fRayleighScatteringProcess = new G4OpRayleigh();
-  fMieHGScatteringProcess = new G4OpMieHG();
-  fBoundaryProcess = new G4OpBoundaryProcess();
-
-  fCerenkovProcess->SetVerboseLevel(fVerboseLevel);
-  fScintillationProcess->SetVerboseLevel(fVerboseLevel);
-  fAbsorptionProcess->SetVerboseLevel(fVerboseLevel);
-  fRayleighScatteringProcess->SetVerboseLevel(fVerboseLevel);
-  fMieHGScatteringProcess->SetVerboseLevel(fVerboseLevel);
-  fBoundaryProcess->SetVerboseLevel(fVerboseLevel);
-
-  // Use Birks Correction in the Scintillation process
-  if(G4Threading::IsMasterThread())
-  {
-    G4EmSaturation* emSaturation =
-              G4LossTableManager::Instance()->EmSaturation();
-      fScintillationProcess->AddSaturation(emSaturation);
-  }
-
-  auto particleIterator=GetParticleIterator();
-  particleIterator->reset();
-  while( (*particleIterator)() ){
-    G4ParticleDefinition* particle = particleIterator->value();
-    G4ProcessManager* pmanager = particle->GetProcessManager();
-    G4String particleName = particle->GetParticleName();
-    if (fCerenkovProcess->IsApplicable(*particle)) {
-      pmanager->AddProcess(fCerenkovProcess);
-      pmanager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
-    }
-    if (fScintillationProcess->IsApplicable(*particle)) {
-      pmanager->AddProcess(fScintillationProcess);
-      pmanager->SetProcessOrderingToLast(fScintillationProcess, idxAtRest);
-      pmanager->SetProcessOrderingToLast(fScintillationProcess, idxPostStep);
-    }
-    if (particleName == "opticalphoton") {
-      G4cout << " AddDiscreteProcess to OpticalPhoton " << G4endl;
-      pmanager->AddDiscreteProcess(fAbsorptionProcess);
-      pmanager->AddDiscreteProcess(fRayleighScatteringProcess);
-      pmanager->AddDiscreteProcess(fMieHGScatteringProcess);
-      pmanager->AddDiscreteProcess(fBoundaryProcess);
-    }
-  }
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::SetVerbose(G4int verbose)
-{
-  fVerboseLevel = verbose;
-
-  fCerenkovProcess->SetVerboseLevel(fVerboseLevel);
-  fScintillationProcess->SetVerboseLevel(fVerboseLevel);
-  fAbsorptionProcess->SetVerboseLevel(fVerboseLevel);
-  fRayleighScatteringProcess->SetVerboseLevel(fVerboseLevel);
-  fMieHGScatteringProcess->SetVerboseLevel(fVerboseLevel);
-  fBoundaryProcess->SetVerboseLevel(fVerboseLevel);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::SetNbOfPhotonsCerenkov(G4int MaxNumber)
-{
-  fMaxNumPhotonStep = MaxNumber;
-
-  fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotonStep);
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsList::SetCuts()
-{
-  //  " G4VUserPhysicsList::SetCutsWithDefault" method sets
-  //   the default cut value for all particle types
-  //
-  SetCutsWithDefault();
-
-  if (verboseLevel>0) DumpCutValuesTable();
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/src/OpNovicePhysicsListMessenger.cc b/src/OpNovicePhysicsListMessenger.cc
deleted file mode 100644
index 1f74f8e361311a3cd464157d51d04ea46ec06352..0000000000000000000000000000000000000000
--- a/src/OpNovicePhysicsListMessenger.cc
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// ********************************************************************
-// * 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/src/OpNovicePhysicsListMessenger.cc
-/// \brief Implementation of the OpNovicePhysicsListMessenger class
-//
-//
-//
-//
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "OpNovicePhysicsListMessenger.hh"
-
-#include "OpNovicePhysicsList.hh"
-#include "G4UIdirectory.hh"
-#include "G4UIcmdWithAnInteger.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNovicePhysicsListMessenger::
-  OpNovicePhysicsListMessenger(OpNovicePhysicsList* pPhys)
-  : G4UImessenger(),
-    fPhysicsList(pPhys)
-{/*
-  fOpNoviceDir = new G4UIdirectory("/OpNovice/");
-  fOpNoviceDir->SetGuidance("UI commands of this example");
-
-  fPhysDir = new G4UIdirectory("/OpNovice/phys/");
-  fPhysDir->SetGuidance("PhysicsList control");
-
-  fVerboseCmd = new G4UIcmdWithAnInteger("/OpNovice/phys/verbose",this);
-  fVerboseCmd->SetGuidance("set verbose for physics processes");
-  fVerboseCmd->SetParameterName("verbose",true);
-  fVerboseCmd->SetDefaultValue(1);
-  fVerboseCmd->SetRange("verbose>=0");
-  fVerboseCmd->AvailableForStates(G4State_PreInit, G4State_Idle);
-
-  fCerenkovCmd =
-           new G4UIcmdWithAnInteger("/OpNovice/phys/cerenkovMaxPhotons",this);
-  fCerenkovCmd->SetGuidance("set max nb of photons per step");
-  fCerenkovCmd->SetParameterName("MaxNumber",false);
-  fCerenkovCmd->SetRange("MaxNumber>=0");
-  fCerenkovCmd->AvailableForStates(G4State_PreInit, G4State_Idle);*/
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNovicePhysicsListMessenger::~OpNovicePhysicsListMessenger()
-{
-  delete fVerboseCmd;
-  delete fCerenkovCmd;
-  delete fPhysDir;
-  delete fOpNoviceDir;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNovicePhysicsListMessenger::SetNewValue(G4UIcommand* command,
-                                               G4String newValue)
-{/*
-  if( command == fVerboseCmd )
-   {fPhysicsList->SetVerbose(fVerboseCmd->GetNewIntValue(newValue));}
-
-  if( command == fCerenkovCmd )
-   {fPhysicsList->
-              SetNbOfPhotonsCerenkov(fCerenkovCmd->GetNewIntValue(newValue));}*/
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/src/OpNoviceSteppingVerbose.cc b/src/OpNoviceSteppingVerbose.cc
deleted file mode 100644
index 22a989bfb59e12e2523b7bb436e9782495a70023..0000000000000000000000000000000000000000
--- a/src/OpNoviceSteppingVerbose.cc
+++ /dev/null
@@ -1,185 +0,0 @@
-//
-// ********************************************************************
-// * 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/src/OpNoviceSteppingVerbose.cc
-/// \brief Implementation of the OpNoviceSteppingVerbose class
-//
-//
-//
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-#include "OpNoviceSteppingVerbose.hh"
-
-#include "G4SteppingManager.hh"
-#include "G4UnitsTable.hh"
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNoviceSteppingVerbose::OpNoviceSteppingVerbose()
- : G4SteppingVerbose()
-{}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNoviceSteppingVerbose::~OpNoviceSteppingVerbose()
-{}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNoviceSteppingVerbose::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 OpNoviceSteppingVerbose::TrackingStarted()
-{
-
-  CopyState();/*
-  G4int prec = G4cout.precision(3);
-  //if( verboseLevel > 0 ){
-  if( 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/src/OpticalPhysics.cc b/src/OpticalPhysics.cc
deleted file mode 100644
index f636e95174358540f723064a9b09f76f7b595388..0000000000000000000000000000000000000000
--- a/src/OpticalPhysics.cc
+++ /dev/null
@@ -1,129 +0,0 @@
-#include "G4LossTableManager.hh"
-#include "G4EmSaturation.hh"
-
-#include "OpticalPhysics.hh"
-#include "G4Version.hh"
-#include "G4LossTableManager.hh"
-
-#if G4VERSION_NUMBER > 999
-static G4ParticleTable::G4PTblDicIterator* aParticleIterator;
-#endif
-
-
-OpticalPhysics::OpticalPhysics(G4bool toggle)
-    : G4VPhysicsConstructor("Optical")
-{
-  fWLSProcess                = 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;
-
-    /*
-  fWLSProcess = new G4OpWLS();
-
-  fScintProcess = new G4Scintillation();
-  fScintProcess->SetScintillationYieldFactor(1.);
-  fScintProcess->SetTrackSecondariesFirst(true);
-    */
-  fCerenkovProcess = new G4Cerenkov();
-  fCerenkovProcess->SetMaxNumPhotonsPerStep(300);
-  fCerenkovProcess->SetTrackSecondariesFirst(true);
-
-  // Note: this G4OpAbsorption could be turned back on if attenuation length in quartz wants to be studied
-   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);
-
-  //  fWLSProcess->UseTimeProfile("delta");
-  //fWLSProcess->UseTimeProfile("exponential");
-
-  //  pManager->AddDiscreteProcess(fWLSProcess);
-
-  //  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);
-
-  //aParticleIterator->reset();
-#if G4VERSION_NUMBER > 999
-      aParticleIterator->reset();
-      while ((*aParticleIterator)()) {
-        G4ParticleDefinition* particle = aParticleIterator->value();
-# else
-  theParticleIterator->reset();
-       while ((*theParticleIterator)()) {
-         G4ParticleDefinition* particle = theParticleIterator->value();
-#endif
-
-    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/src/AirHit.cc b/src/PMTHit.cc
similarity index 87%
rename from src/AirHit.cc
rename to src/PMTHit.cc
index 6b436307c0c4144d6eaa9fc3175a448283dfb1d7..bc8958367e0de519c1f6e77f97fda489fe8f8038 100644
--- a/src/AirHit.cc
+++ b/src/PMTHit.cc
@@ -24,29 +24,29 @@
 //
 // @Author Chad Lantz
 
-#include "AirHit.hh"
+#include "PMTHit.hh"
 #include "G4UnitsTable.hh"
 #include "G4VVisManager.hh"
 #include "G4Circle.hh"
 #include "G4Colour.hh"
 #include "G4VisAttributes.hh"
 
-G4Allocator<AirHit> HitAllocator;
+G4Allocator<PMTHit> HitAllocator;
 
 /*
  *
  */
-AirHit::AirHit() {}
+PMTHit::PMTHit() {}
 
 /*
  *
  */
-AirHit::~AirHit() {}
+PMTHit::~PMTHit() {}
 
 /*
  *
  */
-AirHit::AirHit(const AirHit& right)
+PMTHit::PMTHit(const PMTHit& right)
   : G4VHit()
 {
   trackID   = right.trackID;
@@ -59,7 +59,7 @@ AirHit::AirHit(const AirHit& right)
 /*
  *
  */
-const AirHit& AirHit::operator=(const AirHit& right)
+const PMTHit& PMTHit::operator=(const PMTHit& right)
 {
   trackID   = right.trackID;
   pos       = right.pos;
@@ -72,7 +72,7 @@ const AirHit& AirHit::operator=(const AirHit& right)
 /*
  *
  */
-G4int AirHit::operator==(const AirHit& right) const
+G4int PMTHit::operator==(const PMTHit& right) const
 {
   return (this==&right) ? 1 : 0;
 }
@@ -80,7 +80,7 @@ G4int AirHit::operator==(const AirHit& right) const
 /*
  *
  */
-void AirHit::Draw()
+void PMTHit::Draw()
 {
   G4VVisManager* pVVisManager = G4VVisManager::GetConcreteInstance();
   if(pVVisManager)
@@ -98,7 +98,7 @@ void AirHit::Draw()
 /*
  *
  */
-void AirHit::Print()
+void PMTHit::Print()
 {
   G4cout << "  trackID: " << trackID << "  Hit from position: " << G4BestUnit(pos,"Length") << G4endl;
 }
diff --git a/src/AirSD.cc b/src/PMTSD.cc
similarity index 88%
rename from src/AirSD.cc
rename to src/PMTSD.cc
index 14e02579aa2000264a993e1f0aa0b55e2574c8e2..4f65802158c1c17e7b647e45a9750746643e4159 100644
--- a/src/AirSD.cc
+++ b/src/PMTSD.cc
@@ -24,8 +24,8 @@
 //
 // @Author Chad Lantz
 
-#include "AirSD.hh"
-#include "AirHit.hh"
+#include "PMTSD.hh"
+#include "PMTHit.hh"
 
 #include "G4HCofThisEvent.hh"
 #include "G4Step.hh"
@@ -46,7 +46,7 @@
 /*
  *
  */
-AirSD::AirSD(G4String sdName)
+PMTSD::PMTSD(G4String sdName)
   :G4VSensitiveDetector(sdName){
   collectionName.insert(sdName);
   HCID = -1;
@@ -57,7 +57,7 @@ AirSD::AirSD(G4String sdName)
 /*
  *
  */
-AirSD::~AirSD(){
+PMTSD::~PMTSD(){
 
 }
 
@@ -65,7 +65,7 @@ AirSD::~AirSD(){
 /* Mandatory method
  *
  */
-void AirSD::Initialize(G4HCofThisEvent* HCE){
+void PMTSD::Initialize(G4HCofThisEvent* HCE){
 
   hitCollection = new HitsCollection(GetName(), collectionName[0]);
 
@@ -81,10 +81,10 @@ void AirSD::Initialize(G4HCofThisEvent* HCE){
 /* Mandatory method
  *
  */
-G4bool AirSD::ProcessHits(G4Step* aStep,G4TouchableHistory*){
+G4bool PMTSD::ProcessHits(G4Step* aStep,G4TouchableHistory*){
 
   G4Track* theTrack = aStep->GetTrack();
-  AirHit* newHit = new AirHit();
+  PMTHit* newHit = new PMTHit();
 
   newHit->setTrackID  (aStep->GetTrack()->GetTrackID() );
   newHit->setPos      (aStep->GetTrack()->GetVertexPosition() );
@@ -100,7 +100,7 @@ G4bool AirSD::ProcessHits(G4Step* aStep,G4TouchableHistory*){
 /* Mandatory method
  *
  */
-void AirSD::EndOfEvent(G4HCofThisEvent*){
+void PMTSD::EndOfEvent(G4HCofThisEvent*){
 
 
 }
diff --git a/src/PhysicsList.cc b/src/PhysicsList.cc
index 44b1e79f29ef6bfd390686c1143df5f91349bec7..4aceecb747c3029e7cf47993ef000074764e7ec8 100644
--- a/src/PhysicsList.cc
+++ b/src/PhysicsList.cc
@@ -1,288 +1,289 @@
+//
+// ********************************************************************
+// * 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/PhysicsList.cc
+/// \brief Implementation of the PhysicsList class
+
+#include "globals.hh"
 #include "PhysicsList.hh"
-#include "OpticalPhysics.hh"
 
-#include "G4LossTableManager.hh"
-
-#include "G4ProcessManager.hh"
+#include "G4ParticleDefinition.hh"
 #include "G4ParticleTypes.hh"
 #include "G4ParticleTable.hh"
 
-#include "FTFP_BERT.hh"
-#include "QGSP_BERT.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 "G4IonPhysics.hh"
-#include "G4IonBinaryCascadePhysics.hh"
-#include "G4StoppingPhysics.hh"
-#include "G4NeutronCrossSectionXS.hh"
-#include "G4HadronElasticPhysics.hh"
-#include "G4HadronElasticPhysicsXS.hh"
-#include "G4HadronElasticPhysicsHP.hh"
-#include "G4HadronHElasticPhysics.hh"
-#include "G4RadioactiveDecayPhysics.hh"
-
-#include "G4SystemOfUnits.hh"
-#include "G4Version.hh"
-#include "G4LossTableManager.hh"
+#include "G4BosonConstructor.hh"
+#include "G4LeptonConstructor.hh"
+#include "G4MesonConstructor.hh"
+#include "G4BaryonConstructor.hh"
+#include "G4IonConstructor.hh"
+#include "G4ShortLivedConstructor.hh"
 
-/*
- *
- */
-PhysicsList::PhysicsList() : G4VModularPhysicsList()
-{
-    G4LossTableManager::Instance();
-
-    defaultCutValue  = 1.*mm;
-    fCutForGamma     = defaultCutValue;
-    fCutForElectron  = defaultCutValue;
-    fCutForPositron  = defaultCutValue;
-
-//    G4PhysListFactory factory;
-    G4VModularPhysicsList* phys = new FTFP_BERT;
-
-    for (G4int i = 0; ; ++i) {
-       G4VPhysicsConstructor* elem =
-                  const_cast<G4VPhysicsConstructor*> (phys->GetPhysics(i));
-       if (elem == NULL) break;
-       G4cout << "RegisterPhysics: " << elem->GetPhysicsName() << G4endl;
-       RegisterPhysics(elem);
-    }
-    SetAbsorption(false);
+#include "G4ProcessManager.hh"
 
-    fPhysicsVector =
-                GetSubInstanceManager().offset[GetInstanceID()].physicsVector;
+#include "G4Cerenkov.hh"
+#include "G4Scintillation.hh"
+#include "G4OpAbsorption.hh"
+#include "G4OpRayleigh.hh"
+#include "G4OpMieHG.hh"
+#include "G4OpBoundaryProcess.hh"
 
-}
+#include "G4LossTableManager.hh"
+#include "G4EmSaturation.hh"
+
+G4ThreadLocal G4int PhysicsList::fVerboseLevel = 0;
+G4ThreadLocal G4int PhysicsList::fMaxNumPhotonStep = 20;
+G4ThreadLocal G4Cerenkov* PhysicsList::fCerenkovProcess = 0;
+G4ThreadLocal G4Scintillation* PhysicsList::fScintillationProcess = 0;
+G4ThreadLocal G4OpAbsorption* PhysicsList::fAbsorptionProcess = 0;
+G4ThreadLocal G4OpRayleigh* PhysicsList::fRayleighScatteringProcess = 0;
+G4ThreadLocal G4OpMieHG* PhysicsList::fMieHGScatteringProcess = 0;
+G4ThreadLocal G4OpBoundaryProcess* PhysicsList::fBoundaryProcess = 0;
 
 /*
- *
- */
-PhysicsList::~PhysicsList(){
+*/
+PhysicsList::PhysicsList()
+ : G4VUserPhysicsList(){
 
 }
 
 /*
- *
- */
-void PhysicsList::ClearPhysics(){
-    for (G4PhysConstVector::iterator p  = fPhysicsVector->begin();
-                                     p != fPhysicsVector->end(); ++p) {
-        delete (*p);
-    }
-    fPhysicsVector->clear();
+*/
+PhysicsList::~PhysicsList(){
+
 }
 
 /*
- *
- */
+*/
 void PhysicsList::ConstructParticle(){
+  // In this method, static member functions should be called
+  // for all particles which you want to use.
+  // This ensures that objects of these particle types will be
+  // created in the program.
 
-    G4VModularPhysicsList::ConstructParticle();
+  G4BosonConstructor bConstructor;
+  bConstructor.ConstructParticle();
 
-    G4DecayTable* MuonPlusDecayTable = new G4DecayTable();
-    MuonPlusDecayTable -> Insert(new
-                           G4MuonDecayChannelWithSpin("mu+",0.986));
-    MuonPlusDecayTable -> Insert(new
-                           G4MuonRadiativeDecayChannelWithSpin("mu+",0.014));
-    G4MuonPlus::MuonPlusDefinition() -> SetDecayTable(MuonPlusDecayTable);
+  G4LeptonConstructor lConstructor;
+  lConstructor.ConstructParticle();
 
-    G4DecayTable* MuonMinusDecayTable = new G4DecayTable();
-    MuonMinusDecayTable -> Insert(new
-                            G4MuonDecayChannelWithSpin("mu-",0.986));
-    MuonMinusDecayTable -> Insert(new
-                            G4MuonRadiativeDecayChannelWithSpin("mu-",0.014));
-    G4MuonMinus::MuonMinusDefinition() -> SetDecayTable(MuonMinusDecayTable);
+  G4MesonConstructor mConstructor;
+  mConstructor.ConstructParticle();
 
+  G4BaryonConstructor rConstructor;
+  rConstructor.ConstructParticle();
+
+  G4IonConstructor iConstructor;
+  iConstructor.ConstructParticle();
 }
 
 /*
- *
- */
+*/
 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();
-
+  AddTransportation();
+  ConstructDecay();
+  ConstructEM();
+  ConstructOp();
 }
 
-
 /*
- *
- */
-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);
+*/
+#include "G4Decay.hh"
+void PhysicsList::ConstructDecay(){
+  // Add Decay Process
+  G4Decay* theDecayProcess = new G4Decay();
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while( (*particleIterator)() ){
+    G4ParticleDefinition* particle = particleIterator->value();
+    G4ProcessManager* pmanager = particle->GetProcessManager();
+    if (theDecayProcess->IsApplicable(*particle)) {
+      pmanager ->AddProcess(theDecayProcess);
+      // set ordering for PostStepDoIt and AtRestDoIt
+      pmanager ->SetProcessOrdering(theDecayProcess, idxPostStep);
+      pmanager ->SetProcessOrdering(theDecayProcess, idxAtRest);
     }
+  }
 }
 
 /*
- *
- */
-void PhysicsList::SetAbsorption(G4bool toggle){
-   fAbsorptionOn = toggle;
-	 fPhysicsVector->push_back(fOpticalPhysics = new OpticalPhysics(toggle));
-	 fOpticalPhysics->ConstructProcess();
+*/
+#include "G4ComptonScattering.hh"
+#include "G4GammaConversion.hh"
+#include "G4PhotoElectricEffect.hh"
 
-}
+#include "G4eMultipleScattering.hh"
+#include "G4MuMultipleScattering.hh"
+#include "G4hMultipleScattering.hh"
 
-/*
- *
- */
-void PhysicsList::SetCuts(){
-    if (verboseLevel >0) {
-        G4cout << "PhysicsList::SetCuts:";
-        G4cout << "CutLength : " << G4BestUnit(defaultCutValue,"Length")
-               << G4endl;
-    }
+#include "G4eIonisation.hh"
+#include "G4eBremsstrahlung.hh"
+#include "G4eplusAnnihilation.hh"
 
-    // 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(0.05*eV, "gamma");
-    SetCutValue(fCutForElectron, "e-");
-    SetCutValue(fCutForPositron, "e+");
+#include "G4MuIonisation.hh"
+#include "G4MuBremsstrahlung.hh"
+#include "G4MuPairProduction.hh"
 
-    if (verboseLevel>0) DumpCutValuesTable();
-}
+#include "G4hIonisation.hh"
 
 /*
- *
- */
-void PhysicsList::SetCutForGamma(G4double cut){
-    fCutForGamma = cut;
-    SetParticleCuts(fCutForGamma, G4Gamma::Gamma());
+*/
+void PhysicsList::ConstructEM(){
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while( (*particleIterator)() ){
+    G4ParticleDefinition* particle = particleIterator->value();
+    G4ProcessManager* pmanager = particle->GetProcessManager();
+    G4String particleName = particle->GetParticleName();
+
+    if (particleName == "gamma") {
+    // gamma
+      // Construct processes for gamma
+      pmanager->AddDiscreteProcess(new G4GammaConversion());
+      pmanager->AddDiscreteProcess(new G4ComptonScattering());
+      pmanager->AddDiscreteProcess(new G4PhotoElectricEffect());
+
+    } else if (particleName == "e-") {
+    //electron
+      // Construct processes for electron
+      pmanager->AddProcess(new G4eMultipleScattering(),-1, 1, 1);
+      pmanager->AddProcess(new G4eIonisation(),       -1, 2, 2);
+      pmanager->AddProcess(new G4eBremsstrahlung(),   -1, 3, 3);
+
+    } else if (particleName == "e+") {
+    //positron
+      // Construct processes for positron
+      pmanager->AddProcess(new G4eMultipleScattering(),-1, 1, 1);
+      pmanager->AddProcess(new G4eIonisation(),       -1, 2, 2);
+      pmanager->AddProcess(new G4eBremsstrahlung(),   -1, 3, 3);
+      pmanager->AddProcess(new G4eplusAnnihilation(),  0,-1, 4);
+
+    } else if( particleName == "mu+" ||
+               particleName == "mu-"    ) {
+    //muon
+     // Construct processes for muon
+     pmanager->AddProcess(new G4MuMultipleScattering(),-1, 1, 1);
+     pmanager->AddProcess(new G4MuIonisation(),      -1, 2, 2);
+     pmanager->AddProcess(new G4MuBremsstrahlung(),  -1, 3, 3);
+     pmanager->AddProcess(new G4MuPairProduction(),  -1, 4, 4);
+
+    } else {
+      if ((particle->GetPDGCharge() != 0.0) &&
+          (particle->GetParticleName() != "chargedgeantino") &&
+          !particle->IsShortLived()) {
+       // all others charged particles except geantino
+       pmanager->AddProcess(new G4hMultipleScattering(),-1,1,1);
+       pmanager->AddProcess(new G4hIonisation(),       -1,2,2);
+     }
+    }
+  }
 }
 
 /*
- *
- */
-void PhysicsList::SetCutForElectron(G4double cut){
-    fCutForElectron = cut;
-    SetParticleCuts(fCutForElectron, G4Electron::Electron());
+*/
+#include "G4Threading.hh"
+void PhysicsList::ConstructOp(){
+  fCerenkovProcess = new G4Cerenkov("Cerenkov");
+  fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotonStep);
+  fCerenkovProcess->SetMaxBetaChangePerStep(10.0);
+  fCerenkovProcess->SetTrackSecondariesFirst(true);
+  fScintillationProcess = new G4Scintillation("Scintillation");
+  fScintillationProcess->SetScintillationYieldFactor(1.);
+  fScintillationProcess->SetTrackSecondariesFirst(true);
+  fAbsorptionProcess = new G4OpAbsorption();
+  fRayleighScatteringProcess = new G4OpRayleigh();
+  fMieHGScatteringProcess = new G4OpMieHG();
+  fBoundaryProcess = new G4OpBoundaryProcess();
+
+  fCerenkovProcess->SetVerboseLevel(fVerboseLevel);
+  fScintillationProcess->SetVerboseLevel(fVerboseLevel);
+  fAbsorptionProcess->SetVerboseLevel(fVerboseLevel);
+  fRayleighScatteringProcess->SetVerboseLevel(fVerboseLevel);
+  fMieHGScatteringProcess->SetVerboseLevel(fVerboseLevel);
+  fBoundaryProcess->SetVerboseLevel(fVerboseLevel);
+
+  // Use Birks Correction in the Scintillation process
+  if(G4Threading::IsMasterThread())
+  {
+    G4EmSaturation* emSaturation =
+              G4LossTableManager::Instance()->EmSaturation();
+      fScintillationProcess->AddSaturation(emSaturation);
+  }
+
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while( (*particleIterator)() ){
+    G4ParticleDefinition* particle = particleIterator->value();
+    G4ProcessManager* pmanager = particle->GetProcessManager();
+    G4String particleName = particle->GetParticleName();
+    if (fCerenkovProcess->IsApplicable(*particle)) {
+      pmanager->AddProcess(fCerenkovProcess);
+      pmanager->SetProcessOrdering(fCerenkovProcess,idxPostStep);
+    }
+    if (fScintillationProcess->IsApplicable(*particle)) {
+      pmanager->AddProcess(fScintillationProcess);
+      pmanager->SetProcessOrderingToLast(fScintillationProcess, idxAtRest);
+      pmanager->SetProcessOrderingToLast(fScintillationProcess, idxPostStep);
+    }
+    if (particleName == "opticalphoton") {
+      G4cout << " AddDiscreteProcess to OpticalPhoton " << G4endl;
+      pmanager->AddDiscreteProcess(fAbsorptionProcess);
+      pmanager->AddDiscreteProcess(fRayleighScatteringProcess);
+      pmanager->AddDiscreteProcess(fMieHGScatteringProcess);
+      pmanager->AddDiscreteProcess(fBoundaryProcess);
+    }
+  }
 }
 
 /*
- *
- */
-void PhysicsList::SetCutForPositron(G4double cut){
-    fCutForPositron = cut;
-    SetParticleCuts(fCutForPositron, G4Positron::Positron());
+*/
+void PhysicsList::SetVerbose(G4int verbose){
+  fVerboseLevel = verbose;
+
+  fCerenkovProcess->SetVerboseLevel(fVerboseLevel);
+  fScintillationProcess->SetVerboseLevel(fVerboseLevel);
+  fAbsorptionProcess->SetVerboseLevel(fVerboseLevel);
+  fRayleighScatteringProcess->SetVerboseLevel(fVerboseLevel);
+  fMieHGScatteringProcess->SetVerboseLevel(fVerboseLevel);
+  fBoundaryProcess->SetVerboseLevel(fVerboseLevel);
 }
 
-
 /*
- *
- */
-void PhysicsList::AddStepMax(){
-  // Step limitation seen as a process
-
-    auto theParticleIterator = GetParticleIterator();
-
-    theParticleIterator->reset();
-
-    while ((*theParticleIterator)()) {
-      G4ParticleDefinition* particle = theParticleIterator->value();
-      G4ProcessManager* pmanager = particle->GetProcessManager();
-   }
- }
-
- /*
-  *
-  */
-void PhysicsList::SetNbOfPhotonsCerenkov(G4int maxNumber){
-
-  fOpticalPhysics->SetNbOfPhotonsCerenkov(maxNumber);
+*/
+void PhysicsList::SetNbOfPhotonsCerenkov(G4int MaxNumber){
+  fMaxNumPhotonStep = MaxNumber;
 
+  fCerenkovProcess->SetMaxNumPhotonsPerStep(fMaxNumPhotonStep);
 }
 
 /*
- *
- */
-void PhysicsList::SetVerbose(G4int verbose){
-  fOpticalPhysics->GetCerenkovProcess()->SetVerboseLevel(verbose);
-  fOpticalPhysics->GetAbsorptionProcess()->SetVerboseLevel(verbose);
-  fOpticalPhysics->GetBoundaryProcess()->SetVerboseLevel(verbose);
+*/
+void PhysicsList::SetCuts(){
+  //  " G4VUserPhysicsList::SetCutsWithDefault" method sets
+  //   the default cut value for all particle types
+  //
+  SetCutsWithDefault();
 
+  if (verboseLevel>0) DumpCutValuesTable();
 }
diff --git a/src/OpNovicePrimaryGeneratorAction.cc b/src/PrimaryGeneratorAction.cc
similarity index 84%
rename from src/OpNovicePrimaryGeneratorAction.cc
rename to src/PrimaryGeneratorAction.cc
index a7d9d96f57f714f8135a9834f0fe369a4bd9e29d..af2cbe85de70203b6d3bace219729c289b2f4e9a 100644
--- a/src/OpNovicePrimaryGeneratorAction.cc
+++ b/src/PrimaryGeneratorAction.cc
@@ -22,9 +22,9 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/src/OpNovicePrimaryGeneratorAction.cc
-/// \brief Implementation of the OpNovicePrimaryGeneratorAction class
-#include "OpNovicePrimaryGeneratorAction.hh"
+/// \file /src/PrimaryGeneratorAction.cc
+/// \brief Implementation of the PrimaryGeneratorAction class
+#include "PrimaryGeneratorAction.hh"
 
 #include "Randomize.hh"
 
@@ -37,7 +37,7 @@
 /*
  *
  */
-OpNovicePrimaryGeneratorAction::OpNovicePrimaryGeneratorAction()
+PrimaryGeneratorAction::PrimaryGeneratorAction()
  : G4VUserPrimaryGeneratorAction(),
    fParticleGun(0)
 {
@@ -47,7 +47,7 @@ OpNovicePrimaryGeneratorAction::OpNovicePrimaryGeneratorAction()
 /*
  *
  */
-OpNovicePrimaryGeneratorAction::~OpNovicePrimaryGeneratorAction()
+PrimaryGeneratorAction::~PrimaryGeneratorAction()
 {
   delete fParticleGun;
 }
@@ -55,7 +55,7 @@ OpNovicePrimaryGeneratorAction::~OpNovicePrimaryGeneratorAction()
 /*
  *
  */
-void OpNovicePrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
+void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
 {
   fParticleGun->GeneratePrimaryVertex(anEvent);
 }
diff --git a/src/OpNoviceRunAction.cc b/src/RunAction.cc
similarity index 84%
rename from src/OpNoviceRunAction.cc
rename to src/RunAction.cc
index affcd810586f29238af66d912f724b461d20d8e9..d5ed5fe73590d028c087e0cbc72d278a6e229fe5 100644
--- a/src/OpNoviceRunAction.cc
+++ b/src/RunAction.cc
@@ -1,4 +1,3 @@
-//
 // ********************************************************************
 // * License and Disclaimer                                           *
 // *                                                                  *
@@ -23,8 +22,8 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-/// \file OpNovice/src/OpNoviceRunAction.cc
-/// \brief Implementation of the OpNoviceRunAction class
+/// \file /src/RunAction.cc
+/// \brief Implementation of the RunAction class
 //
 // @Author Chad Lantz
 
@@ -35,7 +34,7 @@
 #include "G4RunManager.hh"
 #include "G4Run.hh"
 
-#include "OpNoviceRunAction.hh"
+#include "RunAction.hh"
 #include "G4VAnalysisManager.hh"
 #include "lgAnalysis.hh"
 
@@ -43,7 +42,7 @@
 /*
  *
  */
-OpNoviceRunAction::OpNoviceRunAction(G4String fileName)
+RunAction::RunAction(G4String fileName)
  : G4UserRunAction(),ffileName(fileName),
    fTimer(0){
   fTimer = new G4Timer;
@@ -62,24 +61,18 @@ OpNoviceRunAction::OpNoviceRunAction(G4String fileName)
 
   // Creating ntuple
   analysisManager->CreateNtuple("lightGuide", "pos and momentum");
-  analysisManager->CreateNtupleDColumn("trackID");
   analysisManager->CreateNtupleDColumn("X");
   analysisManager->CreateNtupleDColumn("Y");
-  analysisManager->CreateNtupleDColumn("Z");
   analysisManager->CreateNtupleDColumn("hitX");
   analysisManager->CreateNtupleDColumn("hitY");
-  analysisManager->CreateNtupleDColumn("hitZ");
   analysisManager->CreateNtupleDColumn("energy");
-  analysisManager->CreateNtupleDColumn("pX");
-  analysisManager->CreateNtupleDColumn("pY");
-  analysisManager->CreateNtupleDColumn("pZ");
   analysisManager->FinishNtuple();
 }
 
 /*
  *
  */
-OpNoviceRunAction::~OpNoviceRunAction(){
+RunAction::~RunAction(){
   delete fTimer;
   delete G4AnalysisManager::Instance();
 }
@@ -87,7 +80,7 @@ OpNoviceRunAction::~OpNoviceRunAction(){
 /*
  *
  */
-void OpNoviceRunAction::BeginOfRunAction(const G4Run* aRun){
+void RunAction::BeginOfRunAction(const G4Run* aRun){
   G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
   fTimer->Start();
 
@@ -102,7 +95,7 @@ void OpNoviceRunAction::BeginOfRunAction(const G4Run* aRun){
 /*
  *
  */
-void OpNoviceRunAction::EndOfRunAction(const G4Run* aRun){
+void RunAction::EndOfRunAction(const G4Run* aRun){
   fTimer->Stop();
   G4cout << "number of event = " << aRun->GetNumberOfEvent()
          << " " << *fTimer << G4endl;
diff --git a/src/OpNoviceSteppingAction.cc b/src/SteppingAction.cc
similarity index 83%
rename from src/OpNoviceSteppingAction.cc
rename to src/SteppingAction.cc
index 88428a56e0c8deaf13e025865b7017238f4b13cd..25e089665df68951f9f2e2d9f66da2002c07dcb3 100644
--- a/src/OpNoviceSteppingAction.cc
+++ b/src/SteppingAction.cc
@@ -24,10 +24,10 @@
 // ********************************************************************
 //
 //
-/// \file OpNoviceSteppingAction.cc
-/// \brief Implementation of the OpNoviceSteppingAction class
+/// \file SteppingAction.cc
+/// \brief Implementation of the SteppingAction class
 
-#include "OpNoviceSteppingAction.hh"
+#include "SteppingAction.hh"
 
 #include "G4Step.hh"
 #include "G4Track.hh"
@@ -36,24 +36,24 @@
 #include "G4Event.hh"
 #include "G4RunManager.hh"
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNoviceSteppingAction::OpNoviceSteppingAction()
+/*
+*/
+SteppingAction::SteppingAction()
 : G4UserSteppingAction()
-{ 
+{
   fScintillationCounter = 0;
   fCerenkovCounter      = 0;
   fEventNumber = -1;
 }
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-OpNoviceSteppingAction::~OpNoviceSteppingAction()
+/*
+*/
+SteppingAction::~SteppingAction()
 { ; }
 
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-void OpNoviceSteppingAction::UserSteppingAction(const G4Step* step)
+/*
+*/
+void SteppingAction::UserSteppingAction(const G4Step* step)
 {
   G4int eventNumber = G4RunManager::GetRunManager()->
                                               GetCurrentEvent()->GetEventID();
@@ -88,5 +88,3 @@ void OpNoviceSteppingAction::UserSteppingAction(const G4Step* step)
      }
   }
 }
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......