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: allowed_detectors = { SHGeoType.unknown: (), SHGeoType.zone: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.cyl: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.msh: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.plane: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.dzone: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.dcyl: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.dmsh: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.dplane: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.dcylz: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.dmshz: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), SHGeoType.trace: (SHDetType.unknown, ), SHGeoType.voxscore: (SHDetType(i + 1) for i in range(SHDetType.flu_neut - 1)), 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.unknown 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