docs: def apply_filter(self, *args, **kwargs):
          """Overridden `apply_filter` to perform tasks for hierarchy child"""
          if self.filter is not None:
              # make sure self.filter knows about root manual indices
              self.filter.retrieve_manual_indices()
  
          # Copy event data from hierarchy parent
          self.hparent.apply_filter()
          # update event index
          event_count = np.sum(self.hparent._filter)
          self._events = {}
          self._events["index"] = np.arange(1, event_count + 1)
          # set non-scalar column data
          if "contour" in self.hparent:
              self._events["contour"] = ChildContour(self)
          if "image" in self.hparent:
              self._events["image"] = ChildImage(self)
          if "mask" in self.hparent:
              self._events["mask"] = ChildMask(self)
          if "trace" in self.hparent:
              trdict = {}
              for flname in dfn.FLUOR_TRACES:
                  if flname in self.hparent["trace"]:
                      trdict[flname] = ChildTrace(self, flname)
              self._events["trace"] = trdict
          # update config
          self.config["experiment"]["event count"] = event_count
  
          self._init_filters()
          super(RTDC_Hierarchy, self).apply_filter(*args, **kwargs)