//czt.cc #include #include "G4RunManagerFactory.hh" //#include "G4MTRunManager.hh" #include "G4UImanager.hh" #include "G4VisManager.hh" #include "G4VisExecutive.hh" #include "G4UIExecutive.hh" #include "construction.hh" #include "physics.hh" #include "action.hh" int main(int argc, char** argv) { //#ifndef G4MULTITHREADED //G4MTRunManager *runManager = new G4MTRunManager(); //#else //G4RunManager *runManager = new G4RunManager(); //#endif G4UIExecutive *ui = nullptr; if (argc == 1) { ui = new G4UIExecutive(argc, argv); } auto* runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default); runManager->SetUserInitialization(new MyDetectorConstruction()); runManager->SetUserInitialization(new MyPhysicsList()); runManager->SetUserInitialization(new MyActionInitialization()); runManager->SetNumberOfThreads(4); runManager->Initialize(); G4VisManager *visManager = new G4VisExecutive(); visManager->Initialize(); G4UImanager *UImanager = G4UImanager::GetUIpointer(); if ( ! ui) { //batch mode G4String command = "/control/execute "; G4String fileName = argv[1]; UImanager->ApplyCommand(command+fileName); } else { // interactive mode UImanager->ApplyCommand("/control/execute vis.mac"); //UImanager->ApplyCommand("/run/beamOn 100"); ui->SessionStart(); delete ui; } delete visManager; delete runManager; }