Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 4 additions & 13 deletions celerpy/conf/settings.py
Original file line number Diff line number Diff line change
@@ -1,25 +1,16 @@
# Copyright 2024 UT-Battelle, LLC, and other Celeritas developers.
# See the top-level LICENSE file for details.
# SPDX-License-Identifier: Apache-2.0
from enum import StrEnum
from typing import Optional

from pydantic import DirectoryPath
from pydantic_settings import BaseSettings, SettingsConfigDict


class LogLevel(StrEnum):
"""Minimum verbosity level for logging."""

debug = "debug"
info = "info"
warning = "warning"
error = "error"
critical = "critical"
from celerpy.model import LogLevel


class Settings(BaseSettings):
"""Global settings for Celeritas front end.
"""Global environment settings for Celeritas front end.

Settings can be changed by setting environment variables such as
``CELER_PREFIX_PATH`` (case insensitive).
Expand All @@ -45,10 +36,10 @@ class Settings(BaseSettings):
g4org_verbose: bool = False
"Filename base to export converted Geant4 geometry"

log: LogLevel = LogLevel.info
log: LogLevel = LogLevel.INFO
"World log level"

log_local: LogLevel = LogLevel.warning
log_local: LogLevel = LogLevel.WARNING
"Self log level"

prefix_path: Optional[DirectoryPath] = None
Expand Down
57 changes: 41 additions & 16 deletions celerpy/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# SPDX-License-Identifier: Apache-2.0
"""Manage models used for JSON I/O with Celeritas."""

from enum import Enum
from enum import StrEnum, auto
from typing import Annotated, Literal, Optional

from pydantic import (
Expand All @@ -30,28 +30,53 @@ class _Model(BaseModel):
model_config = ConfigDict(use_attribute_docstrings=True)


# celer-geo/Types.hh
class GeometryEngine(Enum):
"""Geometry model implementation for execution and rendering."""
# corecel/Types.hh
class MemSpace(StrEnum):
"""Memory/execution space."""

geant4 = "geant4"
vecgeom = "vecgeom"
orange = "orange"
HOST = auto() # CPU
DEVICE = auto() # GPU

# Backward compatibility
host = HOST
device = DEVICE


# corecel/Types.hh
class MemSpace(Enum):
"""Memory/execution space."""
class UnitSystem(StrEnum):
CGS = auto()
SI = auto()
CLHEP = auto()

host = "host" # CPU
device = "device" # GPU
# Backward compatibility
cgs = CGS
si = SI
clhep = CLHEP


# corecel/Types.hh
class UnitSystem(Enum):
cgs = "cgs"
si = "si"
clhep = "clhep"
# corecel/io/LoggerTypes.hh
class LogLevel(StrEnum):
"""Minimum verbosity level for logging."""

DEBUG = auto()
INFO = auto()
WARNING = auto()
ERROR = auto()
CRITICAL = auto()


# celer-geo/Types.hh
class GeometryEngine(StrEnum):
"""Geometry model implementation for execution and rendering."""

GEANT4 = auto()
VECGEOM = auto()
ORANGE = auto()

# Backward compatibility
geant4 = GEANT4
vecgeom = VECGEOM
orange = ORANGE


# celer-geo/GeoInput.hh
Expand Down
6 changes: 3 additions & 3 deletions celerpy/visualize.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,9 +68,9 @@ def _register_cmaps():


UNIT_LENGTH = {
model.UnitSystem.cgs: "cm",
model.UnitSystem.clhep: "mm",
model.UnitSystem.si: "m",
model.UnitSystem.CGS: "cm",
model.UnitSystem.CLHEP: "mm",
model.UnitSystem.SI: "m",
}


Expand Down
8 changes: 8 additions & 0 deletions test/test_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@
from celerpy import model


def test_enum_lowercase():
# NOTE: no deprecation warning issued :'(
result = model.GeometryEngine.geant4
assert result == model.GeometryEngine.GEANT4

assert model.GeometryEngine("geant4") == model.GeometryEngine.GEANT4


def test_model_setup(tmp_path):
gdml_file = tmp_path / "foo.gdml"
gdml_file.write_text("<gdml />")
Expand Down
8 changes: 4 additions & 4 deletions test/test_visualize.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
settings.prefix_path = local_path / "mock-prefix"

settings.prefix_path = Path(__file__).parent / "mock-prefix"
settings.log = LogLevel.debug
settings.log_local = LogLevel.warning
settings.g4org_verbose = True
settings.log = LogLevel.DEBUG
settings.log_local = LogLevel.WARNING


def test_CelerGeo():
Expand All @@ -27,12 +27,12 @@ def test_CelerGeo():
cg.trace()
(result, img) = cg.trace(
model.ImageInput(upper_right=[1, 1, 0], vertical_pixels=4),
geometry=model.GeometryEngine.orange,
geometry=model.GeometryEngine.ORANGE,
)
assert isinstance(result, model.TraceOutput)
assert img.shape == (4, 4)
assert img.dtype == np.int32
(result, img) = cg.trace(geometry=model.GeometryEngine.orange)
(result, img) = cg.trace(geometry=model.GeometryEngine.ORANGE)
assert isinstance(result, model.TraceOutput)
assert img.shape == (4, 4)
(result, img) = cg.trace(geometry=model.GeometryEngine.geant4)
Expand Down