105 return std::make_shared<GSystem>(gopts, dbhost, name,
130int main(
int argc,
char* argv[]) {
133 const std::string dbhost = gopts->getScalarString(
"sql");
135 auto* runManager = G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default);
136 runManager->SetNumberOfThreads(2);
137 runManager->SetUserInitialization(
new QBBC);
140 runManager->SetUserInitialization(
gdetector);
141 runManager->SetUserInitialization(
new ActionInit);
143 std::cout <<
"\n=== Reload Sequence Test ===\n";
145 int flux1 = 0, dosi1 = 0;
146 runPhase(
"Phase 1 (simple_flux)",
gdetector, runManager,
147 {makeSystem(gopts, dbhost,
"simple_flux")}, flux1, dosi1);
149 int flux2 = 0, dosi2 = 0;
150 runPhase(
"Phase 2 (b1)",
gdetector, runManager,
151 {makeSystem(gopts, dbhost,
"b1")}, flux2, dosi2);
153 int flux3 = 0, dosi3 = 0;
154 runPhase(
"Phase 3 (simple_flux)",
gdetector, runManager,
155 {makeSystem(gopts, dbhost,
"simple_flux")}, flux3, dosi3);
157 std::cout <<
"\n=== Results ===\n";
160 bool stale_flux_in_b1 = (flux2 > 0);
161 bool stale_dosi_in_flux = (dosi1 > 0 || dosi3 > 0);
163 if (stale_flux_in_b1)
164 std::cout <<
"WARNING: unexpected flux hits in Phase 2 (stale SD).\n";
165 if (stale_dosi_in_flux)
166 std::cout <<
"WARNING: unexpected dosimeter hits in flux-only phases (stale SD).\n";
168 bool passed = (flux1 > 0) && (flux3 > 0) && !stale_flux_in_b1 && !stale_dosi_in_flux;
173 std::cout <<
"PASSED\n";
176 std::cout <<
"FAILED"
177 << (flux1 == 0 ?
" (no flux hits in Phase 1)" :
"")
178 << (flux3 == 0 ?
" (no flux hits in Phase 3)" :
"")
179 << (stale_flux_in_b1 ?
" (stale flux SD in Phase 2)" :
"")
180 << (stale_dosi_in_flux ?
" (stale dosimeter SD in flux phases)" :
"")