diff --git a/Simulation/BeamEffects/CMakeLists.txt b/Simulation/BeamEffects/CMakeLists.txt
index d0fb8f997b45c2bff415bdd5504046c27591f4a4..e8c0b72dabd0673ca97483698076b9e116c9f5a3 100644
--- a/Simulation/BeamEffects/CMakeLists.txt
+++ b/Simulation/BeamEffects/CMakeLists.txt
@@ -40,5 +40,5 @@ atlas_add_component( BeamEffects
 # Install files from the package:
 atlas_install_headers( BeamEffects )
 atlas_install_python_modules( python/*.py )
-
+atlas_install_joboptions( share/*.py )
 
diff --git a/Simulation/BeamEffects/cmt/requirements b/Simulation/BeamEffects/cmt/requirements
index 91f97278da156254f09b55b7b00e015c01067968..29bf4f61714a829773aa91fdffbb87d3c5d70185 100644
--- a/Simulation/BeamEffects/cmt/requirements
+++ b/Simulation/BeamEffects/cmt/requirements
@@ -28,6 +28,7 @@ public
 library BeamEffects *.cxx components/*.cxx
 apply_pattern component_library
 apply_pattern declare_python_modules files="*.py"
+apply_pattern declare_joboptions files="*.py"
 
 private
 use TestTools                   TestTools-*              AtlasTest
diff --git a/Simulation/BeamEffects/python/BeamEffectsConfig.py b/Simulation/BeamEffects/python/BeamEffectsConfig.py
index 413dca78023e7ad8f5baa86753e8336821a4f8e1..9d46df79c107acf9aa3e49d3445c981cc814e575 100644
--- a/Simulation/BeamEffects/python/BeamEffectsConfig.py
+++ b/Simulation/BeamEffects/python/BeamEffectsConfig.py
@@ -15,11 +15,14 @@ def getVertexPositionFromFile(name="VertexPositionFromFile", **kwargs):
     from G4AtlasApps.SimFlags import simFlags
     vtxPosFile = "vtx-pos.txt"
     if simFlags.VertexOverrideFile.statusOn:
-        vtxPosFile = str(simFlags.VertexOverrideEventFile())
+        vtxPosFile = str(simFlags.VertexOverrideFile())
     kwargs.setdefault("VertexPositionsFile"         , vtxPosFile)
     runAndEventNosFile ="run-evt-nums.txt"
     if simFlags.VertexOverrideEventFile.statusOn:
         runAndEventNosFile = str(simFlags.VertexOverrideEventFile())
+    if hasattr(simFlags, 'IsEventOverlayInputSim') and simFlags.IsEventOverlayInputSim():
+        from OverlayCommonAlgs.OverlayFlags import overlayFlags
+        runAndEventNosFile = (overlayFlags.EventIDTextFile())
     kwargs.setdefault("RunAndEventNumbersFile"      , runAndEventNosFile)
     return CfgMgr.Simulation__VertexPositionFromFile(name, **kwargs)
 
@@ -58,10 +61,6 @@ def getGenEventValidityChecker(name="GenEventValidityChecker", **kwargs):
 def getGenEventVertexPositioner(name="GenEventVertexPositioner", **kwargs):
     from G4AtlasApps.SimFlags import simFlags
     readVtxPosFromFile = simFlags.VertexOverrideFile.statusOn or simFlags.VertexOverrideEventFile.statusOn
-    if simFlags.ISFRun():
-        from  ISF_Config.ISF_jobProperties import ISF_Flags
-        readVtxPosFromFile = readVtxPosFromFile or ISF_Flags.VertexPositionFromFile()
-    #FIXME we can probably drop this ISF_Flag as it seems redundant
     if readVtxPosFromFile:
         kwargs.setdefault("VertexShifters"          , [ 'VertexPositionFromFile' ])
     elif simFlags.VertexFromCondDB():
diff --git a/Simulation/BeamEffects/src/CrabKissingVertexPositioner.cxx b/Simulation/BeamEffects/src/CrabKissingVertexPositioner.cxx
index 7ab2858d0f44e4d2b02a225eac466a8e756513df..e3e48488a9ec979724cec09ff3d11c99b31a12be 100644
--- a/Simulation/BeamEffects/src/CrabKissingVertexPositioner.cxx
+++ b/Simulation/BeamEffects/src/CrabKissingVertexPositioner.cxx
@@ -113,8 +113,8 @@ StatusCode  Simulation::CrabKissingVertexPositioner::finalize()
 double Simulation::CrabKissingVertexPositioner::beamspotFunction(double displacement, double angle1, double angle2) const
 {
   if ( angle1<1e-10 ) angle1 = 1e-10; // to avoid divide_by_zero errors
-  double temp(1.0-std::abs(displacement)/m_bunchLength);
-  return sqrt(3.1415)/2 * erf(angle1*temp)/angle1 * exp( -pow(angle2*displacement/m_bunchLength, 2) ) * heaviside(temp);
+  double temp(1.0-std::fabs(displacement)/m_bunchLength);
+  return std::sqrt(3.1415)/2 * std::erf(angle1*temp)/angle1 * std::exp( -pow(angle2*displacement/m_bunchLength, 2) ) * heaviside(temp);
 }
 
 double Simulation::CrabKissingVertexPositioner::getDisplacement(double bunchSize, double angle1, double angle2) const
@@ -139,15 +139,15 @@ CLHEP::HepLorentzVector *Simulation::CrabKissingVertexPositioner::generate() con
   // necessary/preferable.
   double vertexX = CLHEP::RandGaussZiggurat::shoot(m_randomEngine)*m_beamCondSvc->beamSigma(0);
   double vertexY = CLHEP::RandGaussZiggurat::shoot(m_randomEngine)*m_beamCondSvc->beamSigma(1);
-  double piwinski_phi = abs(m_thetaX - m_alphaX) * m_bunchLength/sqrt(m_epsilon * m_betaStar);
-  double piwinski_psi = m_alphaPar * m_bunchLength / sqrt( m_epsilon * m_betaStar);
+  double piwinski_phi = std::fabs(m_thetaX - m_alphaX) * m_bunchLength/std::sqrt(m_epsilon * m_betaStar);
+  double piwinski_psi = m_alphaPar * m_bunchLength / std::sqrt( m_epsilon * m_betaStar);
   double vertexZ = 0;
   double vertexT = 0;
   // Time should be set in units of distance, the following methods generate c*t
   if ( m_bunchShape == BunchShape::GAUSS)
     {
-      double zWidth    = m_bunchLength / sqrt(2*(1+pow(piwinski_phi,2)));
-      double timeWidth = m_bunchLength / sqrt(2*(1+pow(piwinski_psi,2)));
+      double zWidth    = m_bunchLength / std::sqrt(2*(1+pow(piwinski_phi,2)));
+      double timeWidth = m_bunchLength / std::sqrt(2*(1+pow(piwinski_psi,2)));
       vertexZ = CLHEP::RandGaussZiggurat::shoot( m_randomEngine , 0., zWidth);
       vertexT = CLHEP::RandGaussZiggurat::shoot( m_randomEngine , 0., timeWidth);
     }
@@ -173,8 +173,8 @@ CLHEP::HepLorentzVector *Simulation::CrabKissingVertexPositioner::generate() con
   const double tx = tan( m_beamCondSvc->beamTilt(1) );
   const double ty = tan( m_beamCondSvc->beamTilt(0) );
 
-  const double sqrt_abc = sqrt(1. + tx*tx + ty*ty);
-  const double sqrt_fgh = sqrt(1. + ty*ty);
+  const double sqrt_abc = std::sqrt(1. + tx*tx + ty*ty);
+  const double sqrt_fgh = std::sqrt(1. + ty*ty);
 
   const double a = ty/sqrt_abc;
   const double b = tx/sqrt_abc;