Source code for pymchelper.shieldhit.detector.estimator

import logging

from pymchelper.shieldhit.detector.detector_type import SHDetType
from pymchelper.shieldhit.detector.estimator_type import SHGeoType
from pymchelper.shieldhit.detector.geometry import Geometry
from pymchelper.shieldhit.particle import SHParticleType, SHHeavyIonType

logger = logging.getLogger(__name__)


[docs]class SHEstimator: # (internal) Number of detector to be used with most scorers. # This correspons to the last "normal" detector minus 1, since the 0 detector is not inlucded. # Update the last detector if new detectors are added. _nn_det = SHDetType.flu_neqv - 1 allowed_detectors = { SHGeoType.unknown: (), SHGeoType.zone: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.cyl: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.msh: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.plane: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.dzone: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.dcyl: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.dmsh: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.dplane: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.dcylz: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.dmshz: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.trace: (SHDetType.none,), SHGeoType.voxscore: (SHDetType(i + 1) for i in range(_nn_det)), SHGeoType.geomap: (SHDetType.zone, SHDetType.medium, SHDetType.rho), } def __init__(self): self.estimator = SHGeoType.unknown self.particle_type = SHParticleType.unknown self.heavy_ion_type = SHHeavyIonType() self.detector_type = SHDetType.none self.geometry = Geometry() self.filename = ""
[docs] def is_valid(self): if self.estimator not in self.geometry.allowed_estimators(): logger.error("{:s} is not a valid estimator for {:s} " "geometry".format(self.estimator, self.geometry)) return False return True