You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Trigger a fast simulation model on its envelope, not on its region
This makes a model cover a whole module, which the region mechanism alone
cannot express.
- A Geant4 region in O2 is always "every volume of a given material": the VMC
special cuts make every logical volume a root of its own material's region,
and Geant4 stops propagating a region at any such daughter.
- G4FastTrack::GetEnvelopeSolid() therefore returns one absorber piece, and
FastSimModel no longer uses it.
- G4.fastSimEnvelope names the volume a model stands in for. Containment and the
exit distance are read from the track's own touchable, which already carries
the full ancestry and the transform of every level.
- ModelTrigger now requires geometric containment in that envelope, which also
excludes volumes that merely share a material with it, such as the absorber's
support cradle.
- The regions needed for Geant4 to consult the model are derived by walking the
envelope's subtree and collecting its media, so no list is maintained by hand.
The walk happens in CreateUserPostDetConstruction, the one point after the
geometry is built and before the media are turned into regions.
- G4.fastSimRegions still overrides the walk with an explicit list.
0 commit comments