docs: def select_catalogue_events(self, id0):
          '''
          Orders the events in the catalogue according to an indexing vector
  
          :param np.ndarray id0:
              Pointer array indicating the locations of selected events
          '''
          for key in self.data.keys():
              if isinstance(
                      self.data[key], np.ndarray) and len(self.data[key]) > 0:
                  # Dictionary element is numpy array - use logical indexing
                  self.data[key] = self.data[key][id0]
              elif isinstance(
                      self.data[key], list) and len(self.data[key]) > 0:
                  # Dictionary element is list
                  self.data[key] = [self.data[key][iloc] for iloc in id0]
              else:
                  continue
  
          if len(self.gcmts) > 0:
              self.gcmts = [self.gcmts[iloc] for iloc in id0]
              self.number_gcmts = self.get_number_tensors()