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 the StandaloneInput::physics_import is 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.

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.

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 volume is 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.

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.

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.

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.

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.