Skip to content

Recipes

Practical, copy-paste patterns for the things you actually want to do with HIPO files. Each recipe assumes you've gone through the Quick Start and have a working build.

Pages

  • Reading files — basic event loop, the preferred banklist pattern, the hipoeventfile range-based iterator, random access via gotoEvent(), tag filtering, column-index caching, listing available banks, and handling missing banks.
  • Writing files — basic write loop, multiple banks per event, user config metadata, the copy/filter pattern, and a generic schema-driven bank filler.
  • Row filtering — three filter styles (lambda, expression string, cached Parser), manual row lists, full row lists, and cross-bank row linking via getRowListLinked().
  • Parallel processing — using the chain class for record-level parallelism across many files, filtered processing, percentage sampling, sequential iteration, thread-safety patterns, and statistics.
  • Integration — calling HIPO from ROOT RDataFrame, the Python hipopy wrapper, Julia, Fortran, and linking via pkg-config / CMake / Make.

When to use which

Goal Start with
Read one bank from one file reading.md — Basic Event Loop
Read several banks reading.md — Banklist Pattern
Process many files quickly parallel.md
Skim only events that pass a row predicate filtering.md
Make a smaller derived file writing.md — Copy/Filter Pattern
Use HIPO data in ROOT or Python integration.md