HSF / HSF/phoenix

feat: add event dataset browser with physics-aware filtering

Open
#861 4 comments 0 reactions 1 assignee View on GitHub

@rx18-eng is already working on this.

Since Mar 27, 2026.

Dominant language
TypeScript
Stars
88
Forks
105
Avg merge
16h 15m
Merged PRs (30d)
34

Description

Problem

When loading multi-event files (PHYSLITE, CMS .ig, EDM4hep), Phoenix shows a simple dropdown with event keys ("Event 1", "Event 2"...). There's no way to know what's inside each event without loading it. Users click through events blindly looking for interesting topologies.

For PHYSLITE files with 100+ events, or masterclass datasets with 50 events, this wastes significant time. Students spend more time clicking "next" than analyzing physics.

Proposed Solution

An event dataset browser panel that pre-scans all loaded events and shows a sortable, filterable physics summary.

Core features:

  • Pre-scan events on load, build summary index (object counts per collection, MET, total energy)
  • Sortable table (click column header to sort by # jets, # muons, MET, etc.)
  • Filter controls (e.g. "events with >= 2 muons", "MET > 20 GeV")
  • Click a row to load that event
  • Keyboard navigation (arrow keys to browse, Enter to load)
  • Active event highlighted in the table

Design principles:

  • Config-driven columns and filters (experiment-agnostic, works for ATLAS/CMS/LHCb/FCC)
  • No new dependencies (reuses existing Angular patterns)
  • Works with any data format that Phoenix supports

Example column config:

{
  columns: [
    { key: 'eventNumber', label: 'Event' },
    { key: 'Jets', label: 'Jets', countCollection: true },
    { key: 'Tracks', label: 'Tracks', countCollection: true },
    { key: 'Muons', label: 'Muons', countCollection: true },
  ],
  filters: [
    { field: 'Muons', operator: '>=', label: 'Min Muons' },
    { field: 'MET', operator: '>=', label: 'Min MET (GeV)' },
  ]
}
Use Cases
  • Students in masterclasses filtering to "2 muon events" to find Z candidates instead of clicking blindly through 50 events
  • Researchers finding events with specific topologies (high MET, many jets, isolated leptons)
  • Developers verifying that their loader produces the expected object counts across events
  • Presenters picking the cleanest event for a talk or demo
Additional Context

Currently the event selector is a <select> dropdown (event-selector.component.ts) with no search, filter, or preview capability. Events are already all held in memory (eventsData in EventDisplay), so pre-scanning requires no additional data loading.

No keyboard shortcuts exist for event navigation (next/prev). This feature would also add arrow key and Enter support for event browsing.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.