code: def get_hacr_triggers(channel, start, end, columns=HACR_COLUMNS, pid=None,
                        monitor='chacr', selection=None, **connectkwargs):
      
      if columns is None:
          columns = HACR_COLUMNS
      columns = list(columns)
      span = Segment(*map(to_gps, (start, end)))
  
      # parse selection for SQL query (removing leading 'where ')
      selectionstr = 'and %s' % format_db_selection(selection, engine=None)[6:]
  
      # get database names and loop over each on
      databases = get_database_names(start, end)
      rows = []
      for db in databases:
          conn = connect(db, **connectkwargs)
          cursor = conn.cursor()
          # find process ID(s) for this channel
          pids = query("select process_id, gps_start, gps_stop "
                       "from job where monitorName = %r and channel = %r"
                       % (monitor, str(channel)), connection=conn)
          for p, s, e in pids:
              # validate this process id
              if pid is not None and int(p) != int(pid):
                  continue
              tspan = Segment(float(s), float(e))
              if not tspan.intersects(span):
                  continue
              # execute trigger query
              q = ('select %s from mhacr where process_id = %d and '
                   'gps_start > %s and gps_start < %d %s order by gps_start asc'
                   % (', '.join(columns), int(p), span[0], span[1],
                      selectionstr))
              n = cursor.execute(q)
              if n == 0:
                  continue
              # get new events, convert to recarray, and append to table
              rows.extend(cursor.fetchall())
      return EventTable(rows=rows, names=columns)
docs: Fetch a table of HACR triggers in the given interval