Celeritas is a new Monte Carlo transport code designed to accelerate scientific discovery in high energy physics by improving detector simulation throughput and energy efficiency using GPUs.
Booleans in Geant4 have some restrictions: they must be contiguous, subtractions can't delete a face, ...
Solids
VecGeom/Geant4 solids with radial/azimuthal sections:
[x] Cone/Cons
[ ] CutTube/CutTubs
[ ] Hype (hyperbola)
[x] Sphere (missing polar section)
[ ] Torus2/Torus
[x] Tube/Tubs
VecGeom/Geant4 "csg" solids:
[ ] SExtruVolume/ExtrudedSolid[^1]
[ ] GenericPolycone
[x] Polycone/PCON
[x] Polyhedron/Polyhedra/PGON
[ ] Tessellated/TessellatedSolid[^2]
Geant4 solids (not implemented in vecgeom):
Twisted box
Twisted trap
Twisted trd
Twisted tubs
Multi-union (accelerated union)
[^1]: vecgeom supports extruded solid only with 2 sections, unit scale factors, and zero offsets
[^2]: tesselated solid isn't implemented in vecgeom GPU
Logical volumes
Logical volumes start off as a solid with an extra name. They can be reflected using the G4ReflectionFactory, which effectively adjusts their transformation.
They also have daughters, which are physical volumes (see below).
As a first pass, logical volumes should be created as solids with a vector of daughters. We can then convert some of these into protos.
If a logical volume has no daughters, it's just a "material". It's a leaf in the tree.
If a logical volume only appears in one location, we could simply propagate its transform to its daughters.
If a logical volume has daughters and is reused multiple times, it should be a "unit proto".
Physical volumes
Physical volumes are some kind of modification of a logical volume:
A G4PVPlacement is just a transformed logical volumes
A G4VPVParameterisation is a repeated logical volumes (which could potentially be represented as an array, or just expanded out as a "pseudo-array")
The world is a physical volume.
Use cases
HGCAL
[x] Box
[x] Polyhedra with 2 z planes (aka prism) with a rotated start angle
[x] Subtraction (box minus polyhedron)
[x] Tube
[x] Polycone with 2 planes and equal radii (aka a translated cylinder)
There are no reflections, and the maximum depth of logical volumes is 9.
Objects and structure
Transforms
Geant4 CSG solids:
Booleans in Geant4 have some restrictions: they must be contiguous, subtractions can't delete a face, ...
Solids
VecGeom/Geant4 solids with radial/azimuthal sections:
VecGeom/Geant4 "csg" solids:
Geant4 solids (not implemented in vecgeom):
Twisted boxTwisted trapTwisted trdTwisted tubsMulti-union (accelerated union)[^1]: vecgeom supports extruded solid only with 2 sections, unit scale factors, and zero offsets [^2]: tesselated solid isn't implemented in vecgeom GPU
Logical volumes
Logical volumes start off as a solid with an extra name. They can be reflected using the
G4ReflectionFactory
, which effectively adjusts their transformation.They also have daughters, which are physical volumes (see below). As a first pass, logical volumes should be created as solids with a vector of daughters. We can then convert some of these into protos.
Physical volumes
Physical volumes are some kind of modification of a logical volume:
G4PVPlacement
is just a transformed logical volumesG4VPVParameterisation
is a repeated logical volumes (which could potentially be represented as an array, or just expanded out as a "pseudo-array")The world is a physical volume.
Use cases
HGCAL
There are no reflections, and the maximum depth of logical volumes is 9.
hgcal-volumes.pdf
TrackML
Dune
EMEC (generic trapezoid)
TileCal
ZDC