diff --git a/orcasong/core.py b/orcasong/core.py index cf0c6895b6241d36a89a395f3d244e0785fc3213..3f9985e8dccadbbcb08854462f291fe9845f38e4 100644 --- a/orcasong/core.py +++ b/orcasong/core.py @@ -58,6 +58,7 @@ class BaseProcessor: If False, throw an error instead. mc_info_to_float64 : bool Convert everything in the mcinfo array to float 64 (Default: True). + Hint: int dtypes can not store nan! Attributes ---------- @@ -86,7 +87,6 @@ class BaseProcessor: det_file=None, center_time=True, add_t0=False, - correct_timeslew=False, event_skipper=None, chunksize=32, keep_event_info=True, @@ -97,7 +97,6 @@ class BaseProcessor: self.det_file = det_file self.center_time = center_time self.add_t0 = add_t0 - self.correct_timeslew = correct_timeslew self.event_skipper = event_skipper self.chunksize = chunksize self.keep_event_info = keep_event_info @@ -126,7 +125,7 @@ class BaseProcessor: """ if outfile is None: - outfile = os.path.join(os.getcwd(), "{}_hist.h5".format( + outfile = os.path.join(os.getcwd(), "{}_dl.h5".format( os.path.splitext(os.path.basename(infile))[0])) if not self.overwrite: if os.path.isfile(outfile): @@ -155,7 +154,7 @@ class BaseProcessor: for infile in infiles: outfile = os.path.join( outfolder, - f"{os.path.splitext(os.path.basename(infile))[0]}_hist.h5") + f"{os.path.splitext(os.path.basename(infile))[0]}_dl.h5") outfiles.append(outfile) self.run(infile, outfile) return outfiles @@ -183,11 +182,10 @@ class BaseProcessor: if self.det_file: cmpts.append((modules.DetApplier, {"det_file": self.det_file})) - if any((self.center_time, self.add_t0, self.correct_timeslew)): + if any((self.center_time, self.add_t0)): cmpts.append((modules.TimePreproc, { "add_t0": self.add_t0, - "center_time": self.center_time, - "correct_timeslew": self.correct_timeslew})) + "center_time": self.center_time})) return cmpts @abstractmethod diff --git a/orcasong/modules.py b/orcasong/modules.py index b486c0809e6b16de30c32ceeb5323aa2e0b8f919..fc0cba8d415620019125b75aeeb33fc0f80a7345 100644 --- a/orcasong/modules.py +++ b/orcasong/modules.py @@ -59,22 +59,15 @@ class TimePreproc(kp.Module): ---------- add_t0 : bool If true, t0 will be added to times of hits and mchits. - correct_timeslew : bool - If true, the time slewing of hits depending on their tot - will be corrected. center_time : bool If true, center hit and mchit times with the time of the first triggered hit. - subtract_t0_mchits : bool - It True, subtract t0 from the times of mchits. """ def configure(self): self.add_t0 = self.get('add_t0', default=False) - self.correct_timeslew = self.get("correct_timeslew", default=False) self.center_time = self.get('center_time', default=True) - self.subtract_t0_mchits = self.get('subtract_t0_mchits', default=False) self._has_mchits = None self._print_flags = set() @@ -82,23 +75,13 @@ class TimePreproc(kp.Module): def process(self, blob): if self._has_mchits is None: self._has_mchits = "McHits" in blob - if self.add_t0: blob = self.add_t0_time(blob) - if self.correct_timeslew: - blob = self.timeslew(blob) - if self.subtract_t0_mchits and self._has_mchits: - blob = self.subtract_t0_mctime(blob) if self.center_time: blob = self.center_hittime(blob) return blob - def timeslew(self, blob): - self._print_once("Subtracting time slew of hit times") - blob["Hits"]["time"] -= km.mc.slew(blob["Hits"]["tot"]) - return blob - def add_t0_time(self, blob): self._print_once("Adding t0 to hit times") blob["Hits"].time = np.add(blob["Hits"].time, blob["Hits"].t0) @@ -109,12 +92,6 @@ class TimePreproc(kp.Module): return blob - def subtract_t0_mctime(self, blob): - self._print_once("Subtracting t0 from mchits") - blob["McHits"].time = np.subtract( - blob["McHits"].time, blob["McHits"].t0) - return blob - def center_hittime(self, blob): hits_time = blob["Hits"].time hits_triggered = blob["Hits"].triggered @@ -459,11 +436,17 @@ class DetApplier(kp.Module): "errors with t0." ) self._calib_checked = True - # TODO use built-in time slewing of km3pipe 9 once released - blob = self.calib.process(blob, key="Hits", outkey="Hits") + blob["Hits"] = self.calib.apply(blob["Hits"], correct_slewing=True) if "McHits" in blob: - blob = self.calib.process(blob, key="McHits", outkey="McHits") + blob["McHits"] = self.calib.apply(blob["McHits"]) + # TODO remove once https://git.km3net.de/km3py/km3pipe/-/issues/239 is solved + self.subtract_t0_mctime(blob) + + return blob + def subtract_t0_mctime(self, blob): + blob["McHits"].time = np.subtract( + blob["McHits"].time, blob["McHits"].t0) return blob