pymkm.utils.geometry_tools¶
Geometric utilities for modeling energy deposition in microdosimetry.
This module provides helper functions to support radial dose integration and geometric modeling of ion tracks intersecting sensitive volumes.
All methods assume cylindrical symmetry and operate in micrometer units.
- class pymkm.utils.geometry_tools.GeometryTools[source]¶
Bases:
object
Collection of geometric helper methods for particle interaction modeling.
Includes utilities to compute sampling point densities, logarithmic radii distributions, and intersection areas between circular regions.
- static calculate_intersection_area(r1: ndarray, r2: float, d: float) ndarray [source]¶
Calculate intersection areas between circles with variable radii and a fixed radius.
For each radius in r1, the method computes the overlap area with a circle of radius r2, located at a center-to-center distance d.
- Parameters:
r1 (np.ndarray) – Array of radii for the first set of circles.
r2 (float) – Radius of the second (fixed) circle.
d (float) – Distance between centers of the two circles.
- Returns:
Array of intersection areas for each radius in r1.
- Return type:
np.ndarray
- static determine_sampling_points(energy: float, radius_max: float, base_points: int = 150) int [source]¶
Determine the number of sampling points based on energy and target radius.
The returned value scales with both energy and radius_max using a heuristic multiplier.
- Parameters:
energy (float) – The particle’s kinetic energy in MeV/u.
radius_max (float) – The maximum radius of interest in micrometers.
base_points (int) – Baseline number of sampling points (default is 150).
- Returns:
Total number of sampling points to use.
- Return type:
int
- static generate_default_radii(energy: float, radius_max: float, radius_min: float | None = 0.001, base_points: int = 150) ndarray [source]¶
Generate a logarithmically spaced array of radii for dose integration.
The number of points is adjusted dynamically based on energy and radius_max. Requires both energy and radius_max to be specified.
- Parameters:
energy (float) – The particle’s kinetic energy in MeV/u.
radius_max (float) – The maximum radius in micrometers.
radius_min (Optional[float]) – The minimum radius in micrometers (default is 1e-3 µm).
base_points (int) – Baseline number of sampling points (default is 150).
- Returns:
Radii sampled on a log scale between radius_min and radius_max.
- Return type:
np.ndarray
- Raises:
ValueError – If energy or radius_max is not provided.