This page gives JUST an overview/summary. For details, code listings etc.. see:
Collection of photon data within the processes before becomes a G4Track and being stacked would avoid track stacking processing and associated memory expense/concerns.
StackAction::ClassifyNewTrack(G4Track*)
- collect photon data (TrackID?) and kill G4Track
StackAction::NewStage
- batched external GPU propagation
- from ZMQ response form the PMT hits and fill hit collection (requires detector and PMT id info to be gleaned GPU side)
- try to keep detector specifics CPU side, keep GPU code as generic as possible
Avoids complications:
Main issue is forming PMTID
The Geant4 “allowed” way to move photons gets complicated with creation of a pseudo process and creating particle changes. That seems expensive and pointless.
Initially preferred this as could allow to avoid a reimplementation if ProcessHits.
Processes operate at track level, need to propagate at event (or track collection level)