Skip to content

v1.7.0 - Heavy-Ion Primaries

Choose a tag to compare

@MarkWSavage MarkWSavage released this 19 Jul 23:08

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/particle and 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 of GenericIon'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,...)) requires GenericIon's own process manager already built, but DetectorConstruction::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 ionInelastic wrapped 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.