Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // Author: Haegin Han 27 // Contributor: Min Cheol Han, Bangho Shin, Ch 28 // Jonghwi Jeong, Chan Hyeong Kim 29 // Reference: ICRP Publication 145. Ann. ICRP 30 // Geant4 Contributors: J. Allison and S. Guat 31 // 32 #include "TETDetectorConstruction.hh" 33 #include "TETModelImport.hh" 34 #include "TETActionInitialization.hh" 35 #include "G4RunManagerFactory.hh" 36 #include "G4UImanager.hh" 37 #include "G4UIterminal.hh" 38 #include "G4VisExecutive.hh" 39 #include "G4UIExecutive.hh" 40 #include "Randomize.hh" 41 #include "QGSP_BIC_HP.hh" 42 43 void PrintUsage(){ 44 G4cerr<< "Usage: ./External -m [MACRO] -o [O 45 G4cerr<< "Example: ./External -m run.mac -o 46 } 47 48 int main(int argc,char** argv) 49 { 50 // Read the arguments for batch mode 51 // 52 G4String macro; 53 G4String output; 54 G4bool isAF(false); 55 G4UIExecutive* ui = nullptr; 56 57 for ( G4int i=1; i<argc; i++ ) { 58 // macro file name 59 if ( G4String(argv[i]) == "-m" ) { 60 macro = argv[i+1]; 61 i++; 62 } 63 // output file name 64 else if ( G4String(argv[i]) == "-o" ) { 65 output = argv[i+1]; 66 i++; 67 } 68 // switch for MRCP-AF phantom 69 else if ( G4String(argv[i]) == "-f" ) { 70 isAF = true; 71 } 72 else { 73 PrintUsage(); 74 return 1; 75 } 76 } 77 78 // print usage when there are more than six 79 if ( argc>6 ){ 80 PrintUsage(); 81 return 1; 82 } 83 84 // Detect interactive mode (if no macro file 85 // 86 if ( !macro.size() ) { 87 ui = new G4UIExecutive(argc, argv); 88 } 89 // default output file name 90 else if ( !output.size() ) output = macro + 91 92 // Choose the Random engine 93 // 94 //G4Random::setTheSeed(time(0)); 95 96 // Construct the default run manager 97 // 98 auto* runManager = G4RunManagerFactory: 99 G4int nThreads = 4; 100 runManager->SetNumberOfThreads(nThreads 101 102 // Set a class to import phantom data 103 // 104 auto* tetData = new TETModelImport(isAF, ui) 105 106 // Set mandatory initialisation classes 107 // 108 // detector construction 109 runManager->SetUserInitialization(new TETDet 110 // physics list 111 //runManager->SetUserInitialization(new TETP 112 runManager->SetUserInitialization(new QGSP_B 113 // user action initialisation 114 runManager->SetUserInitialization(new TETAct 115 116 // Visualization manager 117 // 118 G4VisManager* visManager = new G4VisExecutiv 119 visManager->Initialise(); 120 121 // Process macro or start UI session 122 // 123 G4UImanager* UImanager = G4UImanager::GetUIp 124 125 if ( ! ui ){ 126 // batch mode 127 G4String command = "/control/execute "; 128 UImanager->ApplyCommand(command+macro); 129 } 130 else { 131 // interactive mode 132 UImanager->ApplyCommand("/control/execute 133 ui->SessionStart(); 134 135 delete ui; 136 } 137 138 delete visManager; 139 delete runManager; 140 } 141 142 143