Results And Uncertainty
Start from the observable you defined, then use package summaries to audit the transport behind it.
Select Rows By Identity
For one scalar response:
const SimulationObservableRow &dose =
require_simulation_observable_row(
result,
TransportPackageId::coupled_em,
"energy_deposit_dose",
"total",
ObservableId{3});For a binned response:
std::vector<const SimulationObservableRow *> spectrum =
find_simulation_observable_rows(
result,
TransportPackageId::coupled_em,
"energy_deposit_edep",
ObservableId{4});Do not select rows by vector position. Use package, observable type, ObservableId, response_id and bin bounds.
Interpret A Row
| Field | Meaning |
|---|---|
value | mean score per source history |
standard_error | standard error of that history mean |
units | units after response folding and normalization |
histories | source histories accumulated |
nonzero_histories | histories with a nonzero score in this row |
score_sum | sum of per-history scores |
score_sum_square | sum of squared per-history scores |
The current normalization is per_source_history. A decay history can contain several correlated emissions; those emissions are not independent samples.
nonzero_histories is useful for diagnosing rare scores. It is not an uncertainty estimate and should not replace standard_error.
Bins
Depending on the observable, a row can carry:
- energy bounds;
- direction-cosine or projected-angle bounds;
- time bounds;
- x, y or z position bounds;
- multiplicity bounds;
- target nuclide and reaction MT.
The axis definition controls binning. Integrate rows using their score semantics; do not multiply or divide by bin width unless the requested observable is explicitly a density.
Audit Transport
const SimulationPackageResultSummary &summary =
require_simulation_package_result(
result, TransportPackageId::coupled_em);Inspect at least:
package_status,transport_modeland profile fields;- histories, tracks, collisions and stopped/escaped tracks;
- deposited, escaped and secondary-handoff energy;
energy_balance_residual;- unresolved event counts and residual fields;
- reaction-by-reaction accounting for nuclear transport.
An unresolved evaluated product marginal is deliberately reported separately from a resolved exclusive event. Do not reinterpret that residual as a floating-point conservation error.
Export
std::ofstream output{"observables.csv"};
write_simulation_observables_csv(
output, result, "case-001", "neomc");The CSV is the preferred boundary for plotting and comparison. Keep case id, model inputs, data versions, seeds and run settings with the exported table.