user stories: 3D geometry description for detectors
Created by: decibelcooper
@sbinet I'm not sure if this is exactly what you meant by filing an issue with "user stories". Please correct me if I'm doing it wrong, for there are more issues to come.
For the purpose of reconstructing events in tracking and calorimetry subsystems natively in go, I have need of a library capable of holding descriptions of a set of 3D volumes that make up a detector geometry in memory and providing efficient methods for calculating
- whether or not points exist within volumes,
- intersection of parameterized trajectories (straight line + helix?) with volume surfaces.
One should also be able to...
- assign lineage to volumes
- assign both translations and rotations to volumes within the parent volume.
- assign volumes to assemblies
- associate material properties with volumes (containing e.g. density, composition, radiation length, etc)
Volumes should be constructed with one of a set of common parameterized shapes. In particular, I have need of (this is a minimal list, more would be useful later on)...
- Right circular cylinders
- Right circular conic frusta
- cuboids
- extruded trapezoids (or perhaps rectangular frusta?)
- boolean unions (this || that)
- boolean intersections (this && that)
- boolean subtractions (this && !that)