Source code for km3dq_common.detector_fact_classes
#!/usr/bin/env python3
import re 
###############################################################################
[docs]
class DetectorFact(dict):
    """
    Detector fact classes inheriting from a dict
    https://realpython.com/inherit-python-dict/
    """
    def __init__(self):
        dict.__init__(self,
                      hardware="",
                      location="",
                      coord_detx={"x":0.,
                                  "y":0.,
                                  "z":0.},
                      coord_utm={"x":0.,
                                 "y":0.,
                                 "z":0.},
                      accuracy="",
                      position=0,
                      status="",
                      upi=0,
                      site="",
                      det="",
                      time="",
                      following_run=0,
                      comment="",
                      waveform="",
                      emission_rate="",
                      documentation="",
                      author="")
[docs]
    def compute_utm_coord_from_detx(self):
        if self.site == "ARCA":
            self.coord_utm["x"] = self.coord_detx["x"] + 587600
            self.coord_utm["y"] = self.coord_detx["y"] + 4016800
            self.coord_utm["z"] = self.coord_detx["z"]
        else:
            self.coord_utm["x"] = self.coord_detx["x"] + 256500
            self.coord_utm["y"] = self.coord_detx["y"] + 4743000
            self.coord_utm["z"] = self.coord_detx["z"]
[docs]
    def compute_detx_coord_from_utm(self):
        if self.site == "ARCA":
            self.coord_detx["x"] = self.coord_utm["x"] - 587600
            self.coord_detx["y"] = self.coord_utm["y"] - 4016800
            self.coord_detx["z"] = self.coord_utm["z"]
        else:
            self.coord_detx["x"] = self.coord_utm["x"] - 256500
            self.coord_detx["y"] = self.coord_utm["y"] - 4743000
            self.coord_detx["z"] = self.coord_utm["z"]
[docs]
    def extract_coord_from_location(self):
        r = re.search(
            r"([du])\((-*\d+\.\d+)\,(-*\d+\.\d+)\,(-*\d+\.\d+)\)([cdenu])",
            self.location
        )
        if r.group(1) == "d":  # detx coordinates in detector fact file
            self.coord_detx["x"] = float(r.group(2))
            self.coord_detx["y"] = float(r.group(3))
            self.coord_detx["z"] = float(r.group(4))
            self.compute_utm_coord_from_detx()
        elif r.group(1) == "u":  # utm coordinates  in detector fact file
            self.coord_utm["x"] = float(r.group(2))
            self.coord_utm["y"] = float(r.group(3))
            self.coord_utm["z"] = float(r.group(4))
            self.compute_detx_coord_from_utm()
        dict_accuracy = {
            "c": "calibration",
            "d": "detx file",
            "e": "exail",
            "n": "nominal",
            "u": "unknown"
        }
        self.accuracy = dict_accuracy[r.group(5)]