Model¶
This specifies the problem geometry and material properties. See Geometry for details on the definition of volumes and surfaces.
-
struct Model
Set up geometry/material model.
The geometry filename should almost always be a GDML path. As a temporary measure we also support loading from a
.org.json file if theStandaloneInput::physics_importis a ROOT file with serialized physics data.Materials, regions, and surfaces may be loaded from the geometry: this is usually done by
GeantGeoParams::make_model_input.Public Members
-
std::variant<std::string, G4VPhysicalVolume const*> geometry
Path to GDML file, Geant4 world, or loaded geometry.
-
std::variant<std::string, G4VPhysicalVolume const*> geometry
Volumes¶
These input classes describe the volume hierarchy.
-
struct Volumes
Define a graph of geometry elements.
Public Functions
-
inline explicit operator bool() const
True if at least one node is defined.
Public Members
-
std::vector<Volume> volumes
Nodes in the graph (logical volumes)
-
std::vector<VolumeInstance> volume_instances
Properties of edges in the graph (physical volumes)
-
VolumeId world
Root volume of the geometry graph.
-
inline explicit operator bool() const
-
struct Volume
Define a node and reference child edges in the geometry graph.
A given volume instance ID can appear only once across all volumes.
- Todo:
Instead of this, which allows us to “easily” translate between geant4 IDs and instance IDs, we should just have a vector of volume instances here.
Note
Currently, to support internal geometry mappings a volume is allowed to be null.
Public Functions
-
inline explicit operator bool() const
True if it has a label.
Public Members
-
Label label
Name for the edge.
-
GeoMatId material
Filled material ID.
-
std::vector<VolumeInstanceId> children
Child edges.
-
struct VolumeInstance
Define an edge in the geometry graph.
The
volumeis the node below this edge, the volume being instantiated.Public Functions
-
inline explicit operator bool() const
True if it has a label and ID.
Public Members
-
Label label
Name for the edge.
-
VolumeId volume
Logical volume referenced by this instance.
-
inline explicit operator bool() const
Surfaces¶
Surfaces are defined by the relationship between volumes. These definitions are loaded from Geant4’s “skin” and “border” surface tables into Celeritas “boundary” and “interface” surfaces, respectively (see Geant4 geometry).
-
struct Surfaces
List all surfaces in a problem.
Public Functions
-
inline explicit operator bool() const
True if at least one surface is defined.
-
inline explicit operator bool() const
-
struct Surface
Define a single surface, the boundary around or between volumes.
An “interface” surface is an (exiting, entering) pair of volume instances. A “boundary” surface is the entire surface of a volume.
Regions¶
Regions are groups of volumes that share configurable properties or behaviors. Although not yet used in Celeritas (see issue #983), these are loaded from Geant4 to provide configurable physics fidelity and selection for performance optimization.
-
struct Regions
List all regions in a problem.
Public Functions
-
inline explicit operator bool() const
True if at least one region is defined.
-
inline explicit operator bool() const
-
struct Region
Define a single region.
A region is a set of volumes that share physics properties such as production cuts, fields, user limits, or fast simulation. A volume can belong to only one region.
Detectors¶
Detector information is gathered from Geant4 to map volumes to user sensitive detectors.
-
struct Detectors
List all detector regions in a problem.
Public Functions
-
inline explicit operator bool() const
True if at least one detector is defined.
-
inline explicit operator bool() const
-
struct Detector
Define a single sensitive detector region.
A detector is constructed by a list of volumes which create the volume region and a label for the detector region.
Materials¶
Fundamental material, elemental, and isotopic properties will be added to the model.