354{
355
356
357 if(!statsAreUpdated)
358 {
359 calStat();
360 }
361
362 out << std::setprecision(6);
363
365 out <<
"G4ConvergenceTester Output Result of " << name <<
G4endl;
366 out << std::setw(20) << "EFFICIENCY = " << std::setw(13) << efficiency
368 out << std::setw(20) <<
"MEAN = " << std::setw(13) << mean <<
G4endl;
369 out << std::setw(20) <<
"VAR = " << std::setw(13) << var <<
G4endl;
370 out << std::setw(20) <<
"SD = " << std::setw(13) << sd <<
G4endl;
371 out << std::setw(20) <<
"R = " << std::setw(13) << r <<
G4endl;
372 out << std::setw(20) <<
"SHIFT = " << std::setw(13) << shift <<
G4endl;
373 out << std::setw(20) <<
"VOV = " << std::setw(13) << vov <<
G4endl;
374 out << std::setw(20) <<
"FOM = " << std::setw(13) << fom <<
G4endl;
375
376 out << std::setw(20) << "THE LARGEST SCORE = " << std::setw(13) << largest
377 << " and it happened at " << largest_score_happened << "th event"
379 if(mean != 0)
380 {
381 out << std::setw(20) << "Affected Mean = " << std::setw(13) << mean_1
382 <<
" and its ratio to original is " << mean_1 / mean <<
G4endl;
383 }
384 else
385 {
386 out << std::setw(20) << "Affected Mean = " << std::setw(13) << mean_1
388 }
389 if(var != 0)
390 {
391 out << std::setw(20) << "Affected VAR = " << std::setw(13) << var_1
392 <<
" and its ratio to original is " << var_1 / var <<
G4endl;
393 }
394 else
395 {
396 out << std::setw(20) << "Affected VAR = " << std::setw(13) << var_1
398 }
399 if(r != 0)
400 {
401 out << std::setw(20) << "Affected R = " << std::setw(13) << r_1
402 <<
" and its ratio to original is " << r_1 / r <<
G4endl;
403 }
404 else
405 {
406 out << std::setw(20) <<
"Affected R = " << std::setw(13) << r_1 <<
G4endl;
407 }
408 if(shift != 0)
409 {
410 out << std::setw(20) << "Affected SHIFT = " << std::setw(13) << shift_1
411 <<
" and its ratio to original is " << shift_1 / shift <<
G4endl;
412 }
413 else
414 {
415 out << std::setw(20) << "Affected SHIFT = " << std::setw(13) << shift_1
417 }
418 if(fom != 0)
419 {
420 out << std::setw(20) << "Affected FOM = " << std::setw(13) << fom_1
421 <<
" and its ratio to original is " << fom_1 / fom <<
G4endl;
422 }
423 else
424 {
425 out << std::setw(20) << "Affected FOM = " << std::setw(13) << fom_1
427 }
428
429 if(!showHistory)
430 {
431 out << "Number of events of this run is too small to do convergence tests."
433 return;
434 }
435
436 check_stat_history(out);
437
438
439 if(calcSLOPE)
440 {
441 if(slope >= 3)
442 {
443 noPass++;
444 out <<
"SLOPE is large enough" <<
G4endl;
445 }
446 else
447 {
448 out <<
"SLOPE is not large enough" <<
G4endl;
449 }
450 }
451 else
452 {
453 out <<
"Number of non zero history too small to calculate SLOPE" <<
G4endl;
454 }
455
456 out << "This result passes " << noPass << " / " << noTotal
457 <<
" Convergence Test." <<
G4endl;
459}