v1.7.0 - Heavy-Ion Primaries
Adds six heavy-ion primaries, extending PANDA into the direct-ionization-dominated regime of SEE testing alongside its existing proton/neutron nuclear-recoil focus.
Heavy-ion primaries
- Six new selectable species via
/sim/particleand the GUI's Particle dropdown:C12,F19,Cl35,Ni58,I127,Au197-- ground-state, most-abundant-stable-isotope per element, matching common heavy-ion SEE test cocktails. - Motivated by wanting PANDA to cover direct ionization too, not just nuclear-recoil-driven upset -- unlike SRIM (bare ion stopping power/range, no device or charge-collection model), PANDA runs these ions through its own geometry, charge-collection-efficiency, and angle-of-incidence models directly.
- Cross-section biasing (
/sim/biasCrossSectionFactor) works for all six with no new physics-list wrapping needed: a dynamically-created ion's process manager is a clone ofGenericIon's, which was already wrapped for biasing when it was first generalized beyond protons.
Non-obvious fix along the way
- A dynamically-created ion (
G4IonTable::GetIon(Z,A,...)) requiresGenericIon's own process manager already built, butDetectorConstruction::ConstructSDandField()-- where every other species' particle definition is resolved for the biasing operator -- runs before physics construction (confirmed empirically and via Geant4's own source).SEEBiasingOperator::StartRun()is the earliest point guaranteed safe (fires only after physics tables are built), so ion resolution for these six species is now deferred there instead. - Verified: all six ions run clean smoke tests with zero exceptions and the expected
ionInelasticwrapped process; biasing confirmed actually engaging (a biased C12 test gave 77 confirmed interactions/100 events vs. 0 unbiased).
See README.md and Documentation/PANDA_MASTER_DESIGN (Section 5, Cross-section biasing exception) for details.