mirror of
https://github.com/pim-n/pg-rad
synced 2026-05-14 07:18:11 +02:00
Add detector architecture + isotropic detectors
This commit is contained in:
0
src/pg_rad/detector/__init__.py
Normal file
0
src/pg_rad/detector/__init__.py
Normal file
20
src/pg_rad/detector/builder.py
Normal file
20
src/pg_rad/detector/builder.py
Normal file
@ -0,0 +1,20 @@
|
||||
from pg_rad.inputparser.specs import DetectorSpec
|
||||
|
||||
from .detectors import IsotropicDetector, AngularDetector
|
||||
|
||||
|
||||
class DetectorBuilder:
|
||||
def __init__(
|
||||
self,
|
||||
detector_spec: DetectorSpec,
|
||||
):
|
||||
self.detector_spec = detector_spec
|
||||
|
||||
def build(self) -> IsotropicDetector | AngularDetector:
|
||||
if self.detector_spec.is_isotropic:
|
||||
return IsotropicDetector(
|
||||
self.detector_spec.name,
|
||||
self.detector_spec.eff
|
||||
)
|
||||
else:
|
||||
raise NotImplementedError("Angular detector not supported yet.")
|
||||
38
src/pg_rad/detector/detectors.py
Normal file
38
src/pg_rad/detector/detectors.py
Normal file
@ -0,0 +1,38 @@
|
||||
from abc import ABC
|
||||
|
||||
|
||||
class BaseDetector(ABC):
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
eff: float
|
||||
):
|
||||
self.name = name
|
||||
self.eff = eff
|
||||
|
||||
def get_efficiency(self):
|
||||
pass
|
||||
|
||||
|
||||
class IsotropicDetector(BaseDetector):
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
eff: float | None = None
|
||||
):
|
||||
super().__init__(name, eff)
|
||||
|
||||
def get_efficiency(self, energy):
|
||||
return self.eff
|
||||
|
||||
|
||||
class AngularDetector(BaseDetector):
|
||||
def __init__(
|
||||
self,
|
||||
name: str,
|
||||
eff: float | None = None
|
||||
):
|
||||
super().__init__(name, eff)
|
||||
|
||||
def get_efficiency(self, angle, energy):
|
||||
pass
|
||||
Reference in New Issue
Block a user