Source code for pyRadPlan.machines.particles._beam_cutoff
# import warnings
import numpy as np
from typing import Any
from pydantic import (
Field,
field_validator,
)
from numpydantic import NDArray, Shape
from pyRadPlan.core import PyRadPlanBaseModel
[docs]
class LateralCutOff(PyRadPlanBaseModel):
"""Lateral cut-off radius and compensation for ion pencil beam kernels."""
comp_fac: np.float64 = Field(default=np.float64(1.0))
cut_off: NDArray[Shape["1-*"], np.float64] = Field(
default=np.array([np.inf, np.inf], dtype=np.float64)
)
depths: NDArray[Shape["1-*"], np.float64] = Field(
default=np.array([0.0, np.inf], dtype=np.float64)
)
[docs]
@field_validator("comp_fac", mode="before")
@classmethod
def validate_comp_fac(cls, v: Any) -> Any:
"""Validate the lateral cut-off compensation factor."""
try:
return np.float64(v)
except ValueError as exc:
raise exc
[docs]
@field_validator("cut_off", mode="before")
@classmethod
def validate_arrays(cls, v: Any) -> Any:
"""Validate the lateral cut-off radial distance and depths."""
try:
v = np.array(v, dtype=np.float64)
except ValueError as exc:
raise exc
return v