Interfaces

These classes manage access to geometric information throughout the codebase.

class VolumeParams

Define and manage a hierarchy of volumes and instances thereof.

See the introduction to the Geometry API section for a detailed description of volumes in the detector geometry description. This class abstracts the graph of volumes, relating nodes (VolumeId, aka logical volume) to edges (VolumeInstanceId, aka physical volume) and providing the means to determine the path (VolumeUniqueInstanceId, aka touchable history) of a track state. In conjunction with GeantGeoParams this allows conversion between the Celeritas geometry implementation and the Geant4 geometry navigation.

class SurfaceParams : public celeritas::ParamsDataInterface<SurfaceParamsData>

Map volumetric geometry information to surface IDs.

See the introduction to the Geometry API section for a detailed description of surfaces in the detector geometry description.

The specification of surfaces using volume relationships is required by volume-based geometries such as Geant4 and VecGeom 1, so it is not currently possible to define different properties for the different faces of a volume unless those faces are surrounded by distinct geometric volumes. Since ORANGE and VecGeom 2 support true surface definitions, a future extension will allow the user to attach surface properties to, for example, different sides of a cube.

class GeoParamsInterface

Interface class for accessing host geometry metadata.

This class is implemented by OrangeParams to allow navigation with the ORANGE geometry implementation, VecgeomParams for using VecGeom, and GeantGeoParams for testing with the Geant4-provided navigator.

Subclassed by celeritas::GeantGeoParams, celeritas::OrangeParams, celeritas::VecgeomParams

struct GeantPhysicalInstance

Unique placement/replica of a Geant4 physical volume.

This should correspond to a VolumeInstanceId and be a unique instantiation of a Geant4 physical volume (PV). Some Geant4 PVs are “parameterised” or “replica” types, which allows a single instance to be mutated at runtime to form a sort of array. If the pointed-to physical volume is not a replica/parameterised volume, replica is false. Otherwise, it corresponds to the PV’s copy number, which can be used to reconstruct the placed volume instance.