62{
63
64
65 if ( argc > 5 ) {
67 return 1;
68 }
69
72 if ( argc == 2 ) macro = argv[1];
73 else
74 {
75 for ( G4int i=1; i<argc; i=i+2 )
76 {
77 if (
G4String(argv[i]) ==
"-m" ) macro = argv[i+1];
78 else if (
G4String(argv[i]) ==
"-b" ) onOffBiasing = argv[i+1];
79 else
80 {
82 return 1;
83 }
84 }
85 }
86
87 if ( onOffBiasing == "" ) onOffBiasing = "on";
88
89
91 if ( macro == "" ) {
93 }
94
95
96 auto* runManager = G4RunManagerFactory::CreateRunManager();
97 runManager->SetNumberOfThreads(4);
98
99
101 runManager->SetUserInitialization(detector);
102
104
106 if ( onOffBiasing == "on" )
107 {
108 biasingPhysics->Bias("gamma");
109 biasingPhysics->Bias("neutron");
110 physicsList->RegisterPhysics(biasingPhysics);
111 G4cout << " ********************************************************* " << G4endl;
112 G4cout << " ********** processes are wrapped for biasing ************ " << G4endl;
113 G4cout << " ********************************************************* " << G4endl;
114 }
115 else
116 {
117 G4cout << " ************************************************* " << G4endl;
118 G4cout << " ********** processes are not wrapped ************ " << G4endl;
119 G4cout << " ************************************************* " << G4endl;
120 }
121 runManager->SetUserInitialization(physicsList);
122
124
125
126 runManager->Initialize();
127
128
130
131 visManager->Initialize();
132
133
134 G4UImanager* UImanager = G4UImanager::GetUIpointer();
135
136 if ( macro != "" )
137 {
138 G4String command =
"/control/execute ";
139 UImanager->ApplyCommand(command+macro);
140 }
141 else
142 {
143
144
145
146 ui->SessionStart();
147 delete ui;
148 }
149
150 delete visManager;
151 delete runManager;
152
153 return 0;
154}
Action initialization class.