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 biasingPhysics->Bias("kaon0L");
111 biasingPhysics->Bias("kaon0S");
112 physicsList->RegisterPhysics(biasingPhysics);
113 G4cout << " ********************************************************* " << G4endl;
114 G4cout << " ********** processes are wrapped for biasing ************ " << G4endl;
115 G4cout << " ********************************************************* " << G4endl;
116 }
117 else
118 {
119 G4cout << " ************************************************* " << G4endl;
120 G4cout << " ********** processes are not wrapped ************ " << G4endl;
121 G4cout << " ************************************************* " << G4endl;
122 }
123 runManager->SetUserInitialization(physicsList);
124
126
127
128 runManager->Initialize();
129
130
132
133 visManager->Initialize();
134
135
136 G4UImanager* UImanager = G4UImanager::GetUIpointer();
137
138 if ( !ui )
139 {
140 G4String command =
"/control/execute ";
141 UImanager->ApplyCommand(command+macro);
142 }
143 else
144 {
145
146
147
148 ui->SessionStart();
149 delete ui;
150 }
151
152 delete visManager;
153 delete runManager;
154
155 return 0;
156}
Action initialization class.