Source code for pyRadPlan.stf._rangeshifter

from typing import Any
import numpy as np
from pydantic import Field, field_serializer, SerializerFunctionWrapHandler, FieldSerializationInfo
from pyRadPlan.core import PyRadPlanBaseModel


[docs] class RangeShifter(PyRadPlanBaseModel): """ A class representing a range shifter. This class extends Pydantic's BaseModel and provides functionality to handle the range shifter information, including properties like id, equivalent thickness, and source to range shifter distance. Attributes ---------- id : int The identifier for the range shifter. eq_thickness : float The equivalent thickness of the range shifter. source_rashi_distance : float The distance from the source to the range shifter. """ id: int = Field(alias="ID", default=0) eq_thickness: float = Field(default=0.0) source_rashi_distance: float = Field(default=0.0) @field_serializer("*", mode="wrap") def _field_typing( self, v: Any, handler: SerializerFunctionWrapHandler, info: FieldSerializationInfo ) -> Any: """Serialize with possible matRad context.""" context = info.context if context and context.get("matRad") == "mat-file": return np.float64(v) # Ensure double for MATLAB/matRad return handler(v, info)