diff --git a/CODE/sim.cc b/CODE/sim.cc
new file mode 100644
index 0000000000000000000000000000000000000000..dae2a6774c2e8b4783255298c2890c837e58f496
--- /dev/null
+++ b/CODE/sim.cc
@@ -0,0 +1,46 @@
+#include <iostream>
+
+#include "G4RunManager.hh"
+#include "G4MTRunManager.hh"
+#include "G4UImanager.hh"
+#include "QGSP_BERT.hh"
+#include "G4UImanager.hh"
+
+#include "construction.hh"
+#include "physics.hh"
+#include "action.hh"
+
+int main(int argc, char** argv)
+{
+
+    G4UImanager* UImanager = G4UImanager::GetUIpointer();
+
+    #ifdef G4MULTITHREADED
+        G4MTRunManager* runManager = new G4MTRunManager;
+    #else
+        G4RunManager* runManager = new G4RunManager;
+    #endif
+    runManager->SetUserInitialization(new MyDetectorConstruction());
+    runManager->SetUserInitialization(new MyPhysicsList());
+    runManager->SetUserInitialization(new MyActionInitialization());
+
+    G4VModularPhysicsList* physics = new QGSP_BERT();
+    physics->RegisterPhysics(new G4DecayPhysics());
+    runManager->SetUserInitialization(physics);
+
+    runManager->Initialize();
+
+    if (argc > 1)
+    {
+        G4String command = "/control/execute ";
+        G4String fileName = argv[1];
+        G4UImanager::GetUIpointer()->ApplyCommand(command + fileName);
+    }
+
+    G4String command = "/control/execute input.in";
+    UImanager->ApplyCommand(command);
+    delete runManager;
+
+    return 0;
+}
+