Skip to content

feat: add event dataset browser with physics-aware filtering #861

@rx18-eng

Description

@rx18-eng

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions