diff --git a/src/pg_rad/objects.py b/src/pg_rad/objects.py index 9e544c8..39ab185 100644 --- a/src/pg_rad/objects.py +++ b/src/pg_rad/objects.py @@ -1,8 +1,6 @@ import math from typing import Self -from pg_rad.isotope import Isotope - class Object: def __init__( self, @@ -32,45 +30,4 @@ class Object: return math.dist( (self.x, self.y, self.z), (other.x, other.y, other.z), - ) - -class Source(Object): - _id_counter = 1 - def __init__( - self, - x: float, - y: float, - z: float, - activity: int, - isotope: Isotope, - name: str | None = None, - color: str = "red"): - """A point source. - - Args: - x (float): X coordinate. - y (float): Y coordinate. - z (float): Z coordinate. - activity (int): Activity A in MBq. - isotope (Isotope): The isotope. - name (str | None, optional): Can give the source a unique name. - Defaults to None, making the name sequential. - (Source-1, Source-2, etc.). - color (str, optional): Matplotlib compatible color string. Defaults to "red". - """ - - self.id = Source._id_counter - Source._id_counter += 1 - - # default name derived from ID if not provided - if name is None: - name = f"Source {self.id}" - - super().__init__(x, y, z, name, color) - - self.activity = activity - self.isotope = isotope - self.color = color - - def __repr__(self): - return f"Source(name={self.name}, pos={(self.x, self.y, self.z)}, isotope={self.isotope.name}, A={self.activity} MBq)" \ No newline at end of file + ) \ No newline at end of file diff --git a/src/pg_rad/sources.py b/src/pg_rad/sources.py new file mode 100644 index 0000000..9c85353 --- /dev/null +++ b/src/pg_rad/sources.py @@ -0,0 +1,43 @@ +from pg_rad.objects import Object +from pg_rad.isotope import Isotope + +class PointSource(Object): + _id_counter = 1 + def __init__( + self, + x: float, + y: float, + z: float, + activity: int, + isotope: Isotope, + name: str | None = None, + color: str = "red"): + """A point source. + + Args: + x (float): X coordinate. + y (float): Y coordinate. + z (float): Z coordinate. + activity (int): Activity A in MBq. + isotope (Isotope): The isotope. + name (str | None, optional): Can give the source a unique name. + Defaults to None, making the name sequential. + (Source-1, Source-2, etc.). + color (str, optional): Matplotlib compatible color string. Defaults to "red". + """ + + self.id = PointSource._id_counter + PointSource._id_counter += 1 + + # default name derived from ID if not provided + if name is None: + name = f"Source {self.id}" + + super().__init__(x, y, z, name, color) + + self.activity = activity + self.isotope = isotope + self.color = color + + def __repr__(self): + return f"PointSource(name={self.name}, pos={(self.x, self.y, self.z)}, isotope={self.isotope.name}, A={self.activity} MBq)" \ No newline at end of file