diff --git a/include/ASCIIPrimaryGenerator.hh b/include/ASCIIPrimaryGenerator.hh
index 4bb8a9b28bc8914dc5d439dc7be70bd60bc27d73..82b9a200b158d9ae5b7ddb4b69e9fd960c277660 100644
--- a/include/ASCIIPrimaryGenerator.hh
+++ b/include/ASCIIPrimaryGenerator.hh
@@ -35,7 +35,6 @@
 #define ASCIIPrimaryGenerator_h 1
 
 #include "G4VPrimaryGenerator.hh"
-#include "lgAnalysis.hh"
 
 #include <fstream>
 #include <vector>
diff --git a/include/DetectorConstruction.hh b/include/DetectorConstruction.hh
index 2072b14122e41d5b5e806ad09517fddb03c65a7a..7fd2b2394abc3a32c0328d908bb1fbca82a680db 100644
--- a/include/DetectorConstruction.hh
+++ b/include/DetectorConstruction.hh
@@ -53,6 +53,7 @@ class DetectorConstruction : public G4VUserDetectorConstruction
 
   public:
     virtual G4VPhysicalVolume* Construct();
+    void ConstructSDandField();
 
     void BuildWorld           ();
     void BuildTrapezoidLG     ();
diff --git a/include/RunAction.hh b/include/RunAction.hh
index e48e114b70596b3c229c402b1337528123c4e362..d606d2cf82349f7a1ad3ec279d44040d1e126953 100644
--- a/include/RunAction.hh
+++ b/include/RunAction.hh
@@ -55,7 +55,7 @@ class RunAction : public G4UserRunAction
     virtual void EndOfRunAction(const G4Run* aRun);
 
     std::vector< std::vector<double>* > GetVectors(){ return fPtrVec; }
-    inline  void ClearVectors(){ for(auto vec : fPtrVec) vec->clear(); }
+    inline void ClearVectors(){ for(auto vec : fPtrVec) vec->clear(); }
 
   private:
     G4Timer* fTimer;
diff --git a/include/lgAnalysis.hh b/include/lgAnalysis.hh
deleted file mode 100644
index 7644179b797b6b350616241557ac124498dbed5f..0000000000000000000000000000000000000000
--- a/include/lgAnalysis.hh
+++ /dev/null
@@ -1,36 +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 lgAnalysis.hh
-/// \brief Selection of the analysis technology
-
-#ifndef lgAnalysis_h
-#define lgAnalysis_h 1
-
-#include "g4root.hh"
-//#include "g4cvs.hh"
-//#include "g4xml.hh"
-
-#endif
diff --git a/src/ASCIIPrimaryGenerator.cc b/src/ASCIIPrimaryGenerator.cc
index c1adf2a126f584b7c1d30ec776ba61b5be9bdc17..087604add18b71ff2d986c90a108f7d8fb567044 100644
--- a/src/ASCIIPrimaryGenerator.cc
+++ b/src/ASCIIPrimaryGenerator.cc
@@ -79,10 +79,6 @@ void ASCIIPrimaryGenerator::GeneratePrimaryVertex(G4Event* event)
 
   GetNextEvent();
 
-  // Pass the original event number through to the ouput
-  auto analysisManager = G4AnalysisManager::Instance();
-  analysisManager->FillNtupleIColumn(7, fEventNo );
-
   //For each photon read in, add a new particle and vertex to the event
   int nPhotons = fPositionVec->size();
   for(int i = 0; i < nPhotons; i++){
diff --git a/src/DetectorConstruction.cc b/src/DetectorConstruction.cc
index 8cb9a39b356934a0f967496eafffe337f602701d..586c785e17fd4a3888247f3c1ac1f62d88de399a 100644
--- a/src/DetectorConstruction.cc
+++ b/src/DetectorConstruction.cc
@@ -38,7 +38,6 @@
 #include <math.h>
 
 // GEANT4 //
-#include "G4Element.hh"
 #include "G4SDManager.hh"
 #include "G4RunManager.hh"
 #include "G4GeometryManager.hh"
@@ -164,7 +163,8 @@ void DetectorConstruction::BuildWorld(){
                       0,                  //copy number
                       checkOverlaps);     //overlaps checking
 
-  G4VisAttributes* boxVisAtt_world= new G4VisAttributes(G4VisAttributes::Invisible);
+  G4VisAttributes* boxVisAtt_world= new G4VisAttributes();
+  boxVisAtt_world ->SetVisibility(false);
 
 	m_logicWorld ->SetVisAttributes(boxVisAtt_world);
 
@@ -249,10 +249,6 @@ void DetectorConstruction::BuildTrapezoidLG( ){
  */
 void DetectorConstruction::BuildPMT(){
 
-  G4SDManager* SDman = G4SDManager::GetSDMpointer();
-  PMTSD* PMT = new PMTSD("MyPMT");
-  SDman->AddNewDetector( PMT );
-
   m_solidPMT =
     new G4Tubs("PMT",       //name
               0.0*mm,       //Inner radius
@@ -268,10 +264,17 @@ void DetectorConstruction::BuildPMT(){
 
   G4VisAttributes* VisAtt_PMT = new G4VisAttributes(G4Colour(1.0,1.0,0.6,0.7));
   m_logicPMT->SetVisAttributes(VisAtt_PMT);
-  m_logicPMT->SetSensitiveDetector( PMT );
+  
 
 }
 
+void DetectorConstruction::ConstructSDandField(){
+  G4SDManager* SDman = G4SDManager::GetSDMpointer();
+  PMTSD* PMT = new PMTSD("MyPMT");
+  SDman->AddNewDetector( PMT );
+  m_logicPMT->SetSensitiveDetector( PMT );
+}
+
 /*
 *
 */
@@ -528,7 +531,7 @@ void DetectorConstruction::UseCADModel(G4String fileName){
   m_Surfvec.clear();
 
 
-  G4String fileType = fileName.substr( fileName.last('.') + 1, fileName.size() - fileName.last('.'));
+  G4String fileType = fileName.substr( fileName.find_last_of('.') + 1, fileName.size() - fileName.find_last_of('.'));
 
   if(fileType == "stl"){
     auto mesh = CADMesh::TessellatedMesh::FromSTL((char*) fileName.c_str());
@@ -668,7 +671,6 @@ void DetectorConstruction::SetSurfaceSigmaAlpha(G4double v){
  * of the light guide
  */
 void DetectorConstruction::AddSurfaceMPV(const char* c, G4MaterialPropertyVector* mpv){
-  mpv->SetSpline(true);
   materials->GetMPTArray().at(1)->AddProperty(c, mpv);
   materials->AlSurface->SetMaterialPropertiesTable(materials->GetMPTArray().at(1));
   G4cout << "The MPT for the surface is now: " << G4endl;
@@ -681,7 +683,6 @@ void DetectorConstruction::AddSurfaceMPV(const char* c, G4MaterialPropertyVector
  * which contains the light guide
  */
 void DetectorConstruction::AddGasMPV(const char* c, G4MaterialPropertyVector* mpv){
-  mpv->SetSpline(true);
   m_GasMPT->AddProperty(c, mpv);
   G4cout << "The MPT for the gas is now: " << G4endl;
   m_GasMPT->DumpTable();
diff --git a/src/DetectorMessenger.cc b/src/DetectorMessenger.cc
index f80d887d2418cbcc3fa0c260020c1104a1082304..e22e10cfdea37e28ee3bd4a6ab23221253c19d02 100644
--- a/src/DetectorMessenger.cc
+++ b/src/DetectorMessenger.cc
@@ -419,7 +419,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
     // Convert string to physics vector
     // string format is property name, then pairs of energy, value
     // space delimited
-    G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector();
+    G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector(true);
     G4cout << newValue << G4endl;
     std::istringstream instring(newValue);
     G4String prop;
@@ -466,7 +466,7 @@ void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
     // Convert string to physics vector
     // string format is property name, then pairs of energy, value
     // space delimited
-    G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector();
+    G4MaterialPropertyVector* mpv = new G4MaterialPropertyVector(true);
     G4cout << newValue << G4endl;
     std::istringstream instring(newValue);
     G4String prop;
diff --git a/src/EventAction.cc b/src/EventAction.cc
index 45c22c1d031115a9c0ba700730aa61a72caf1204..35837dca10365d5fbc7f407dc54e1234b2eb1b88 100644
--- a/src/EventAction.cc
+++ b/src/EventAction.cc
@@ -25,18 +25,11 @@
 // @Author Chad Lantz
 #include "EventAction.hh"
 
-#include "G4VProcess.hh"
-
-#include "G4ParticleDefinition.hh"
-#include "G4ParticleTypes.hh"
-#include "G4SDManager.hh"
+#include "G4AnalysisManager.hh"
 #include "G4RunManager.hh"
 #include "G4Event.hh"
-#include "G4Track.hh"
 #include "G4ios.hh"
 
-#include "PMTHit.hh"
-#include "lgAnalysis.hh"
 #include "RunAction.hh"
 
 /*
@@ -68,9 +61,18 @@ void EventAction::BeginOfEventAction(const G4Event* event){
  */
 void EventAction::EndOfEventAction(const G4Event* event){
   // fill ntuple  //
+
   G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
+
+  RunAction *runAction = ((RunAction*)G4RunManager::GetRunManager()->GetUserRunAction());
+  std::vector< std::vector<double>* > ptrVec = runAction->GetVectors();
+
+  for(unsigned int i = 0; i < ptrVec[0]->size(); i++){
+    analysisManager->FillH2(0, ptrVec[0]->at(i), ptrVec[1]->at(i));
+  }
+
   analysisManager->FillNtupleIColumn( 0, event->GetEventID());
   analysisManager->AddNtupleRow();
-
-  ((RunAction*)G4RunManager::GetRunManager()->GetUserRunAction())->ClearVectors();
+  
+  runAction->ClearVectors();
 }
diff --git a/src/PhysicsList.cc b/src/PhysicsList.cc
index 4aceecb747c3029e7cf47993ef000074764e7ec8..30e30163618bca4d5bf16e59756ec4d3b2c4343d 100644
--- a/src/PhysicsList.cc
+++ b/src/PhysicsList.cc
@@ -209,7 +209,7 @@ void PhysicsList::ConstructOp(){
   fCerenkovProcess->SetMaxBetaChangePerStep(10.0);
   fCerenkovProcess->SetTrackSecondariesFirst(true);
   fScintillationProcess = new G4Scintillation("Scintillation");
-  fScintillationProcess->SetScintillationYieldFactor(1.);
+  // fScintillationProcess->SetScintillationYieldFactor(1.);
   fScintillationProcess->SetTrackSecondariesFirst(true);
   fAbsorptionProcess = new G4OpAbsorption();
   fRayleighScatteringProcess = new G4OpRayleigh();
diff --git a/src/PrimaryGeneratorAction.cc b/src/PrimaryGeneratorAction.cc
index 749f98a2e445f9656a8cc4b06e6ce1995466b65b..140ab36d00100fa26f3d45c20eaa10f03d570325 100644
--- a/src/PrimaryGeneratorAction.cc
+++ b/src/PrimaryGeneratorAction.cc
@@ -25,14 +25,12 @@
 /// \file /src/PrimaryGeneratorAction.cc
 /// \brief Implementation of the PrimaryGeneratorAction class
 #include "PrimaryGeneratorAction.hh"
-#include "lgAnalysis.hh"
-
-#include "Randomize.hh"
 
 #include "G4Event.hh"
 #include "G4ParticleTable.hh"
 #include "G4ParticleDefinition.hh"
 #include "G4SystemOfUnits.hh"
+#include <G4String.hh>
 
 
 
@@ -84,10 +82,6 @@ void PrimaryGeneratorAction::GeneratePrimariesFromRootFile(G4Event* anEvent){
 
   fInputTree->GetEntry(evNo);
 
-  //Pass the original event number to the output in case they aren't sequential
-  auto analysisManager = G4AnalysisManager::Instance();
-  analysisManager->FillNtupleIColumn(7, anEvent->GetEventID() );
-
   G4int nPhotons = x->size();
   for(G4int i = 0; i < nPhotons; i++){
      G4PrimaryParticle* particle = new G4PrimaryParticle(particleDefinition);
@@ -106,8 +100,8 @@ void PrimaryGeneratorAction::SetInputFile(G4String _name){
     return;
   }
   G4String check = _name;
-  check.toLower();
-  if(check.contains(".root")){
+  check = G4StrUtil::to_lower_copy(check);
+  if(G4StrUtil::contains(check,".root")){
     fInputFile = new TFile( _name.c_str(), "READ");
 
     if(!fInputFile->IsOpen()){
@@ -131,7 +125,7 @@ void PrimaryGeneratorAction::SetInputFile(G4String _name){
     fInputTree->SetBranchAddress("Energy",&Energy);
     fInputTree->SetBranchAddress("Time",&time);
 
-  }else if(check.contains(".txt")){
+  }else if(G4StrUtil::contains(check,".txt")){
     fUseASCIIInput = true;
 
     G4cout << "Using " << _name << " as source" << G4endl;
diff --git a/src/RunAction.cc b/src/RunAction.cc
index aa87e78cb05b36d3b7bb931fd4d52af5962863b2..b19eca6ff35165049f20ecc31b549e452e271d44 100644
--- a/src/RunAction.cc
+++ b/src/RunAction.cc
@@ -28,7 +28,6 @@
 // @Author Chad Lantz
 
 
-// Make this appear first!
 #include "G4Timer.hh"
 
 #include "G4RunManager.hh"
@@ -36,9 +35,8 @@
 
 #include "RunAction.hh"
 #include "EventAction.hh"
-#include "lgAnalysis.hh"
 
-#include "G4VAnalysisManager.hh"
+#include "G4AnalysisManager.hh"
 #include "G4SystemOfUnits.hh"
 
 
@@ -52,38 +50,24 @@ RunAction::RunAction(G4String fileName)
 
   G4RunManager::GetRunManager()->SetPrintProgress(1);
 
-}
-
-/*
- *
- */
-RunAction::~RunAction(){
-  delete fTimer;
-  delete G4AnalysisManager::Instance();
-  for(auto vec : fPtrVec ) delete vec;
-}
-
-/*
- *
- */
-void RunAction::BeginOfRunAction(const G4Run* aRun){
-  G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
-  fTimer->Start();
-
-  // Create analysis manager. The choice of analysis
-  // technology is done via selection of a namespace
-  // in B4Analysis.hh
+  // Get analysis manager and set the type
   auto analysisManager = G4AnalysisManager::Instance();
-  G4cout << "Using " << analysisManager->GetType() << G4endl;
+  analysisManager->SetDefaultFileType("root");
+  analysisManager->SetVerboseLevel(1);
+  // Only merge in MT mode to avoid warning when running in Sequential mode
+#ifdef G4MULTITHREADED
+  analysisManager->SetNtupleMerging(true);
+#endif
 
   // Open an output file
-  if(m_fileName == "") m_fileName = "output";
+  if(m_fileName == "") m_fileName = "output.root";
   analysisManager->OpenFile(m_fileName);
+  
+  analysisManager->SetHistoDirectoryName("histo");
+  analysisManager->SetNtupleDirectoryName("ntuple");
 
+  analysisManager->CreateH2("position", "Emission Position of Detected Photons", 100, -39, 30, 100, -30, 30);
 
-  // Create directories
-  analysisManager->SetVerboseLevel(1);
-  analysisManager->SetNtupleMerging(true);
 
   // Creating ntuple
   // Populate the vector with valid pointers and assign them to branches
@@ -99,6 +83,24 @@ void RunAction::BeginOfRunAction(const G4Run* aRun){
   analysisManager->CreateNtupleDColumn( "theta",   *fPtrVec[5] );
   analysisManager->CreateNtupleDColumn( "energy",  *fPtrVec[6] );
   analysisManager->FinishNtuple();
+
+}
+
+/*
+ *
+ */
+RunAction::~RunAction(){
+  delete fTimer;
+  delete G4AnalysisManager::Instance();
+  for(auto vec : fPtrVec ) delete vec;
+}
+
+/*
+ *
+ */
+void RunAction::BeginOfRunAction(const G4Run* aRun){
+  fTimer->Start();
+
 }
 
 /*
@@ -113,5 +115,5 @@ void RunAction::EndOfRunAction(const G4Run* aRun){
   auto analysisManager = G4AnalysisManager::Instance();
   // save histograms & ntuple
   analysisManager->Write();
-  analysisManager->CloseFile();
+  analysisManager->CloseFile(false);
 }