Dose Calculation Algorithms
Dose calculation algorithms specify how exactly to compute the dose at a given position from a given beamlet.
To create a new dose calculation algorithm, it must be a subtype of Roentgen.AbstractDoseAlgorithm
and implement the Roentgen.point_dose
method. Machine specific parameters should be stored in the struct itself. This will allow the algorithm to be used with functions such as reconstruct_dose
and dose_fluence_matrix
MockKernel
is a mock algorithm used as an example and for testing. Its implementation can be found in src/DoseCalculationAlgorithms/MockKernel.jl, where it implements a simple Roentgen.point_dose
method.
In addition to Roentgen.point_dose
, it is recommended to implement a calibrate!
method. This method calibrates the dose calculation to a given meterset value,
calibrate!(calc, MU, fieldsize, SAD[, SSD=SAD])
Scales the dose such that the maximum dose is 1 Gy for MU
monitor units, given fieldsize
and source-axis distance (SAD
). The source-surface distance SSD
can be set if SSD!=SAD
.
Finite Pencil Beam Kernel
Implements the Jelen et al. 2005, "A finite size pencil beam for IMRT dose optimization" dose calculation kernel. All references to equations and variables refer to equations in the original paper.
The FinitePencilBeamKernel
struct stores machine dependent kernel parameters:
parameters
: 1D interpolator to obtain $w_1$, $u_x$ and $u_y$ at a given gepthscaling_factor
: 2D interpolator to obtain $A$ at a given depth and tanθα_depth
andα_tanθ
: scaling factor to speed up interpolation
The values for $w_1$, $u_x$, $u_y$ and $A$ are typically obtained from Monte-Carlo simulations or water tank data. Please refer to the original publication for detailed instructions.
FinitePencilBeamKernel
can be constructed either by directly providing the above parameters,
calc = FinitePencilBeamKernel(parameters, scaling_factor, α_depth, α_tanθ)
or by providing arrays for parameters
, scaling_factor
, depths
and tanθ
,
calc = FinitePencilBeamKernel(parameters, scaling_factor, depths, tanθ)
These parameters can also be loaded from a JLD2 filetype (based on the HDF5 standard),
calc = FinitePencilBeamKernel("path/to/fpbk.jld2")