diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6712e0b7ab5504c093d27661d9a37561df524fd9..53631c5c378d41d4cf94de4c2c2849c1b3cfe882 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,8 +5,8 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8.5)
 set(GEANT4_SRCS_REPOSITORY https://gitlab.cern.ch/lhcb/Geant4-srcs.git CACHE STRING "Repository for Geant4 sources")
 
 find_package(GaudiProject)
-gaudi_project(Geant4 v103r3
-              DATA Geant4Files VERSION v103r1)
+gaudi_project(Geant4 v104r1
+              DATA Geant4Files VERSION v104r0)
 
 # FIXME: hack for compatibility with CMT build
 file(WRITE ${CMAKE_BINARY_DIR}/dummy.cpp "")
diff --git a/Geant4/G4config/CMakeLists.txt b/Geant4/G4config/CMakeLists.txt
index e108e841b1c2394457331f7c7ada6677cd56af8f..9ff4e7b1f4d080e7847d60e5922582a7d7a84562 100644
--- a/Geant4/G4config/CMakeLists.txt
+++ b/Geant4/G4config/CMakeLists.txt
@@ -30,7 +30,7 @@ if (NOT GEANT4_TAG)
   elseif(CMAKE_PROJECT_VERSION STREQUAL "HEAD")
     # Special mapping of version HEAD
     # WARNING this must be kept up to date manually
-    set(GEANT4_TAG "lhcb/v10.3.3-branch")
+    set(GEANT4_TAG "lhcb/v10.4.1-branch")
   else()
     set(GEANT4_TAG lhcb/${CMAKE_PROJECT_VERSION})
   endif()
diff --git a/LHCbG4PhysLists/LHCbG4PhysLists/G4EmStandardPhysics_option1NoApplyCuts.h b/LHCbG4PhysLists/LHCbG4PhysLists/G4EmStandardPhysics_option1NoApplyCuts.h
index d46b7585c6069dadb8eb6e934b0e407432bb053f..49b79bb4bdb2b43c842d0079e31a91b63e2cb7ff 100644
--- a/LHCbG4PhysLists/LHCbG4PhysLists/G4EmStandardPhysics_option1NoApplyCuts.h
+++ b/LHCbG4PhysLists/LHCbG4PhysLists/G4EmStandardPhysics_option1NoApplyCuts.h
@@ -23,11 +23,11 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-// $Id$
+// $Id: G4EmStandardPhysics_option1.hh 98736 2016-08-09 10:55:12Z gcosmo $
 //
 //---------------------------------------------------------------------------
 //
-// ClassName:   G4EmStandardPhysics_option1NoApplyCuts
+// ClassName:   G4EmStandardPhysics_option1
 //
 // Author:      V.Ivanchenko 09.11.2005
 //
@@ -55,15 +55,12 @@ class G4EmStandardPhysics_option1NoApplyCuts : public G4VPhysicsConstructor
 {
 public:
 
-  G4EmStandardPhysics_option1NoApplyCuts(G4int ver = 1);
-
-  // obsolete
-  G4EmStandardPhysics_option1NoApplyCuts(G4int ver, const G4String& name);
+  explicit G4EmStandardPhysics_option1NoApplyCuts(G4int ver=1, const G4String& name="");
 
   virtual ~G4EmStandardPhysics_option1NoApplyCuts();
 
-  void ConstructParticle() override;
-  void ConstructProcess() override;
+  virtual void ConstructParticle() override;
+  virtual void ConstructProcess() override;
 
 private:
   G4int  verbose;
diff --git a/LHCbG4PhysLists/src/G4EmStandardPhysics_option1NoApplyCuts.cc b/LHCbG4PhysLists/src/G4EmStandardPhysics_option1NoApplyCuts.cc
index ed5bda86d6177c40e62aa50216343f27abbeedb3..f1862ccafb88b7732c953ada31379c20fd3d1099 100644
--- a/LHCbG4PhysLists/src/G4EmStandardPhysics_option1NoApplyCuts.cc
+++ b/LHCbG4PhysLists/src/G4EmStandardPhysics_option1NoApplyCuts.cc
@@ -23,11 +23,11 @@
 // * acceptance of all terms of the Geant4 Software license.          *
 // ********************************************************************
 //
-// $Id$
+// $Id: G4EmStandardPhysics_option1.cc 99938 2016-10-12 08:06:52Z gcosmo $
 //
 //---------------------------------------------------------------------------
 //
-// ClassName:   G4EmStandardPhysics_option1NoApplyCuts
+// ClassName:   G4EmStandardPhysics_option1
 //
 // Author:      V.Ivanchenko 09.11.2005
 //
@@ -51,7 +51,7 @@
 #include "Geant4/G4SystemOfUnits.hh"
 #include "Geant4/G4ParticleDefinition.hh"
 #include "Geant4/G4LossTableManager.hh"
-#include "Geant4/G4EmProcessOptions.hh"
+#include "Geant4/G4EmParameters.hh"
 
 #include "Geant4/G4ComptonScattering.hh"
 #include "Geant4/G4GammaConversion.hh"
@@ -102,9 +102,9 @@
 #include "Geant4/G4Alpha.hh"
 #include "Geant4/G4GenericIon.hh"
 
-#include "Geant4/G4VUserPhysicsList.hh"
 #include "Geant4/G4PhysicsListHelper.hh"
 #include "Geant4/G4BuilderType.hh"
+#include "Geant4/G4EmModelActivator.hh"
 
 // factory
 #include "Geant4/G4PhysicsConstructorFactory.hh"
@@ -113,20 +113,16 @@ G4_DECLARE_PHYSCONSTR_FACTORY(G4EmStandardPhysics_option1NoApplyCuts);
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 
-G4EmStandardPhysics_option1NoApplyCuts::G4EmStandardPhysics_option1NoApplyCuts(G4int ver)
+G4EmStandardPhysics_option1NoApplyCuts::G4EmStandardPhysics_option1NoApplyCuts(G4int ver, 
+							 const G4String&)
   : G4VPhysicsConstructor("G4EmStandard_opt1"), verbose(ver)
 {
-  G4LossTableManager::Instance();
-  SetPhysicsType(bElectromagnetic);
-  //  std::cout<<"This is the v9.6 option 1 physics list with ApplyCuts option commented out"<<std::endl;
-}
-
-//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
-
-G4EmStandardPhysics_option1NoApplyCuts::G4EmStandardPhysics_option1NoApplyCuts(G4int ver, const G4String&)
-  : G4VPhysicsConstructor("G4EmStandard_opt1"), verbose(ver)
-{
-  G4LossTableManager::Instance();
+  G4EmParameters* param = G4EmParameters::Instance();
+  param->SetDefaults();
+  param->SetVerbose(verbose);
+  param->SetApplyCuts(false); //LHCb Specific modification, don't apply prodcution cuts for specific processes
+  param->SetMscRangeFactor(0.2);
+  param->SetMscStepLimitType(fMinimal);
   SetPhysicsType(bElectromagnetic);
 }
 
@@ -139,26 +135,26 @@ G4EmStandardPhysics_option1NoApplyCuts::~G4EmStandardPhysics_option1NoApplyCuts(
 
 void G4EmStandardPhysics_option1NoApplyCuts::ConstructParticle()
 {
-// gamma
+  // gamma
   G4Gamma::Gamma();
 
-// leptons
+  // leptons
   G4Electron::Electron();
   G4Positron::Positron();
   G4MuonPlus::MuonPlus();
   G4MuonMinus::MuonMinus();
 
-// mesons
+  // mesons
   G4PionPlus::PionPlusDefinition();
   G4PionMinus::PionMinusDefinition();
   G4KaonPlus::KaonPlusDefinition();
   G4KaonMinus::KaonMinusDefinition();
 
-// barions
+  // barions
   G4Proton::Proton();
   G4AntiProton::AntiProton();
 
-// ions
+  // ions
   G4Deuteron::Deuteron();
   G4Triton::Triton();
   G4He3::He3();
@@ -170,6 +166,9 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructParticle()
 
 void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
 {
+  if(verbose > 1) {
+    G4cout << "### " << GetPhysicsName() << " Construct Processes " << G4endl;
+  }
   G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
 
   // muon & hadron bremsstrahlung and pair production
@@ -185,26 +184,31 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
   // muon & hadron multiple scattering
   G4MuMultipleScattering* mumsc = new G4MuMultipleScattering();
   mumsc->AddEmModel(0, new G4WentzelVIModel());
+  G4CoulombScattering* muss = new G4CoulombScattering();
+
   G4MuMultipleScattering* pimsc = new G4MuMultipleScattering();
   pimsc->AddEmModel(0, new G4WentzelVIModel());
+  G4CoulombScattering* piss = new G4CoulombScattering();
+
   G4MuMultipleScattering* kmsc = new G4MuMultipleScattering();
   kmsc->AddEmModel(0, new G4WentzelVIModel());
+  G4CoulombScattering* kss = new G4CoulombScattering();
+
   G4MuMultipleScattering* pmsc = new G4MuMultipleScattering();
   pmsc->AddEmModel(0, new G4WentzelVIModel());
+  G4CoulombScattering* pss = new G4CoulombScattering();
+
   G4hMultipleScattering* hmsc = new G4hMultipleScattering("ionmsc");
 
   // high energy limit for e+- scattering models and bremsstrahlung
   G4double highEnergyLimit = 100*MeV;
 
   // Add standard EM Processes
-  auto particleIterator = GetParticleIterator();
-  particleIterator->reset();
-  while( (*particleIterator)() ){
-    G4ParticleDefinition* particle = particleIterator->value();
+  auto myParticleIterator=GetParticleIterator();
+  myParticleIterator->reset();
+  while( (*myParticleIterator)() ){
+    G4ParticleDefinition* particle = myParticleIterator->value();
     G4String particleName = particle->GetParticleName();
-    if(verbose > 1)
-      G4cout << "### " << GetPhysicsName() << " instantiates for " 
-	     << particleName << G4endl;
 
     if (particleName == "gamma") {
 
@@ -218,9 +222,9 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       eioni->SetStepFunction(0.8, 1.0*mm);
 
       G4eMultipleScattering* msc = new G4eMultipleScattering;
-      msc->SetStepLimitType(fMinimal);
       G4UrbanMscModel* msc1 = new G4UrbanMscModel();
       G4WentzelVIModel* msc2 = new G4WentzelVIModel();
+      msc1->SetLateralDisplasmentFlag(false);
       msc1->SetHighEnergyLimit(highEnergyLimit);
       msc2->SetLowEnergyLimit(highEnergyLimit);
       msc->AddEmModel(0, msc1);
@@ -244,9 +248,9 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       eioni->SetStepFunction(0.8, 1.0*mm);
 
       G4eMultipleScattering* msc = new G4eMultipleScattering;
-      msc->SetStepLimitType(fMinimal);
       G4UrbanMscModel* msc1 = new G4UrbanMscModel();
       G4WentzelVIModel* msc2 = new G4WentzelVIModel();
+      msc1->SetLateralDisplasmentFlag(false);
       msc1->SetHighEnergyLimit(highEnergyLimit);
       msc2->SetLowEnergyLimit(highEnergyLimit);
       msc->AddEmModel(0, msc1);
@@ -272,7 +276,7 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       ph->RegisterProcess(new G4MuIonisation(), particle);
       ph->RegisterProcess(mub, particle);
       ph->RegisterProcess(mup, particle);
-      ph->RegisterProcess(new G4CoulombScattering(), particle);
+      ph->RegisterProcess(muss, particle);
 
     } else if (particleName == "alpha" || 
 	       particleName == "He3" ) {
@@ -294,6 +298,7 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       ph->RegisterProcess(new G4hIonisation(), particle);
       ph->RegisterProcess(pib, particle);
       ph->RegisterProcess(pip, particle);
+      ph->RegisterProcess(piss, particle);
 
     } else if (particleName == "kaon+" ||
                particleName == "kaon-" ) {
@@ -303,6 +308,7 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       ph->RegisterProcess(new G4hIonisation(), particle);
       ph->RegisterProcess(kb, particle);
       ph->RegisterProcess(kp, particle);
+      ph->RegisterProcess(kss, particle);
 
       //    } else if (particleName == "proton" ) {
     } else if (particleName == "proton" ||
@@ -313,6 +319,7 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       ph->RegisterProcess(new G4hIonisation(), particle);
       ph->RegisterProcess(pb, particle);
       ph->RegisterProcess(pp, particle);
+      ph->RegisterProcess(pss, particle);
 
     } else if (particleName == "B+" ||
 	       particleName == "B-" ||
@@ -349,15 +356,13 @@ void G4EmStandardPhysics_option1NoApplyCuts::ConstructProcess()
       ph->RegisterProcess(new G4hIonisation(), particle);
     }
   }
-  G4EmProcessOptions opt;
-  opt.SetVerbose(verbose);
-  opt.SetPolarAngleLimit(CLHEP::pi);
-  //opt.SetApplyCuts(true);
 
   // Deexcitation
   //
   G4VAtomDeexcitation* de = new G4UAtomicDeexcitation();
   G4LossTableManager::Instance()->SetAtomDeexcitation(de);
+
+  G4EmModelActivator mact(GetPhysicsName());
 }
 
 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/CMakeLists.txt b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..7d1167e0608e03bddd9dc7f8877d579c6449062c
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/CMakeLists.txt
@@ -0,0 +1,33 @@
+gaudi_subdir(G4GammaToDiLeptonConversionTest v1r0)
+
+gaudi_depends_on_subdirs(Geant4/G4config)
+gaudi_depends_on_subdirs(LHCbG4PhysLists)
+
+find_package(CLHEP REQUIRED)
+
+include_directories(SYSTEM ${CMAKE_INSTALL_PREFIX}/include ${CLHEP_INCLUDE_DIRS})
+link_directories(${CMAKE_INSTALL_PREFIX}/lib)
+
+set(Geant4_LIBRARIES
+    -lG4analysis
+    -lG4physicslists
+    -lG4intercoms
+    -lG4global
+    -lG4run
+    -lG4tracking   
+    -lG4track
+    -lG4event
+    -lG4processes
+    -lG4particles
+    -lG4geometry
+    -lG4materials
+    -lG4graphics_reps)
+
+gaudi_add_executable(G4GammaToDiLeptonConversionTest
+                     G4GammaToDiLeptonConversionTest.cc src/*.cc
+                     INCLUDE_DIRS include CLHEP
+                     LINK_LIBRARIES ${Geant4_LIBRARIES} CLHEP)
+
+add_dependencies(G4GammaToDiLeptonConversionTest Geant4)
+
+gaudi_install_scripts()
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/G4GammaToDiLeptonConversionTest.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/G4GammaToDiLeptonConversionTest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6c998cace94191abe9d948514b4c5a6420815f01
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/G4GammaToDiLeptonConversionTest.cc
@@ -0,0 +1,157 @@
+// BASED ON TESTEM6 BY THE GEANT4 COLLABORATION
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/TestEm6.cc
+/// \brief Main program of the electromagnetic/TestEm6 example
+//
+// $Id: TestEm6.cc 83428 2014-08-21 15:46:01Z gcosmo $
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "Geant4/G4RunManager.hh"
+#include "Geant4/G4UImanager.hh"
+#include "Geant4/Randomize.hh"
+#include "Geant4/G4GammaConversionToMuons.hh"
+#include "Geant4/G4ProcessTable.hh"
+
+#include "DetectorConstruction.hh"
+#include "PrimaryGeneratorAction.hh"
+#include "SteppingVerbose.hh"
+
+#include "PhysicsList.hh"
+
+#include "RunAction.hh"
+#include "SteppingAction.hh"
+#include "StackingAction.hh"
+
+#ifdef G4VIS_USE
+ #include "G4VisExecutive.hh"
+#endif
+
+#ifdef G4UI_USE
+#include "G4UIExecutive.hh"
+#endif
+
+G4double energy = 1000; //in GeV
+
+G4int nEvts = 100;
+
+G4double thickness = 0.3; //in mm
+
+G4String dimu_xsec_fac = "1000";
+
+G4String output_dir = ".";
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+ 
+int main(int argc,char** argv) {
+
+  for(int i{0}; i<argc; ++i)
+  {
+       if(G4String(argv[i]) == "--nevts")
+       {
+          ++i;
+          nEvts = G4int(atoi(argv[i]));
+          ++i;
+       }
+       if(G4String(argv[i]) == "--energy")
+       {
+          ++i;
+          energy = G4double(atof(argv[i]));
+          ++i;
+       }
+
+       if(G4String(argv[i]) == "--thickness")
+       {
+          ++i;
+          thickness = G4double(atof(argv[i]));
+          ++i;
+       }
+       if(G4String(argv[i]) == "--scale")
+       {
+          ++i;
+          dimu_xsec_fac = G4String(argv[i]);
+          ++i;
+       }
+
+       if(G4String(argv[i]) == "--outputdir")
+       {
+          ++i;
+          output_dir = G4String(argv[i]);
+          ++i;
+       }
+
+  }
+
+  //choose the Random engine
+  CLHEP::HepRandom::setTheEngine(new CLHEP::RanecuEngine);
+  
+  //my Verbose output class
+  G4VSteppingVerbose::SetInstance(new SteppingVerbose);
+    
+  //Construct the default run manager
+  G4RunManager * runManager = new G4RunManager;
+
+  //Set Physics List
+  runManager->SetUserInitialization(new PhysicsList);     
+
+  //set mandatory initialization classes
+  DetectorConstruction* det;
+  runManager->SetUserInitialization(det = new DetectorConstruction(thickness));
+  runManager->SetUserAction(new PrimaryGeneratorAction(det, energy, nEvts));
+    
+  //set user action classes
+  RunAction* RunAct;
+  
+  runManager->SetUserAction(RunAct = new RunAction(det, energy, thickness, nEvts, output_dir)); 
+  runManager->SetUserAction(new SteppingAction(RunAct));
+  runManager->SetUserAction(new StackingAction);
+
+  //get the pointer to the User Interface manager 
+  G4UImanager* UI = G4UImanager::GetUIpointer();  
+
+  
+  // Initialize Run Manager
+
+  UI->ApplyCommand("/run/initialize");
+ 
+
+  // Increase Gamma2MuMu XSec to 1000x
+  
+  UI->ApplyCommand("/testem/phys/SetGammaToMuPairFac "+dimu_xsec_fac);  
+
+  //Start Simulation
+  UI->ApplyCommand("/run/beamOn");
+ 
+  //job termination
+  delete runManager;
+
+  return 0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/GNUmakefile b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/GNUmakefile
new file mode 100644
index 0000000000000000000000000000000000000000..d1454ad82625ede20993497102b6dbe0d9ad7284
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/GNUmakefile
@@ -0,0 +1,27 @@
+# $Id: GNUmakefile 66241 2012-12-13 18:34:42Z gunter $
+# --------------------------------------------------------------
+# GNUmakefile for examples module.  Gabriele Cosmo, 06/04/98.
+# --------------------------------------------------------------
+
+name := TestEm6
+G4TARGET := $(name)
+G4EXLIB := true
+
+ifndef G4INSTALL
+  G4INSTALL = ../../../..
+endif
+
+.PHONY: all
+all: lib bin
+
+include $(G4INSTALL)/config/architecture.gmk
+
+include $(G4INSTALL)/config/binmake.gmk
+
+histclean:
+	rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/RunAction.o
+	rm -f $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(G4TARGET)/SteppingAction.o
+
+visclean:
+	rm -f g4*.prim g4*.eps g4*.wrl
+	rm -f .DAWN_*
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/History b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/History
new file mode 100644
index 0000000000000000000000000000000000000000..d3e72dda2cb7949867808f59f65abe397365f4ed
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/History
@@ -0,0 +1,193 @@
+$Id: History 100285 2016-10-17 08:42:54Z gcosmo $
+-------------------------------------------------------------------
+
+     =========================================================
+     Geant4 - an Object-Oriented Toolkit for Simulation in HEP
+     =========================================================
+
+                    TestEm6 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 *
+     ----------------------------------------------------------
+
+14-10-16 G.Folger (testem6-V10-02-02)
+- remove direct use of theParticleIterator, use GetParticleTableIterator().
+    fix required by clang39 on Linux and MAC
+
+04-07-16 I. Hrivnacova  (testem6-V10-02-01)
+- Fixes for Doxygen documentation
+
+10-12-15 V.Ivant (testem6-V10-02-00)
+- H.Burkhardt fixed root macro allowing to work both with root5 and 6
+    
+28-10-15 D.Sawkey (testem6-V10-01-00)
+- update physics description in READMEs
+- add more standard EM physics builders
+
+30-07-14 V.Ivant (testem6-V10-00-02)
+- Naruhiro Chikuma have updated PhysicsList, DetectorConstruction,
+    and RunAction; bug fix  
+	 
+03-07-14 mma (testem6-V10-00-01)
+- replace /testem/event/printModulo by /run/printProgress
+	 
+08-06-14 mma (testem6-V10-00-00)
+- suppress EventAction and its messenger
+
+18-09-13 V.Ivant (testem6-V09-06-04)
+- fixed tag format
+
+17-09-13 V.Ivant (testem6-V09-05-04)
+- TestEm6.in - added cross section factor to gamma->mu+mu- process
+     
+05-09-13 mma (testem6-V09-06-03)
+- PhysicsList: restore G4GammaConversionToMuons
+     
+19-06-13 mma (testem6-V09-06-02)
+- SteppingVerbose: use G4Step::GetSecondaryInCurrentStep()
+     
+07-06-13 mma (testem6-V09-06-01)
+- Cosmetic in SteppingAction.
+
+13-02-13 I.Hrivnacova (testem6-V09-06-00) 
+- Applied coding guidelines (virtual keyword, data members initialization)
+
+12-10-12 V.Ivant (testem6-V09-05-03)
+- Migration to the updated analysis tool and inplicit units
+     
+11-10-12 mma (testem6-V09-05-02)
+- coding conventions: virtual
+     
+06-04-12 mma (testem6-V09-05-01)
+- all classes : apply G4 coding conventions
+     
+11-03-12 mma (testem6-V09-05-00)
+- RunAction.hh and .cc : migrate to new g4tools histogramming system
+  Do not need aida anymore, nor G4ANALYSIS_USE 
+       
+08-11-11 mma (testem6-V09-04-00)
+- modify SteppingVerbose for OutOfWorld
+      
+09-11-10 I.Hrivnacova (testem6-V09-03-05)
+- Fixed compilation error on gcc-4.5.1.
+
+09-11-10 M.Asai (testem6-V09-03-04)
+- Fix AIDA file option.
+    
+06-06-10 J.Perl (testem6-V09-03-03)
+- Remove unused variable in EventAction
+
+03-06-10 J.Perl (testem6-V09-03-02)
+- Updated vis usage 
+
+21-05-10 mma (testem6-V09-03-01)
+- TestEm6.cc : introduction of G4UIExecutive
+
+31-03-10 V.Ivant (testem6-V09-03-00)
+- Remove obsolete MSC from comments line
+
+27-11-09 V.Ivant (testem6-V09-02-01)
+- H.Burkhardt add StackingAction allowing remove secondary particles;
+              cleanup PhysicsList for 9.3.
+
+13-05-09 V.Ivant (testem6-V09-02-00)
+- Increased upper limit of energy in the tables to 1000 TeV
+     
+18-09-08 mma (testem6-V09-01-02)
+- RunAction : change default histogram format (root)
+
+12-06-08 mma (testem6-V09-01-01)
+- Remove AIDA from GNUmakefile 
+     
+06-05-08 mma (testem6-V09-01-00)
+- README : update Aida informations
+     
+20-10-06 mma (testem6-V08-01-00) 
+- GNUmakefile : LOADLIBS
+      
+24-05-06 mma (testem6-V08-00-01)
+- register G4StepLimiter in PhysicsList
+     
+16-02-06 mma (testem6-V08-00-00)
+- add command /testem/phys/SetAnnihiToHadronFac
+
+06-12-05 Gabriele Cosmo
+- Trivial changes for support of CLHEP-2.0.X series.
+
+29-11-05 V.Ivant (testem6-V07-01-02)
+- Add GenericIon to the PhysicsList
+
+23-11-05 V.Ivant (testem6-V07-01-01)
+- extend test to mu+mu- and pi+pi- pair creation processes and G4hhIonisation
+  in order to test all processes of the subdirectory
+
+22-11-05 mma (testem6-V07-01-00)
+- update README for OpenScientist
+
+01-06-05 mma (testem6-V07-00-01)
+- RunAction : option "noErrors" for hbook files;
+     
+3rd May 2005  John Allison  (examples-V07-00-03)
+- Replaced vis manager with G4VisExecutive.
+
+02-03-05 mma (testem6-V07-00-00)
+- RunAction : put a protection for the creation of analysis factory;
+
+02 Dec 04: V.Ivant (testem6-V06-02-01)
+- Migration to cmath
+     
+27-09-04 mma (testem6-V06-02-00)
+- define correctly all UI subdirectories.
+- modifs in RunAction for hbook,root,XML (Jaida)
+     
+31-03-04 mma (testem6-V06-01-00)
+- remove direct interface with root
+     
+15-03-04 mma (testem6-V06-00-00)
+- example of histograms with ROOT: USE_ROOT
+
+25-11-03 V.Ivanchenko (testem6-V05-02-02)
+- Fix geometry (G.Cosmo)
+
+13-11-03 John Allison
+- Removed OPACS from Vis Manager.
+
+24-10-03 mma (testem6-V05-02-01)
+- PhysListEmStandard: AddProcess(Bremsstrahlung,-1,3,3) ..etc..
+     
+10-10-03 mma (testem6-V05-02-00)
+ - NOHIST replaced by ANALYSIS_USE
+ - cosmetic in material definitions
+ - SetMaterial() in constructor. all macros updated for /run/initialize
+     
+10-06-03 mma (testem6-V05-01-00)
+ - proper deletion of old geometry in case of update
+ - fixe compilation warning
+ 
+01-04-03 mma (testem6-V05-00-02)
+ - PVPlacement in logical mother even for the world
+ 
+20-02-03 V.Ivant (testem6-V05-00-01)
+ - Migration to cut per region
+
+12-02-03 mma (testem6-V05-00-00)
+ - DetectorConstruction: change volume name
+
+30-01-03 hbu
+ - PhysicsList: implementation of (e+,e-) annihilation to (mu+,mu-)
+ - macros run11.mac and run12.mac
+     
+12-12-02 mma (testem6-V04-01-00)
+ - migration to aida 3.0
+ - UI directory /testem/
+     
+05-06-02 mma (testem6-V04-00-01)
+ - old histograming package clhep/hist replaced by AIDA 2.2/anaphe
+
+23-05-02 mma (testem6-V04-00-00)
+ - creation
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/DetectorConstruction.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/DetectorConstruction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e44ff46a29ed7c2e42cd1d22b164fefcea06a863
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/DetectorConstruction.hh
@@ -0,0 +1,101 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/DetectorConstruction.hh
+/// \brief Definition of the DetectorConstruction class
+//
+// $Id: DetectorConstruction.hh 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef DetectorConstruction_h
+#define DetectorConstruction_h 1
+
+#include "Geant4/G4VUserDetectorConstruction.hh"
+#include "Geant4/globals.hh"
+
+class G4LogicalVolume;
+class G4Material;
+class G4UniformMagField;
+class G4UserLimits;
+class DetectorMessenger;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class DetectorConstruction : public G4VUserDetectorConstruction
+{
+  public:
+
+    DetectorConstruction(G4float);
+   ~DetectorConstruction();
+
+  public:
+
+     G4VPhysicalVolume* Construct() override;
+
+     void SetBoxDepth        (G4double);
+     void SetSizeXY       (G4double);
+     void SetMaterial    (const G4String&);
+     void SetMagField    (G4double);
+     void SetMaxStepSize (G4double);
+
+     void UpdateGeometry();
+
+  public:
+
+     const
+     G4VPhysicalVolume* GetWorld()      {return fP_Box;};
+
+     G4double           GetXYSize()       {return fBoxXY;};
+     G4double           GetBoxDepth()       {return fBoxDepth;};
+     G4Material*        GetMaterial()   {return fMaterial;};
+
+     void               PrintParameters();
+
+  private:
+
+     G4VPhysicalVolume*    fP_Box;
+     G4LogicalVolume*      fL_Box;
+
+     G4double              fBoxXY;
+     G4double              fBoxDepth;
+     G4Material*           fMaterial;
+     G4UniformMagField*    fMagField;
+     G4UserLimits*         fUserLimits;
+
+     DetectorMessenger* fDetectorMessenger;
+
+  private:
+
+     void               DefineMaterials();
+     G4VPhysicalVolume* ConstructVolumes();
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+
+#endif
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/DetectorMessenger.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/DetectorMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..7bc1a6c4b976d4082f51f7a66af3d955ee22e73c
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/DetectorMessenger.hh
@@ -0,0 +1,73 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/DetectorMessenger.hh
+/// \brief Definition of the DetectorMessenger class
+//
+// $Id: DetectorMessenger.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef DetectorMessenger_h
+#define DetectorMessenger_h 1
+
+#include "Geant4/globals.hh"
+#include "Geant4/G4UImessenger.hh"
+
+class DetectorConstruction;
+class G4UIdirectory;
+class G4UIcmdWithAString;
+class G4UIcmdWithADoubleAndUnit;
+class G4UIcmdWithoutParameter;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class DetectorMessenger: public G4UImessenger
+{
+  public:
+
+    DetectorMessenger(DetectorConstruction* );
+   ~DetectorMessenger();
+
+    void SetNewValue(G4UIcommand*, G4String) override;
+
+  private:
+
+    DetectorConstruction*      fDetector;
+
+    G4UIdirectory*             fTestemDir;
+    G4UIdirectory*             fDetDir;
+    G4UIcmdWithAString*        fMaterCmd;
+    G4UIcmdWithADoubleAndUnit* fSizeCmd;
+    G4UIcmdWithADoubleAndUnit* fMagFieldCmd;
+    G4UIcmdWithADoubleAndUnit* fMaxStepCmd;
+    G4UIcmdWithoutParameter*   fUpdateCmd;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PhysicsList.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PhysicsList.hh
new file mode 100644
index 0000000000000000000000000000000000000000..7520d00207ee70ff2635602c0343df98a00e1864
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PhysicsList.hh
@@ -0,0 +1,88 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file electromagnetic/TestEm6/include/PhysicsList.hh
+/// \brief Definition of the PhysicsList class
+//
+// $Id: PhysicsList.hh 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PhysicsList_h
+#define PhysicsList_h 1
+
+#include "Geant4/G4VModularPhysicsList.hh"
+#include "Geant4/globals.hh"
+#include "Geant4/G4EmConfigurator.hh"
+
+
+class G4VPhysicsConstructor;
+class StepMax;
+class PhysicsListMessenger;
+class G4GammaConversionToMuons;
+class G4GammaConversion;
+class G4AnnihiToMuPair;
+class G4eeToHadrons;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PhysicsList: public G4VModularPhysicsList
+{
+  public:
+    PhysicsList();
+    virtual ~PhysicsList();
+
+    // Construct particles
+    void ConstructParticle() override;
+    void ConstructProcess() override;
+
+    void AddPhysicsList(const G4String& name);
+    void ConstructHighEnergy();
+
+    void AddStepMax();
+
+    // Construct processes and register them
+
+    void SetGammaToMuPairFac(G4double);
+    void SetAnnihiToMuPairFac(G4double);
+    void SetAnnihiToHadronFac(G4double);
+
+  private:
+
+    G4VPhysicsConstructor* fEmPhysicsList;
+    G4VPhysicsConstructor* fDecayPhysicsList;
+    G4String fEmName;
+
+    StepMax* fStepMaxProcess;
+
+    PhysicsListMessenger*  fMes;
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PhysicsListMessenger.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PhysicsListMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..473e0fbd589b27e6f88778b2fa23e51ab96282df
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PhysicsListMessenger.hh
@@ -0,0 +1,72 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/PhysicsListMessenger.hh
+/// \brief Definition of the PhysicsListMessenger class
+//
+// $Id: PhysicsListMessenger.hh 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PhysicsListMessenger_h
+#define PhysicsListMessenger_h 1
+
+#include "Geant4/globals.hh"
+#include "Geant4/G4UImessenger.hh"
+
+class PhysicsList;
+class G4UIdirectory;
+class G4UIcmdWithADouble;
+class G4UIcmdWithAString;
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PhysicsListMessenger: public G4UImessenger
+{
+  public:
+
+    PhysicsListMessenger(PhysicsList*);
+   ~PhysicsListMessenger();
+
+    void SetNewValue(G4UIcommand*, G4String) override;
+
+  private:
+
+    PhysicsList*        fPhysList;
+
+    G4UIdirectory*      fPhysDir;
+    G4UIcmdWithADouble* fGammaToMuPairFacCmd;
+    G4UIcmdWithADouble* fGammaToEPairFacCmd;
+    G4UIcmdWithADouble* fAnnihiToMuPairFacCmd;
+    G4UIcmdWithADouble* fAnnihiToHadronFacCmd;
+    G4UIcmdWithAString* fListCmd;
+
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PrimaryGeneratorAction.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PrimaryGeneratorAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..a6460164a04f008fa5c60fe50b2c41f81f6c57e0
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PrimaryGeneratorAction.hh
@@ -0,0 +1,66 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/PrimaryGeneratorAction.hh
+/// \brief Definition of the PrimaryGeneratorAction class
+//
+// $Id: PrimaryGeneratorAction.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PrimaryGeneratorAction_h
+#define PrimaryGeneratorAction_h 1
+
+#include "Geant4/G4VUserPrimaryGeneratorAction.hh"
+#include "Geant4/globals.hh"
+
+class G4ParticleGun;
+class G4Event;
+class DetectorConstruction;
+class PrimaryGeneratorMessenger;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction
+{
+  public:
+    PrimaryGeneratorAction(DetectorConstruction*, G4double, G4int);    
+   ~PrimaryGeneratorAction();
+
+  public:
+    void GeneratePrimaries(G4Event*) override;
+
+  private:
+    G4ParticleGun*             fParticleGun;
+    DetectorConstruction*      fDetector;
+    PrimaryGeneratorMessenger* fGunMessenger;     
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PrimaryGeneratorMessenger.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PrimaryGeneratorMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..0743dd38b3a7ce4bf8cfaa83177d4dca0fbc90a3
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/PrimaryGeneratorMessenger.hh
@@ -0,0 +1,60 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/PrimaryGeneratorMessenger.hh
+/// \brief Definition of the PrimaryGeneratorMessenger class
+//
+// $Id: PrimaryGeneratorMessenger.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef PrimaryGeneratorMessenger_h
+#define PrimaryGeneratorMessenger_h 1
+
+#include "Geant4/G4UImessenger.hh"
+#include "Geant4/globals.hh"
+
+class PrimaryGeneratorAction;
+class G4UIdirectory;
+class G4UIcmdWithADouble;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class PrimaryGeneratorMessenger: public G4UImessenger
+{
+  public:
+    PrimaryGeneratorMessenger(PrimaryGeneratorAction*);
+   ~PrimaryGeneratorMessenger();
+    
+  private:
+    PrimaryGeneratorAction*    fAction;
+    G4UIdirectory*             fGunDir;     
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/ProcessesCount.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/ProcessesCount.hh
new file mode 100644
index 0000000000000000000000000000000000000000..bf1c90430068dfb24eee1f51431a52ff44a7f11c
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/ProcessesCount.hh
@@ -0,0 +1,62 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/ProcessesCount.hh
+/// \brief Definition of the ProcessesCount class
+//
+// $Id: ProcessesCount.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef ProcessesCount_HH
+#define ProcessesCount_HH
+
+#include "Geant4/globals.hh"
+#include <vector>
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class OneProcessCount
+{
+public:
+    OneProcessCount(G4String name) {fName=name; fCounter=0;};
+   ~OneProcessCount() {};
+
+public:
+    G4String  GetName()       {return fName;};
+    G4int     GetCounter()    {return fCounter;};
+    void      Count()         {fCounter++;};
+
+private:
+    G4String fName;            // process name
+    G4int    fCounter;         // process counter
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+typedef std::vector<OneProcessCount*> ProcessesCount;
+
+#endif
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/RunAction.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/RunAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..60c8c792aff684f4681a83fd5cdfafee10dfb81f
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/RunAction.hh
@@ -0,0 +1,80 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/RunAction.hh
+/// \brief Definition of the RunAction class
+//
+// $Id: RunAction.hh 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef RunAction_h
+#define RunAction_h 1
+
+#include "Geant4/G4UserRunAction.hh"
+#include "ProcessesCount.hh"
+#include "Geant4/globals.hh"
+#include "Geant4/G4ParticleDefinition.hh"
+#include "DetectorConstruction.hh"
+
+#include "Geant4/g4root.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class G4Run;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class RunAction : public G4UserRunAction
+{
+  public:
+    RunAction(DetectorConstruction*, G4double, G4double, G4int, G4String);
+   ~RunAction();
+
+  public:
+    void BeginOfRunAction(const G4Run*) override;
+    void EndOfRunAction(const G4Run*) override;
+    void CountProcesses(G4String);
+    
+  private:
+    DetectorConstruction* fDetector;
+    ProcessesCount*       fProcCounter;
+    G4AnalysisManager*    fAnalysis;
+    G4Material*           fMat;
+
+    G4double fMinE;
+    G4double fMaxE;
+    G4int    fnBin;
+
+    G4String fileName;
+
+    G4int fNtColId[3];
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StackingAction.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StackingAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..b0b44d3cacf2edcb3fed209d68a458fe6f61eacb
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StackingAction.hh
@@ -0,0 +1,55 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/StackingAction.hh
+/// \brief Definition of the StackingAction class
+//
+// $Id: StackingAction.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef StackingAction_h
+#define StackingAction_h 1
+
+#include "Geant4/G4UserStackingAction.hh"
+#include "Geant4/globals.hh"
+
+class G4Track;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class StackingAction : public G4UserStackingAction
+{
+  public:
+
+    StackingAction();
+   ~StackingAction();
+
+    G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track* ) override;
+
+};
+
+#endif
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StepMax.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StepMax.hh
new file mode 100644
index 0000000000000000000000000000000000000000..e4b0186e65fd9f37c96fd0b6116c6bdfe9ed4fb8
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StepMax.hh
@@ -0,0 +1,78 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file electromagnetic/TestEm6/include/StepMax.hh
+/// \brief Definition of the StepMax class
+//
+// $Id: StepMax.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef StepMax_h
+#define StepMax_h 1
+
+#include "Geant4/globals.hh"
+#include "Geant4/G4VDiscreteProcess.hh"
+#include "Geant4/G4ParticleDefinition.hh"
+#include "Geant4/G4Step.hh"
+
+class StepMaxMessenger;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class StepMax : public G4VDiscreteProcess
+{
+public:
+
+  StepMax(const G4String& processName = "UserMaxStep");
+  ~StepMax();
+
+  void SetMaxStep(G4double);
+
+  inline G4double GetMaxStep() { return fMaxChargedStep; };
+
+  G4bool IsApplicable(const G4ParticleDefinition&) override;
+
+  G4double PostStepGetPhysicalInteractionLength(const G4Track& track,
+                                                G4double previousStepSize,
+                                                G4ForceCondition* condition) override;
+
+  G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step&) override;
+
+  G4double GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*) override;
+
+private:
+
+  G4double fMaxChargedStep;
+  G4double fProposedStep;
+
+  StepMaxMessenger* fMessenger;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StepMaxMessenger.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StepMaxMessenger.hh
new file mode 100644
index 0000000000000000000000000000000000000000..ed1efaab45111c19a1fe34671fd3943dc7fb13dc
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/StepMaxMessenger.hh
@@ -0,0 +1,61 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file electromagnetic/TestEm6/include/StepMaxMessenger.hh
+/// \brief Definition of the StepMaxMessenger class
+//
+// $Id: StepMaxMessenger.hh 67268 2013-02-13 11:38:40Z ihrivnac $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef StepMaxMessenger_h
+#define StepMaxMessenger_h 1
+
+#include "Geant4/globals.hh"
+#include "Geant4/G4UImessenger.hh"
+
+class StepMax;
+class G4UIcmdWithADoubleAndUnit;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class StepMaxMessenger: public G4UImessenger
+{
+public:
+
+  StepMaxMessenger(StepMax*);
+  ~StepMaxMessenger();
+
+  void SetNewValue(G4UIcommand*, G4String) override;
+
+private:
+  StepMax* fStepMax;
+  G4UIcmdWithADoubleAndUnit* fStepMaxCmd;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/SteppingAction.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/SteppingAction.hh
new file mode 100644
index 0000000000000000000000000000000000000000..3431716b0ac34d0dd13c791590fdaaa2d90543bc
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/SteppingAction.hh
@@ -0,0 +1,67 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/SteppingAction.hh
+/// \brief Definition of the SteppingAction class
+//
+// $Id: SteppingAction.hh 66241 2012-12-13 18:34:42Z gunter $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef SteppingAction_h
+#define SteppingAction_h 1
+
+#include "Geant4/G4UserSteppingAction.hh"
+#include "Geant4/globals.hh"
+#include "Geant4/G4ParticleDefinition.hh"
+#include "Geant4/G4ParticleTypes.hh"
+
+class RunAction;
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class SteppingAction : public G4UserSteppingAction
+{
+public:
+  SteppingAction(RunAction*);
+ ~SteppingAction();
+
+  void UserSteppingAction(const G4Step*) override;
+    
+private:
+  RunAction* fRunAction;
+  G4double   fMuonMass;
+  G4double   fEMass;
+
+  G4MuonPlus*  muplus_def = G4MuonPlus::MuonPlusDefinition();
+  G4Positron* eplus_def  = G4Positron::PositronDefinition();
+
+  int tuple_index    = -1;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/SteppingVerbose.hh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/SteppingVerbose.hh
new file mode 100644
index 0000000000000000000000000000000000000000..280d0debd8c0ad029851831f3529c1ffc08b41a2
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/include/SteppingVerbose.hh
@@ -0,0 +1,55 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/include/SteppingVerbose.hh
+/// \brief Definition of the SteppingVerbose class
+//
+//
+// $Id: SteppingVerbose.hh 98272 2016-07-04 17:56:04Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#ifndef SteppingVerbose_h
+#define SteppingVerbose_h 1
+
+#include "Geant4/G4SteppingVerbose.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+class SteppingVerbose : public G4SteppingVerbose {
+
+public:
+
+  SteppingVerbose();
+ ~SteppingVerbose();
+
+  void TrackingStarted() override;
+  void StepInfo() override;
+};
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#endif
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/scripts/G4GammaToDiLeptonConversionTest.py b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/scripts/G4GammaToDiLeptonConversionTest.py
new file mode 100644
index 0000000000000000000000000000000000000000..85d632f68c002ddbccb88e772143ae25f13ad874
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/scripts/G4GammaToDiLeptonConversionTest.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import subprocess
+import argparse
+
+from math import log10
+
+import logging
+
+logging.basicConfig()
+_logger = logging.getLogger("GAMMA2DILEPTONPROD")
+_logger.setLevel("INFO")
+
+parser = argparse.ArgumentParser("DILEPTONPROD")
+
+parser.add_argument("--nevts", default=10000, help="Number of Events")
+parser.add_argument("--energies", default="[1000]", help="Energies List")
+parser.add_argument("--thickness", default="[0.3]", help="List of thicknesses")
+parser.add_argument("--scale", default="100000", help="Scale DiMuon Conversion Cross Section by factor")
+parser.add_argument("--debug", default=False, action="store_true", help="Debug Mode")
+parser.add_argument("--outputdir", default="G4GammaCVTestROOTFiles", help="Output Location")
+
+args = parser.parse_args()
+
+if args.debug:
+    _logger.setLevel("DEBUG")
+
+def get_list(argument):
+    import re
+    elements = re.findall(r'[\d|\.]+', argument)
+    return elements 
+
+energies = get_list(args.energies)
+thickness = get_list(args.thickness)
+
+try:
+    assert int(args.nevts) > 0
+except AssertionError:
+    _logger.error("Number of Events Must be a Positive Integer")
+    exit(0)
+except TypeError:
+    _logger.error("Invalid Input for Number of Events")
+    exit(0)
+
+_logger.debug("Creating Test Output Directory...")
+
+subprocess.check_call("mkdir -p {}".format(args.outputdir), shell=True)
+
+for energy in energies:
+    for t in thickness:
+        _logger.info("%s\n\nRunning Gamma->l+ l- Conversion in Aluminium with options:\n"+
+                     "\n\tNumber of Events         :\t%s "+
+                     "\n\tBeam Energy              :\t%s GeV"+
+                     "\n\tTarget Thickness         :\t%s mm"+
+                     "\n\tDiMuon XSec Scale Factor :\t%s"+
+                     "\n\tOutput Directory         :\t%s\n", 
+         '='*40, args.nevts, energy, t, args.scale, args.outputdir)
+        _logger.info('='*40)
+        subprocess.check_call("G4GammaToDiLeptonConversionTest.exe --nevts {} --energy {}".format(args.nevts, energy) +
+                              " --thickness {} --scale {} --outputdir {}".format(t, args.scale, args.outputdir), shell=True)
+
+_logger.info("Creating Single Combined Plots ROOT File...")
+
+import ROOT
+
+_output = ROOT.TFile.Open("G4GammaCVTestROOTFiles/G4GammaToDiLeptonConversionTest.root", "NEW")
+
+_histo_dim_dict = {'DiElectron' : {'Hist' : {'InvMass'    : (100, 0, 100),
+                                             'ThetaSep' : (50, 0, 6E-4),
+                                             'InvMass2D' : (100, 1, 3),
+                                             'Theta'  : (100, 0, 0.02),
+                                             'EFrac' : (100,0,1)},
+                                   'Symbol' : 'e'},
+                   'DiMuon'     : {'Hist' : {'InvMass'    : (150, 250, 550),
+                                             'Theta'  : (100, 0, 0.07), 
+                                             'ThetaSep' : (50, 0, 1E-1),
+                                             'InvMass2D' : (50, 200, 500),
+                                             'EFrac' : (100,0,1)},
+                                   'Symbol' : '#mu' } }
+
+for energy in energies:
+    for t in thickness:
+        _logger.debug("Opening file '%s'", "{}/TestEM6_Al_{}mm_{}GeV_{}.root".format(args.outputdir, t, energy, args.nevts))
+        _tmp = ROOT.TFile.Open("{}/TestEM6_Al_{}mm_{}GeV_{}.root".format(args.outputdir, t, energy, args.nevts))
+  
+        for particle in _histo_dim_dict.keys():
+             _logger.debug("Attempting to retrieve TTree '%s'", particle)
+             _tree = _tmp.Get(particle)
+             assert _tree.GetEntries() > 0, "No Entries Found!"
+        
+             hist_mm = ROOT.TH1F("{}_InvMass_{}GeV_{}mm_Al".format(particle, energy, t),
+                                 "{} Invariant Mass from {}GeV Photons in {}mm of Aluminium".format(particle, energy, t),
+                                 *_histo_dim_dict[particle]['Hist']['InvMass'])
+             hist_mm.GetXaxis().SetTitle("M_{%s}/MeV" % '{s}{s}'.format(s=_histo_dim_dict[particle]['Symbol']))
+             
+
+             hist_tp = ROOT.TH1F("{}_Angle_{}GeV_{}mm_Al".format(particle, energy, t),
+                                 "#gamma-{} Angle for {}GeV Photons in {}mm of Aluminium".format(_histo_dim_dict[particle]['Symbol']+'^{#pm}', energy, t),
+                                 *_histo_dim_dict[particle]['Hist']['Theta'])
+             hist_tp.GetXaxis().SetTitle("#theta(p_{%s}, p_{%s})" % ('#gamma', _histo_dim_dict[particle]['Symbol']+'^{#pm}'))
+
+             hist_efp = ROOT.TH1F("{}_EnergyFrac_{}GeV_{}mm_Al".format(particle, energy, t),
+                                  "Energy Fraction of {} for {}GeV Photons in {}mm of Aluminium".format(_histo_dim_dict[particle]['Symbol']+'^{#pm}', energy, t),
+                                  *_histo_dim_dict[particle]['Hist']['EFrac'])
+             hist_efp.GetXaxis().SetTitle("E_{%s}/E_{%s}" % (_histo_dim_dict[particle]['Symbol']+'^{#pm}', "#gamma"))
+             
+             hist_2d_sep_ang_mm = ROOT.TH2F("{}_Separation_Angle_vs_InvMass_{}GeV_{}mm_Al".format(particle, energy, t),
+                                            "Separation Angle Between {} Pair vs Invariant Mass for {}GeV Photons in {}mm of Aluminium".format(particle, energy, t),
+                                       _histo_dim_dict[particle]['Hist']['InvMass2D'][0],
+                                       _histo_dim_dict[particle]['Hist']['InvMass2D'][1],
+                                       _histo_dim_dict[particle]['Hist']['InvMass2D'][2], 
+                                       _histo_dim_dict[particle]['Hist']['ThetaSep'][0],
+                                       _histo_dim_dict[particle]['Hist']['ThetaSep'][1],
+                                       10*_histo_dim_dict[particle]['Hist']['ThetaSep'][2]/float(energy))
+
+             hist_2d_sep_ang_mm.GetXaxis().SetTitle("M_{%s}/MeV" % '{s}{s}'.format(s=_histo_dim_dict[particle]['Symbol']))
+             hist_2d_sep_ang_mm.GetYaxis().SetTitle("#theta(p_{%s},p_{%s})" % (_histo_dim_dict[particle]['Symbol']+'^{+}',
+                                                                                       _histo_dim_dict[particle]['Symbol']+'^{-}'))
+             hist_2d_sep_ang_mm.GetYaxis().SetTitleOffset(1.2)
+
+             for event in _tree: # ROOT broke when using Draw(hist >> hist_tmp(i,j,k)) method
+                 hist_mm.Fill(getattr(event, '{}_InvMass'.format(particle)))
+                 hist_tp.Fill(getattr(event, '{}_ThetaPlus'.format(particle)))
+                 hist_tp.Fill(getattr(event, '{}_ThetaMinus'.format(particle)))
+                 hist_efp.Fill(getattr(event, '{}_EnergyFracPlus'.format(particle)))
+                 hist_efp.Fill(getattr(event, '{}_EnergyFracMinus'.format(particle)))
+                 hist_2d_sep_ang_mm.Fill(getattr(event, '{}_InvMass'.format(particle)), getattr(event, '{}_ThetaSep'.format(particle)))
+
+             _output.cd()
+ 
+             hist_mm.Write(hist_mm.GetName(),ROOT.TObject.kOverwrite)
+             hist_tp.Write(hist_tp.GetName(),ROOT.TObject.kOverwrite)
+             hist_efp.Write(hist_efp.GetName(),ROOT.TObject.kOverwrite)
+             hist_2d_sep_ang_mm.Write(hist_2d_sep_ang_mm.GetName(),ROOT.TObject.kOverwrite)
+             
+             hist_mm.Delete()
+             hist_tp.Delete()
+             hist_efp.Delete()
+             hist_2d_sep_ang_mm.Delete()
+          
+        _tmp.Close()
+
+_output.Write()
+_output.Close()
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/scripts/run_gammaconv_test.sh b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/scripts/run_gammaconv_test.sh
new file mode 100644
index 0000000000000000000000000000000000000000..706ec1b8345a14b3dd6ebdb2781bbdea7270a39a
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/scripts/run_gammaconv_test.sh
@@ -0,0 +1,5 @@
+#!/usr/bin/env sh
+
+echo "Running G4GammaConversionTest..."
+python $G4GAMMATODILEPTONCONVERSIONTESTROOT/scripts/G4GammaToDiLeptonConversionTest.py --energies "[10, 100, 1000]" --thickness "[0.3, 1, 10]"
+echo "Test Complete."
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/DetectorConstruction.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/DetectorConstruction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..c4632d65773107846d89d16489b41b44c4a0533b
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/DetectorConstruction.cc
@@ -0,0 +1,222 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/DetectorConstruction.cc
+/// \brief Implementation of the DetectorConstruction class
+//
+// $Id: DetectorConstruction.cc 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "DetectorConstruction.hh"
+#include "DetectorMessenger.hh"
+#include "Geant4/G4NistManager.hh" 
+#include "Geant4/G4RunManager.hh" 
+
+#include "Geant4/G4Material.hh"
+#include "Geant4/G4Box.hh"
+#include "Geant4/G4LogicalVolume.hh"
+#include "Geant4/G4PVPlacement.hh"
+#include "Geant4/G4UniformMagField.hh"
+#include "Geant4/G4UserLimits.hh"
+
+#include "Geant4/G4GeometryManager.hh"
+#include "Geant4/G4PhysicalVolumeStore.hh"
+#include "Geant4/G4LogicalVolumeStore.hh"
+#include "Geant4/G4SolidStore.hh"
+
+#include "Geant4/G4UnitsTable.hh"
+#include "Geant4/G4SystemOfUnits.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+DetectorConstruction::DetectorConstruction(G4float thickness)
+:G4VUserDetectorConstruction(),
+ fP_Box(0), fL_Box(0), fBoxXY(10*m), fBoxDepth(thickness*mm), fMaterial(0), fMagField(0),
+ fUserLimits(0), fDetectorMessenger(0)
+{
+  DefineMaterials();
+  SetMaterial("Aluminium");
+  
+  // create UserLimits
+  fUserLimits = new G4UserLimits();
+
+  // create commands for interactive definition of the detector  
+  fDetectorMessenger = new DetectorMessenger(this);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+DetectorConstruction::~DetectorConstruction()
+{ delete fDetectorMessenger;}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4VPhysicalVolume* DetectorConstruction::Construct()
+{
+  return ConstructVolumes();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorConstruction::DefineMaterials()
+{  
+ G4double a, z, density; 
+
+ new G4Material("Aluminium", z= 13., a= 26.98*g/mole, density= 2.700*g/cm3);
+
+ G4cout << *(G4Material::GetMaterialTable()) << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+  
+G4VPhysicalVolume* DetectorConstruction::ConstructVolumes()
+{
+  G4GeometryManager::GetInstance()->OpenGeometry();
+  G4PhysicalVolumeStore::GetInstance()->Clean();
+  G4LogicalVolumeStore::GetInstance()->Clean();
+  G4SolidStore::GetInstance()->Clean();
+  
+  G4Box*
+  sBox = new G4Box("Container",                                //its name
+                   fBoxXY/2.,fBoxXY*2.,fBoxDepth/2.);        //its dimensions
+                                                                 
+  fL_Box = new G4LogicalVolume(sBox,                        //its shape
+                             fMaterial,                        //its material
+                             fMaterial->GetName());        //its name
+                             
+  fL_Box->SetUserLimits(fUserLimits);                             
+                                   
+  fP_Box = new G4PVPlacement(0,                                //no rotation
+                             G4ThreeVector(),                //at (0,0,0)
+                           fL_Box,                        //its logical volume
+                           fMaterial->GetName(),        //its name
+                           0,                           //its mother  volume
+                           false,                        //no boolean operation
+                           0);                                //copy number
+                           
+  PrintParameters();
+    
+  //
+  //always return the root volume
+  //
+  return fP_Box;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorConstruction::PrintParameters()
+{
+  G4cout << "\n The Box is " << G4BestUnit(fBoxDepth,"Length")
+         << " of " << fMaterial->GetName() << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorConstruction::SetMaterial(const G4String& name)
+{
+  G4cout << "###SetMaterial"  << G4endl;
+
+  // get the pointer to the existing material
+  G4Material* mat = G4Material::GetMaterial(name, false);
+  
+  // create the material by its name
+  if(!mat) { mat = G4NistManager::Instance()->FindOrBuildMaterial(name); }
+  
+  if (mat && mat != fMaterial) {
+    G4cout << "### New target material: " << mat->GetName() << G4endl;
+    fMaterial = mat;
+    if(fL_Box) {
+      fL_Box->SetMaterial(mat);
+      G4RunManager::GetRunManager()->PhysicsHasBeenModified();
+    } 
+  }
+}
+  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorConstruction::SetSizeXY(G4double value)
+{
+  fBoxXY = value;
+}  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorConstruction::SetBoxDepth(G4double value)
+{
+  fBoxDepth = value;
+}  
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "Geant4/G4FieldManager.hh"
+#include "Geant4/G4TransportationManager.hh"
+
+void DetectorConstruction::SetMagField(G4double fieldValue)
+{
+  //apply a global uniform magnetic field along Z axis
+  G4FieldManager* fieldMgr 
+   = G4TransportationManager::GetTransportationManager()->GetFieldManager();
+    
+  if (fMagField) delete fMagField;        //delete the existing magn field
+  
+  if (fieldValue!=0.)                        // create a new one if non nul
+    {
+      fMagField = new G4UniformMagField(G4ThreeVector(0.,0.,fieldValue)); 
+      fieldMgr->SetDetectorField(fMagField);
+      fieldMgr->CreateChordFinder(fMagField);
+    }
+   else
+    {
+      fMagField = 0;
+      fieldMgr->SetDetectorField(fMagField);
+    }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorConstruction::SetMaxStepSize(G4double val)
+{
+  // set the maximum allowed step size
+  //
+  if (val <= DBL_MIN)
+    { G4cout << "\n --->warning from SetMaxStepSize: maxStep " 
+             << val  << " out of range. Command refused" << G4endl;
+      return;
+    }       
+  fUserLimits->SetMaxAllowedStep(val);
+}  
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "Geant4/G4RunManager.hh" 
+ 
+void DetectorConstruction::UpdateGeometry()
+{
+  G4RunManager::GetRunManager()->DefineWorldVolume(ConstructVolumes());
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/DetectorMessenger.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/DetectorMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..82121a08553467333d5eb190f17fa677a8e8ad2f
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/DetectorMessenger.cc
@@ -0,0 +1,126 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/DetectorMessenger.cc
+/// \brief Implementation of the DetectorMessenger class
+//
+// $Id: DetectorMessenger.cc 67268 2013-02-13 11:38:40Z ihrivnac $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "DetectorMessenger.hh"
+
+#include "DetectorConstruction.hh"
+#include "Geant4/G4UIdirectory.hh"
+#include "Geant4/G4UIcmdWithAString.hh"
+#include "Geant4/G4UIcmdWithADoubleAndUnit.hh"
+#include "Geant4/G4UIcmdWithoutParameter.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+DetectorMessenger::DetectorMessenger(DetectorConstruction * Det)
+:G4UImessenger(),fDetector(Det),
+ fTestemDir(0),
+ fDetDir(0),    
+ fMaterCmd(0),
+ fSizeCmd(0),
+ fMagFieldCmd(0),
+ fMaxStepCmd(0),    
+ fUpdateCmd(0)
+{ 
+  fTestemDir = new G4UIdirectory("/testem/");
+  fTestemDir->SetGuidance(" detector control.");
+  
+  fDetDir = new G4UIdirectory("/testem/det/");
+  fDetDir->SetGuidance("detector construction commands");
+       
+  fMaterCmd = new G4UIcmdWithAString("/testem/det/setMat",this);
+  fMaterCmd->SetGuidance("Select material of the box.");
+  fMaterCmd->SetParameterName("choice",false);
+  fMaterCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+  
+  fSizeCmd = new G4UIcmdWithADoubleAndUnit("/testem/det/setSize",this);
+  fSizeCmd->SetGuidance("Set size of the box");
+  fSizeCmd->SetParameterName("Size",false);
+  fSizeCmd->SetRange("Size>0.");
+  fSizeCmd->SetUnitCategory("Length");
+  fSizeCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+      
+  fMagFieldCmd = new G4UIcmdWithADoubleAndUnit("/testem/det/setField",this);  
+  fMagFieldCmd->SetGuidance("Define magnetic field.");
+  fMagFieldCmd->SetGuidance("Magnetic field will be in Z direction.");
+  fMagFieldCmd->SetParameterName("Bz",false);
+  fMagFieldCmd->SetUnitCategory("Magnetic flux density");
+  fMagFieldCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+    
+  fUpdateCmd = new G4UIcmdWithoutParameter("/testem/det/update",this);
+  fUpdateCmd->SetGuidance("Update calorimeter geometry.");
+  fUpdateCmd->SetGuidance("This command MUST be applied before \"beamOn\" ");
+  fUpdateCmd->SetGuidance("if you changed geometrical value(s).");
+  fUpdateCmd->AvailableForStates(G4State_Idle);
+      
+  fMaxStepCmd = new G4UIcmdWithADoubleAndUnit("/testem/tracking/stepMax",this);
+  fMaxStepCmd->SetGuidance("Set max allowed step size");
+  fMaxStepCmd->SetParameterName("Size",false);
+  fMaxStepCmd->SetRange("Size>0.");
+  fMaxStepCmd->SetUnitCategory("Length");
+  fMaxStepCmd->AvailableForStates(G4State_Idle);   
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+DetectorMessenger::~DetectorMessenger()
+{
+  delete fMaterCmd;
+  delete fSizeCmd; 
+  delete fMagFieldCmd;
+  delete fUpdateCmd;
+  delete fMaxStepCmd;
+  delete fDetDir;  
+  delete fTestemDir;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void DetectorMessenger::SetNewValue(G4UIcommand* command,G4String newValue)
+{ 
+  if( command == fMaterCmd )
+   { fDetector->SetMaterial(newValue);}
+   
+  if( command == fSizeCmd )
+   { fDetector->SetBoxDepth(fSizeCmd->GetNewDoubleValue(newValue));}
+   
+  if( command == fMagFieldCmd )
+   { fDetector->SetMagField(fMagFieldCmd->GetNewDoubleValue(newValue));}
+     
+  if( command == fUpdateCmd )
+   { fDetector->UpdateGeometry(); }
+   
+  if( command == fMaxStepCmd )
+   { fDetector->SetMaxStepSize(fMaxStepCmd->GetNewDoubleValue(newValue));}   
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PhysicsList.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PhysicsList.cc
new file mode 100644
index 0000000000000000000000000000000000000000..22aa8c6b7054513d1a941fc32a448d04ebd12241
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PhysicsList.cc
@@ -0,0 +1,286 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/PhysicsList.cc
+/// \brief Implementation of the PhysicsList class
+//
+// $Id: PhysicsList.cc 100285 2016-10-17 08:42:54Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "PhysicsList.hh"
+#include "PhysicsListMessenger.hh"
+
+#include "Geant4/G4EmStandardPhysics.hh"
+#include "Geant4/G4EmStandardPhysics_option1.hh"
+#include "Geant4/G4EmStandardPhysics_option2.hh"
+#include "Geant4/G4EmStandardPhysics_option3.hh"
+#include "Geant4/G4EmStandardPhysics_option4.hh"
+#include "Geant4/G4EmStandardPhysicsGS.hh"
+#include "Geant4/G4EmStandardPhysicsWVI.hh"
+#include "Geant4/G4EmStandardPhysicsSS.hh"
+#include "Geant4/G4EmLivermorePhysics.hh"
+#include "Geant4/G4EmPenelopePhysics.hh"
+#include "Geant4/G4EmLowEPPhysics.hh"
+
+#include "Geant4/G4DecayPhysics.hh"
+
+#include "Geant4/G4ParticleDefinition.hh"
+#include "Geant4/G4ProcessManager.hh"
+#include "Geant4/G4ParticleTable.hh"
+#include "Geant4/G4ProcessTable.hh"
+
+#include "Geant4/G4Gamma.hh"
+#include "Geant4/G4Electron.hh"
+#include "Geant4/G4Positron.hh"
+
+#include "Geant4/G4GammaConversionToMuons.hh"
+#include "Geant4/G4GammaConversion.hh"
+
+#include "Geant4/G4AnnihiToMuPair.hh"
+#include "Geant4/G4eeToHadrons.hh"
+
+#include "Geant4/G4SystemOfUnits.hh"
+#include "Geant4/G4UnitsTable.hh"
+#include "Geant4/G4LossTableManager.hh"
+
+#include "StepMax.hh"
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsList::PhysicsList() : G4VModularPhysicsList(),
+ fEmPhysicsList(0),
+ fDecayPhysicsList(0),
+ fStepMaxProcess(0),
+ fMes(0)
+{
+  G4LossTableManager::Instance()->SetVerbose(1);
+
+  defaultCutValue = 1.*km;
+  fMes = new PhysicsListMessenger(this);
+
+  fStepMaxProcess = new StepMax();
+
+  fDecayPhysicsList = new G4DecayPhysics();
+
+  SetVerboseLevel(2);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsList::~PhysicsList()
+{
+  delete fMes;
+  delete fDecayPhysicsList;
+  delete fEmPhysicsList;
+  delete fStepMaxProcess;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructParticle()
+{
+  fDecayPhysicsList->ConstructParticle();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructProcess()
+{
+  AddTransportation();
+
+  if(fEmPhysicsList) fEmPhysicsList->ConstructProcess();
+  fDecayPhysicsList->ConstructProcess();
+
+  AddStepMax();
+
+  ConstructHighEnergy();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::ConstructHighEnergy()
+{
+  const G4ParticleDefinition* particle = G4Gamma::Gamma();
+  G4ProcessManager* pmanager = particle->GetProcessManager();
+
+  pmanager->AddDiscreteProcess(new G4GammaConversionToMuons);
+  pmanager->AddDiscreteProcess(new G4GammaConversion);
+
+  particle = G4Positron::Positron();
+  pmanager = particle->GetProcessManager();
+
+  pmanager->AddDiscreteProcess(new G4AnnihiToMuPair);
+  pmanager->AddDiscreteProcess(new G4eeToHadrons);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetGammaToMuPairFac(G4double fac)
+{
+  G4ProcessTable* theProcessTable = G4ProcessTable::GetProcessTable();
+  G4GammaConversionToMuons* gammaToMuPairProcess = (G4GammaConversionToMuons*)
+                       theProcessTable->FindProcess("GammaToMuPair","gamma");
+  if(gammaToMuPairProcess) gammaToMuPairProcess->SetCrossSecFactor(fac);
+  else G4cout 
+   << "Warning. No process GammaToMuPair found, SetGammaToMuPairFac was ignored"
+   << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetAnnihiToMuPairFac(G4double fac)
+{
+  G4ProcessTable* theProcessTable = G4ProcessTable::GetProcessTable();
+  G4AnnihiToMuPair* annihiToMuPairProcess = (G4AnnihiToMuPair*)
+                         theProcessTable->FindProcess("AnnihiToMuPair","e+");
+  if(annihiToMuPairProcess) annihiToMuPairProcess->SetCrossSecFactor(fac);
+  else G4cout 
+   << "Warning. No process AnnihiToMuPair found, SetAnnihiToMuPairFac ignored"
+   << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::SetAnnihiToHadronFac(G4double fac)
+{
+  G4ProcessTable* theProcessTable = G4ProcessTable::GetProcessTable();
+  G4eeToHadrons* eehadProcess = (G4eeToHadrons*)
+                              theProcessTable->FindProcess("ee2hadr","e+");
+  if(eehadProcess) eehadProcess->SetCrossSecFactor(fac);
+  else G4cout
+    << "Warning. No process ee2hadr found, SetAnnihiToHadronFac was ignored"
+    << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::AddPhysicsList(const G4String& name)
+{
+  if (verboseLevel>1) {
+    G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
+  }
+
+  if (name == fEmName) {
+    return;
+
+  } else if (name == "emstandard_opt0") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysics();
+
+  } else if (name == "emstandard_opt1") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysics_option1();
+
+  } else if (name == "emstandard_opt2") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysics_option2();
+
+  } else if (name == "emstandard_opt3") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysics_option3();
+
+  } else if (name == "emstandard_opt4") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysics_option4();
+
+  } else if (name == "emlivermore") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmLivermorePhysics();
+
+  } else if (name == "empenelope") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmPenelopePhysics();
+
+  } else if (name == "emlowenergy") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmLowEPPhysics();
+
+  } else if (name == "emstandardGS") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysicsGS();
+
+  } else if (name == "emstandardSS") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysicsSS();
+  
+  } else if (name == "emstandardWVI") {
+
+    fEmName = name;
+    delete fEmPhysicsList;
+    fEmPhysicsList = new G4EmStandardPhysicsWVI();
+  
+  } else {
+
+    G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
+           << " is not defined"
+           << G4endl;
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsList::AddStepMax()
+{
+  //Step limitation seen as a process
+
+  auto particleIterator=GetParticleIterator();
+  particleIterator->reset();
+  while ((*particleIterator)())
+  {
+    G4ParticleDefinition* particle = particleIterator->value();
+    G4ProcessManager* pmanager = particle->GetProcessManager();
+
+    if (fStepMaxProcess->IsApplicable(*particle))
+    {
+      pmanager ->AddDiscreteProcess(fStepMaxProcess);
+    }
+  }
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PhysicsListMessenger.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PhysicsListMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..427d493cd71bd4138608d89257c7fc065d01e2f2
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PhysicsListMessenger.cc
@@ -0,0 +1,126 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/PhysicsListMessenger.cc
+/// \brief Implementation of the PhysicsListMessenger class
+//
+// $Id: PhysicsListMessenger.cc 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "PhysicsListMessenger.hh"
+
+#include "PhysicsList.hh"
+#include "Geant4/G4UIdirectory.hh"
+#include "Geant4/G4UIcmdWithADouble.hh"
+#include "Geant4/G4UIcmdWithAString.hh"
+
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsListMessenger::PhysicsListMessenger(PhysicsList* physL)
+:G4UImessenger(),fPhysList(physL),
+ fPhysDir(0),    
+ fGammaToMuPairFacCmd(0),
+ fAnnihiToMuPairFacCmd(0),
+ fAnnihiToHadronFacCmd(0),
+ fListCmd(0)
+{
+  fPhysDir = new G4UIdirectory("/testem/phys/");
+  fPhysDir->SetGuidance("physics list commands");
+ 
+  fGammaToMuPairFacCmd=new G4UIcmdWithADouble
+                                      ("/testem/phys/SetGammaToMuPairFac",this);
+  fGammaToMuPairFacCmd->SetGuidance(
+         "Set factor to artificially increase the GammaToMuPair cross section");
+  fGammaToMuPairFacCmd->SetParameterName("GammaToMuPairFac",false);
+  fGammaToMuPairFacCmd->SetRange("GammaToMuPairFac>0.0");
+  fGammaToMuPairFacCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+  fGammaToEPairFacCmd=new G4UIcmdWithADouble
+                                      ("/testem/phys/SetGammaToEPairFac",this);
+  fGammaToEPairFacCmd->SetGuidance(
+         "Set factor to artificially increase the GammaToEPair cross section");
+  fGammaToEPairFacCmd->SetParameterName("GammaToEPairFac",false);
+  fGammaToEPairFacCmd->SetRange("GammaToMuPairFac>0.0");
+  fGammaToEPairFacCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+  fAnnihiToMuPairFacCmd=new G4UIcmdWithADouble
+                                     ("/testem/phys/SetAnnihiToMuPairFac",this);
+  fAnnihiToMuPairFacCmd->SetGuidance(
+        "Set factor to artificially increase the AnnihiToMuPair cross section");
+  fAnnihiToMuPairFacCmd->SetParameterName("AnnihiToMuPairFac",false);
+  fAnnihiToMuPairFacCmd->SetRange("AnnihiToMuPairFac>0.0");
+  fAnnihiToMuPairFacCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+  
+  fAnnihiToHadronFacCmd=
+    new G4UIcmdWithADouble("/testem/phys/SetAnnihiToHadronFac",this);
+  fAnnihiToHadronFacCmd->SetGuidance(
+       "Set factor to artificially increase the AnnihiToHadrons cross section");
+  fAnnihiToHadronFacCmd->SetParameterName("AnnihiToHadFac",false);
+  fAnnihiToHadronFacCmd->SetRange("AnnihiToHadFac>0.0");
+  fAnnihiToHadronFacCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+
+  fListCmd = new G4UIcmdWithAString("/testem/phys/addPhysics",this);
+  fListCmd->SetGuidance("Add modula physics list.");
+  fListCmd->SetParameterName("PList",false);
+  fListCmd->AvailableForStates(G4State_PreInit);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PhysicsListMessenger::~PhysicsListMessenger()
+{
+  delete fGammaToMuPairFacCmd;
+  delete fAnnihiToMuPairFacCmd;
+  delete fAnnihiToHadronFacCmd;  
+  delete fPhysDir;  
+  delete fListCmd;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PhysicsListMessenger::SetNewValue(G4UIcommand* command,
+                                          G4String newValue)
+{ 
+  if(command == fGammaToMuPairFacCmd)
+   { fPhysList->SetGammaToMuPairFac(
+          fGammaToMuPairFacCmd->GetNewDoubleValue(newValue));}   
+
+  if( command == fAnnihiToMuPairFacCmd)
+   { fPhysList->SetAnnihiToMuPairFac(
+                          fAnnihiToMuPairFacCmd->GetNewDoubleValue(newValue));}
+                          
+  if( command == fAnnihiToHadronFacCmd)
+   { fPhysList->SetAnnihiToHadronFac(
+                          fAnnihiToHadronFacCmd->GetNewDoubleValue(newValue));}
+
+  if( command == fListCmd )
+   { fPhysList->AddPhysicsList(newValue); }
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PrimaryGeneratorAction.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PrimaryGeneratorAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..9141a2f4366cd26aa2270fc9b31c05a62a961d89
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PrimaryGeneratorAction.cc
@@ -0,0 +1,84 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file electromagnetic/TestEm6/src/PrimaryGeneratorAction.cc
+/// \brief Implementation of the PrimaryGeneratorAction class
+//
+// $Id: PrimaryGeneratorAction.cc 67268 2013-02-13 11:38:40Z ihrivnac $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "PrimaryGeneratorAction.hh"
+
+#include "DetectorConstruction.hh"
+#include "PrimaryGeneratorMessenger.hh"
+
+#include "Geant4/G4Event.hh"
+#include "Geant4/G4ParticleGun.hh"
+#include "Geant4/G4ParticleTable.hh"
+#include "Geant4/G4ParticleDefinition.hh"
+#include "Geant4/G4SystemOfUnits.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorAction::PrimaryGeneratorAction(
+                                               DetectorConstruction* DC, G4double energy, G4int nevts)
+:G4VUserPrimaryGeneratorAction(),                                              
+ fParticleGun(0),
+ fDetector(DC),
+ fGunMessenger(0)
+{
+  fParticleGun  = new G4ParticleGun(nevts);
+  G4ParticleDefinition* particle
+           = G4ParticleTable::GetParticleTable()->FindParticle("gamma");
+  fParticleGun->SetParticleDefinition(particle);
+  fParticleGun->SetParticleEnergy(energy*GeV);  
+  fParticleGun->SetParticleMomentumDirection(G4ThreeVector(1.,0.,0.));
+    
+  //create a messenger for this class
+  fGunMessenger = new PrimaryGeneratorMessenger(this);  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorAction::~PrimaryGeneratorAction()
+{
+  delete fParticleGun;
+  delete fGunMessenger;  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void PrimaryGeneratorAction::GeneratePrimaries(G4Event* anEvent)
+{
+  //this function is called at the begining of event
+  //
+  fParticleGun->SetParticlePosition(G4ThreeVector(-0.5*(fDetector->GetBoxDepth()),0.*cm,0.*cm));  
+  fParticleGun->GeneratePrimaryVertex(anEvent); 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PrimaryGeneratorMessenger.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PrimaryGeneratorMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e778f31a20b21254b911393ad7e1befd8ebe8267
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/PrimaryGeneratorMessenger.cc
@@ -0,0 +1,59 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/PrimaryGeneratorMessenger.cc
+/// \brief Implementation of the PrimaryGeneratorMessenger class
+//
+// $Id: PrimaryGeneratorMessenger.cc 67268 2013-02-13 11:38:40Z ihrivnac $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "PrimaryGeneratorMessenger.hh"
+
+#include "PrimaryGeneratorAction.hh"
+#include "Geant4/G4UIdirectory.hh"
+#include "Geant4/G4UIcmdWithADouble.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorMessenger::PrimaryGeneratorMessenger(
+                                             PrimaryGeneratorAction* Gun)
+:G4UImessenger(),fAction(Gun),
+ fGunDir(0)
+{ 
+  fGunDir = new G4UIdirectory("/testem/gun/");
+  fGunDir->SetGuidance("gun control");
+
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+PrimaryGeneratorMessenger::~PrimaryGeneratorMessenger()
+{
+  delete fGunDir;  
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/RunAction.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/RunAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..8ba8a0f73b41b12eba8074df76b4c3d8a75c45a9
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/RunAction.cc
@@ -0,0 +1,172 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/RunAction.cc
+/// \brief Implementation of the RunAction class
+//
+// $Id: RunAction.cc 83428 2014-08-21 15:46:01Z gcosmo $
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "Geant4/G4SystemOfUnits.hh"  
+#include "Geant4/G4PhysicalConstants.hh"  
+#include "Geant4/G4EmCalculator.hh" 
+#include "Geant4/G4ParticleTable.hh" 
+#include "Geant4/G4ParticleDefinition.hh" 
+#include "Geant4/G4Positron.hh" 
+#include "Geant4/G4AnnihiToMuPair.hh"  
+#include "Geant4/G4eeToHadrons.hh"  
+#include "Geant4/G4eeToHadronsModel.hh"  
+#include "Geant4/G4eBremsstrahlung.hh"  
+
+#include "RunAction.hh"
+#include "Geant4/G4Run.hh"
+#include "Geant4/G4RunManager.hh"
+#include "Geant4/G4MuonMinus.hh"
+
+#include <sstream>
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+RunAction::RunAction(DetectorConstruction* det, G4double e, G4double t, G4int n, G4String dir)
+ : G4UserRunAction(),fDetector(det),fProcCounter(0),fAnalysis(0),fMat(0)
+{
+  std::stringstream file_name;
+  file_name << dir;
+  file_name << "/TestEM6_Al_";
+  file_name << t;
+  file_name << "mm_";
+  file_name << e;
+  file_name << "GeV_";
+  file_name << n;
+  file_name << ".root";
+
+  fileName = file_name.str();
+
+  fMinE = 40*GeV;
+  fMaxE = 10000*GeV;
+  fnBin = 10000;
+  fNtColId[0] = fNtColId[1] = fNtColId[2] = 0;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+RunAction::~RunAction()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::BeginOfRunAction(const G4Run* aRun)
+{  
+  G4cout << "### Run " << aRun->GetRunID() << " start." << G4endl;
+
+  //get material
+  //
+  fMat = fDetector->GetMaterial();
+  G4cout << "###RunAction::BeginOfRunAction  Material:" 
+         << fMat->GetName() << G4endl;
+ 
+  fProcCounter = new ProcessesCount;
+
+  fAnalysis = G4AnalysisManager::Instance();
+  
+  // Open an output file
+  //
+  fAnalysis->OpenFile(fileName);    
+  fAnalysis->SetVerboseLevel(2);
+
+  //===========================================================
+  
+  fAnalysis->CreateNtuple("DiMuon", "DiMuon Production");
+  fAnalysis->CreateNtupleDColumn("DiMuon_EnergyFracPlus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_EnergyFracMinus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_ThetaPlus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_ThetaMinus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_InvMass");
+  fAnalysis->CreateNtupleDColumn("DiMuon_PX_Plus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_PY_Plus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_PZ_Plus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_PX_Minus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_PY_Minus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_PZ_Minus");
+  fAnalysis->CreateNtupleDColumn("DiMuon_ThetaSep"); //Separation Angle Between DiLeptons
+  fAnalysis->FinishNtuple();
+ 
+  fAnalysis->CreateNtuple("DiElectron", "DiElectron Production");
+  fAnalysis->CreateNtupleDColumn("DiElectron_EnergyFracPlus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_EnergyFracMinus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_ThetaPlus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_ThetaMinus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_InvMass");
+  fAnalysis->CreateNtupleDColumn("DiElectron_PX_Plus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_PY_Plus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_PZ_Plus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_PX_Minus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_PY_Minus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_PZ_Minus");
+  fAnalysis->CreateNtupleDColumn("DiElectron_ThetaSep"); //Separation Angle Between DiLeptons
+  fAnalysis->FinishNtuple();
+
+  G4cout << "\n----> NTuple file is opened in " << fileName << G4endl;   
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::CountProcesses(G4String procName)
+{
+  //does the process  already encounted ?
+  //
+  size_t nbProc = fProcCounter->size();
+  size_t i = 0;
+  while ((i<nbProc)&&((*fProcCounter)[i]->GetName()!=procName)) i++;
+  if (i == nbProc) fProcCounter->push_back( new OneProcessCount(procName));
+  
+  (*fProcCounter)[i]->Count();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void RunAction::EndOfRunAction(const G4Run*)
+{
+  G4double countTot = 0.;
+  G4cout << "\n Number of process calls --->";
+  for (size_t i=0; i< fProcCounter->size();i++) {
+        G4String procName = (*fProcCounter)[i]->GetName();
+        if (procName != "Transportation") {
+          G4int count    = (*fProcCounter)[i]->GetCounter(); 
+          G4cout << "\t" << procName << " : " << count;
+          countTot += count;
+        }
+  }
+ 
+  fAnalysis->Write();
+  fAnalysis->CloseFile();
+
+  delete fAnalysis;
+  G4cout << G4endl;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StackingAction.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StackingAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f960b07699df49ec7ab5ca3b48fd15b7a25a1d25
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StackingAction.cc
@@ -0,0 +1,62 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/StackingAction.cc
+/// \brief Implementation of the StackingAction class
+//
+// $Id: StackingAction.cc 67268 2013-02-13 11:38:40Z ihrivnac $
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "StackingAction.hh"
+#include "Geant4/G4Track.hh"
+#include "Geant4/G4TrackStatus.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StackingAction::StackingAction()
+ : G4UserStackingAction()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StackingAction::~StackingAction()
+{}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4ClassificationOfNewTrack 
+StackingAction::ClassifyNewTrack(const G4Track* aTrack)
+{
+  G4ClassificationOfNewTrack     classification = fUrgent;
+  
+  // kill all secondaries
+  if(aTrack->GetParentID() != 0) classification = fKill;
+  
+  return classification;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StepMax.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StepMax.cc
new file mode 100644
index 0000000000000000000000000000000000000000..2790d7d7898eac593f9029be4cc569714073f7ef
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StepMax.cc
@@ -0,0 +1,98 @@
+//
+// ********************************************************************
+// * License and Disclaimer                                           *
+// *                                                                  *
+// * The  Geant4 software  is  copyright of the Copyright Holders  of *
+// * the Geant4 Collaboration.  It is provided  under  the terms  and *
+// * conditions of the Geant4 Software License,  included in the file *
+// * LICENSE and available at  http://cern.ch/geant4/license .  These *
+// * include a list of copyright holders.                             *
+// *                                                                  *
+// * Neither the authors of this software system, nor their employing *
+// * institutes,nor the agencies providing financial support for this *
+// * work  make  any representation or  warranty, express or implied, *
+// * regarding  this  software system or assume any liability for its *
+// * use.  Please see the license in the file  LICENSE  and URL above *
+// * for the full disclaimer and the limitation of liability.         *
+// *                                                                  *
+// * This  code  implementation is the result of  the  scientific and *
+// * technical work of the GEANT4 collaboration.                      *
+// * By using,  copying,  modifying or  distributing the software (or *
+// * any work based  on the software)  you  agree  to acknowledge its *
+// * use  in  resulting  scientific  publications,  and indicate your *
+// * acceptance of all terms of the Geant4 Software license.          *
+// ********************************************************************
+//
+/// \file electromagnetic/TestEm6/src/StepMax.cc
+/// \brief Implementation of the StepMax class
+//
+// $Id: StepMax.cc 67268 2013-02-13 11:38:40Z ihrivnac $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "StepMax.hh"
+#include "StepMaxMessenger.hh"
+#include "Geant4/G4VPhysicalVolume.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::StepMax(const G4String& processName)
+  : G4VDiscreteProcess(processName),
+    fMaxChargedStep(DBL_MAX),
+    fMessenger(0)
+{
+  fMessenger = new StepMaxMessenger(this);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMax::~StepMax() 
+{ 
+  delete fMessenger; 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4bool StepMax::IsApplicable(const G4ParticleDefinition& particle)
+{
+  return (particle.GetPDGCharge() != 0.);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void StepMax::SetMaxStep(G4double step) 
+{
+  fMaxChargedStep = step;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double 
+StepMax::PostStepGetPhysicalInteractionLength(const G4Track&,
+                                              G4double,
+                                              G4ForceCondition* condition)
+{
+  // condition is set to "Not Forced"
+  *condition = NotForced;
+  fProposedStep = fMaxChargedStep;
+
+  return fProposedStep;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4VParticleChange* StepMax::PostStepDoIt(const G4Track& aTrack, const G4Step&)
+{
+  aParticleChange.Initialize(aTrack);
+  return &aParticleChange;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+G4double StepMax::GetMeanFreePath(const G4Track&, G4double, G4ForceCondition*)
+{
+  return 0.;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StepMaxMessenger.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StepMaxMessenger.cc
new file mode 100644
index 0000000000000000000000000000000000000000..d99fcda03a7efb2b4ca836cd2e6ce456235e17fb
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/StepMaxMessenger.cc
@@ -0,0 +1,68 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/StepMaxMessenger.cc
+/// \brief Implementation of the StepMaxMessenger class
+//
+// $Id: StepMaxMessenger.cc 67268 2013-02-13 11:38:40Z ihrivnac $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "StepMaxMessenger.hh"
+
+#include "StepMax.hh"
+#include "Geant4/G4UIcmdWithADoubleAndUnit.hh"
+#include "Geant4/globals.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMaxMessenger::StepMaxMessenger(StepMax* stepM)
+  :G4UImessenger(),fStepMax(stepM),fStepMaxCmd(0)
+{ 
+  fStepMaxCmd = new G4UIcmdWithADoubleAndUnit("/testem/stepmax",this);
+  fStepMaxCmd->SetGuidance("Set max allowed step length");
+  fStepMaxCmd->SetParameterName("mxStep",false);
+  fStepMaxCmd->SetRange("mxStep>0.");
+  fStepMaxCmd->SetUnitCategory("Length");
+  fStepMaxCmd->AvailableForStates(G4State_PreInit,G4State_Idle);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+StepMaxMessenger::~StepMaxMessenger()
+{
+  delete fStepMaxCmd;
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void StepMaxMessenger::SetNewValue(G4UIcommand* command, G4String newValue)
+{ 
+  if (command == fStepMaxCmd)
+    { fStepMax->SetMaxStep(fStepMaxCmd->GetNewDoubleValue(newValue));}
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/SteppingAction.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/SteppingAction.cc
new file mode 100644
index 0000000000000000000000000000000000000000..906dbb61f6176bebb991c2e86f67c19411c071ee
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/SteppingAction.cc
@@ -0,0 +1,132 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/SteppingAction.cc
+/// \brief Implementation of the SteppingAction class
+//
+// $Id: SteppingAction.cc 83428 2014-08-21 15:46:01Z gcosmo $
+//
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "SteppingAction.hh"
+#include "RunAction.hh"
+#include "Geant4/G4SteppingManager.hh"
+#include "Geant4/G4VProcess.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingAction::SteppingAction(RunAction* RuAct)
+:G4UserSteppingAction(),fRunAction(RuAct)
+{ 
+ fMuonMass = G4MuonPlus::MuonPlus()->GetPDGMass();
+ fEMass = G4Positron::Positron()->GetPDGMass();
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingAction::~SteppingAction()
+{ }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingAction::UserSteppingAction(const G4Step* aStep)
+{
+ const G4VProcess* process = aStep->GetPostStepPoint()->GetProcessDefinedStep();
+ if (process == 0) return;  
+ G4String processName = process->GetProcessName();
+ fRunAction->CountProcesses(processName); //count processes
+  
+ if (processName != "GammaToMuPair" && processName != "conv") return;
+ 
+ G4StepPoint* PrePoint = aStep->GetPreStepPoint();  
+ G4double      EGamma  = PrePoint->GetTotalEnergy();
+ G4ThreeVector PGamma  = PrePoint->GetMomentum();
+    
+ G4double      Eplus(0), Eminus(0), ETot(0);
+ G4ThreeVector Pplus   , Pminus,    PTot; 
+ const G4TrackVector* secondary = fpSteppingManager->GetSecondary();
+ 
+ G4double particle_mass = -1;
+ tuple_index = -1;
+
+ if(processName == "conv")
+ {  
+     particle_mass = fEMass; 
+     tuple_index = 1;
+ }
+ else
+ {  
+     particle_mass = fMuonMass; 
+     tuple_index = 0;
+ }
+
+ for (size_t lp=0; lp<(*secondary).size(); lp++) {
+   if ((*secondary)[lp]->GetDefinition()== muplus_def || (*secondary)[lp]->GetDefinition()== eplus_def) {
+     Eplus  = (*secondary)[lp]->GetTotalEnergy();
+     Pplus  = (*secondary)[lp]->GetMomentum();
+   } else {
+     Eminus = (*secondary)[lp]->GetTotalEnergy();
+     Pminus = (*secondary)[lp]->GetMomentum();
+   }
+ 
+   ETot += (*secondary)[lp]->GetTotalEnergy();
+   PTot += (*secondary)[lp]->GetMomentum();
+ }
+ 
+ G4double thetaSep = Pplus.angle(Pminus);              
+ G4double xPlus = Eplus/EGamma, xMinus = Eminus/EGamma;
+ G4double thetaPlus = PGamma.angle(Pplus), thetaMinus = PGamma.angle(Pminus);
+ G4double GammaPlus = Eplus/particle_mass;
+ G4double GammaMinus= Eminus/particle_mass;
+ 
+ G4AnalysisManager* analysisManager = G4AnalysisManager::Instance();
+ 
+ if(0.0 == thetaPlus || 0.0 == thetaMinus) {
+   G4cout << "SteppingAction for GammaToMuPair: "
+          << "thetaPlus= " << thetaPlus << " thetaMinus= " << thetaMinus
+          << " gamPlus= " << GammaPlus << " gamMinus= " <<  GammaMinus
+          << "  " << thetaPlus *GammaPlus - thetaMinus*GammaMinus << G4endl;
+   return;
+ }
+ analysisManager->FillNtupleDColumn(tuple_index, 0, xPlus);
+ analysisManager->FillNtupleDColumn(tuple_index, 1, xMinus);
+ analysisManager->FillNtupleDColumn(tuple_index, 2, thetaPlus);
+ analysisManager->FillNtupleDColumn(tuple_index, 3, thetaMinus);
+ analysisManager->FillNtupleDColumn(tuple_index, 4, sqrt(pow(ETot,2)-pow(PTot.getR(),2)));
+ analysisManager->FillNtupleDColumn(tuple_index, 5, Pplus.x());
+ analysisManager->FillNtupleDColumn(tuple_index, 6, Pplus.y());
+ analysisManager->FillNtupleDColumn(tuple_index, 7, Pplus.z());
+ analysisManager->FillNtupleDColumn(tuple_index, 8, Pminus.x());
+ analysisManager->FillNtupleDColumn(tuple_index, 9, Pminus.y());
+ analysisManager->FillNtupleDColumn(tuple_index, 10, Pminus.z());
+ analysisManager->FillNtupleDColumn(tuple_index, 11, thetaSep);
+ analysisManager->AddNtupleRow(tuple_index);
+ 
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+
diff --git a/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/SteppingVerbose.cc b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/SteppingVerbose.cc
new file mode 100644
index 0000000000000000000000000000000000000000..6a5103c7bdfbc17712769423548a14a5ae377b9a
--- /dev/null
+++ b/LHCbG4Tests/G4GammaToDiLeptonConversionTest/src/SteppingVerbose.cc
@@ -0,0 +1,158 @@
+//
+// ********************************************************************
+// * 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 electromagnetic/TestEm6/src/SteppingVerbose.cc
+/// \brief Implementation of the SteppingVerbose class
+//
+//
+// $Id: SteppingVerbose.cc 98272 2016-07-04 17:56:04Z gcosmo $
+// 
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+#include "SteppingVerbose.hh"
+
+#include "Geant4/G4SteppingManager.hh"
+#include "Geant4/G4ParticleTypes.hh"
+#include "Geant4/G4UnitsTable.hh"
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingVerbose::SteppingVerbose()
+ : G4SteppingVerbose()
+{ }
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+SteppingVerbose::~SteppingVerbose()
+{} 
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingVerbose::TrackingStarted()
+{  
+  CopyState();
+  
+  G4int prec = G4cout.precision(3);
+  
+  //Step zero
+  //  
+  if( verboseLevel > 0 ){
+    G4cout << std::setw( 5) << "Step#"      << " "
+           << std::setw( 6) << "X"          << "    "
+           << std::setw( 6) << "Y"          << "    "  
+           << std::setw( 6) << "Z"          << "    "
+           << std::setw( 9) << "KineE"      << " "
+           << std::setw( 9) << "dEStep"     << " "  
+           << std::setw(10) << "StepLeng"  
+           << std::setw(10) << "TrakLeng"
+           << std::setw(10) << "Volume"     << "  "
+           << std::setw(10) << "Process"    << G4endl;             
+
+    G4cout << std::setw(5) << fTrack->GetCurrentStepNumber() << " "
+        << std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
+        << std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
+        << std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
+        << std::setw(10) << fTrack->GetVolume()->GetName()
+        << "   initStep" << G4endl;        
+  }
+  G4cout.precision(prec);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
+
+void SteppingVerbose::StepInfo()
+{  
+  CopyState();
+    
+  G4int prec = G4cout.precision(3);
+
+  if( verboseLevel >= 1 ){
+    if( verboseLevel >= 4 ) VerboseTrack();
+    if( verboseLevel >= 3 ){
+      G4cout << G4endl;    
+      G4cout << std::setw( 5) << "#Step#"     << " "
+             << std::setw( 6) << "X"          << "    "
+             << std::setw( 6) << "Y"          << "    "  
+             << std::setw( 6) << "Z"          << "    "
+             << std::setw( 9) << "KineE"      << " "
+             << std::setw( 9) << "dEStep"     << " "  
+             << std::setw(10) << "StepLeng"     
+             << std::setw(10) << "TrakLeng" 
+             << std::setw(10) << "Volume"    << "  "
+             << std::setw(10) << "Process"   << G4endl;                  
+    }
+
+    G4cout << std::setw( 5) << fTrack->GetCurrentStepNumber() << " "
+        << std::setw(6) << G4BestUnit(fTrack->GetPosition().x(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetPosition().y(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetPosition().z(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetKineticEnergy(),"Energy")
+        << std::setw(6) << G4BestUnit(fStep->GetTotalEnergyDeposit(),"Energy")
+        << std::setw(6) << G4BestUnit(fStep->GetStepLength(),"Length")
+        << std::setw(6) << G4BestUnit(fTrack->GetTrackLength(),"Length")
+        << std::setw(10) << fTrack->GetVolume()->GetName();
+
+    const G4VProcess* process 
+                      = fStep->GetPostStepPoint()->GetProcessDefinedStep();
+    G4String procName = " UserLimit";
+    if (process) procName = process->GetProcessName();
+    if (fStepStatus == fWorldBoundary) procName = "OutOfWorld";
+    G4cout << "   " << std::setw(10) << procName;
+    G4cout << G4endl;
+
+    if (verboseLevel == 2) {
+      const std::vector<const G4Track*>* secondary 
+                                    = fStep->GetSecondaryInCurrentStep();
+      size_t nbtrk = (*secondary).size();
+      if (nbtrk) {
+        G4cout << "\n    :----- List of secondaries ----------------" << G4endl;
+        G4cout.precision(4);
+        for (size_t lp=0; lp<(*secondary).size(); lp++) {
+          G4cout << "   "
+                 << std::setw(13)                 
+                 << (*secondary)[lp]->GetDefinition()->GetParticleName()
+                 << ":  energy ="
+                 << std::setw(6)
+                 << G4BestUnit((*secondary)[lp]->GetKineticEnergy(),"Energy")
+                 << "  time ="
+                 << std::setw(6)
+                 << G4BestUnit((*secondary)[lp]->GetGlobalTime(),"Time");
+          G4cout << G4endl;
+        }
+              
+        G4cout << "    :------------------------------------------\n" << G4endl;
+      }
+    }
+    
+  }
+  G4cout.precision(prec);
+}
+
+//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
diff --git a/LHCbG4Tests/G4MScInThinLayerTest/CMakeLists.txt b/LHCbG4Tests/G4MScInThinLayerTest/CMakeLists.txt
index 0680977bf42063e3eea2140aecd1a50ee5e08d3c..2e00e1427c5d35ccb84d7abb332d98d12ee0de87 100644
--- a/LHCbG4Tests/G4MScInThinLayerTest/CMakeLists.txt
+++ b/LHCbG4Tests/G4MScInThinLayerTest/CMakeLists.txt
@@ -5,9 +5,9 @@ gaudi_depends_on_subdirs(LHCbG4PhysLists)
 
 find_package(CLHEP REQUIRED)
 find_package(ROOT COMPONENTS Hist Gpad RIO)
+find_package(TBB)
 
 include_directories(SYSTEM ${CMAKE_INSTALL_PREFIX}/include ${CLHEP_INCLUDE_DIRS} ${ROOT_INCLUDE_DIRS})
-#include_directories(${CMAKE_INSTALL_PREFIX}/include)
 link_directories(${CMAKE_INSTALL_PREFIX}/lib)
 
 set(Geant4_LIBRARIES
@@ -23,7 +23,7 @@ set(Geant4_LIBRARIES
 gaudi_add_executable(G4MScInThinLayerTest
                      G4MScInThinLayerTest.cc src/*.cc
                      INCLUDE_DIRS include CLHEP ROOT
-                     LINK_LIBRARIES ${Geant4_LIBRARIES} CLHEP ROOT G4LHCblists)
+                     LINK_LIBRARIES ${Geant4_LIBRARIES} CLHEP ROOT TBB G4LHCblists)
 
 add_dependencies(G4MScInThinLayerTest Geant4)
 
diff --git a/ReleaseNotes/v104r1.md b/ReleaseNotes/v104r1.md
new file mode 100644
index 0000000000000000000000000000000000000000..2fa98308ef5ba8a5412578bacd4e25bcf3b208f4
--- /dev/null
+++ b/ReleaseNotes/v104r1.md
@@ -0,0 +1,19 @@
+2018-04-25 Geant4 v104r1
+===
+This version uses LCG 91 (Gaudi v29r0) and Geant4Files v104r0.
+
+This version is released on `Sim10` branch.
+
+## Latest Changes
+
+#### GEANT4
+
+Switched to Geant4 release `10.4.1`.
+
+#### LHCb G4 Physics Lists
+
+**[MR !31] Updated method name in PhysLists for 10.4.1**
+
+#### LHCb G4 Tests
+
+**[MR !31] Added new test G4GammaToDiLeptonConversionTest based on TestEm6**