HepRep: a Generic Interface Definition for HEP Event Display Representables

HepRep forms the central part of a complete generic interface for client server event displays.  The HepRep interface supports all of the desirable features of a client server event display, provides for the correct distribution of computing work between the two parts of the system and effectively addresses the many important maintenance issues involved in such a system.

The HepRep interface definition addresses the requirements that an event display should be: With the HepRep interface design, an event display client can not only meet these requirements but can be entirely independent of any one particular HEP collaboration.  The HepRep interface in effect breaks the dependency between any particular experiment's event display server and any particular event display client. HepRep's client-server design provides a modularity that is useful even if the client and server are actually just two processes on the same machine.  The model breaks the event display into two manageable components.  The client half can be written in whatever language provides the appropriate GUI and graphics capabilities.  It is free of the more complex dependencies of the server half (dependent on the experiment’s overall physics framework).

The BaBar Collaboration has been using HepRep version 1 in their event display since early 2000.
BaBar has its client (WIRED3) in Java, its server in C++ and its communications in CORBA, but care has been taken to not tie the HepRep interface definition to any particular language specification or communications protocol.

The GLAST collaboration has used HepRep with both the WIRED3 client and with an alternate HepRep client, FRED, that they wrote based on the FOX toolkit.  GLAST produces HepRep XML and Corba through a C++ driver implemented without their GAUDI framework.

The Geant4 Simulation Program has HepRep as one of its standard supported output formats. Just select "HepRepFile" output and view the results with WIRED3. Geant4 output will be visible in FRED once a little more work is completed on the HepRep2 version of the Geant4 driver.

A simple C++ utility, HepRepXMLWriter is available for those who want to make their own code produce HepRep output. HepRepXMLWriter comes as a single C++ class requiring no additional libraries. Again, use WIRED3 as the viewer.

HepRep was first presented at CHEP2000:

A major revision of HepRep has since been completed incorporating what was learned from a year of experience in the BaBar Collaboration and from an effort to support a second major Collaboration, Atlas.  WIRED3 accepts data in both HepRep1 and HepRep2 formats. FRED accepts data in HepRep2. All users will eventually move to HepRep2.

An extensive PowerPoint presentation covers all of the major ideas in the new HepRep revision, and a new detailed writeup is on the way.

While HepRep may have many additional uses, it was originally developed as part of a Component Approach to HEP Event Displays.  Detailed documentation is available on this larger topic.

Questions/Comments/etc. .. Please send e-mail to perl@slac.stanford.edu

HepRep was developed by Joseph Perl with significant feedback and implementations by Mark Donzelmann, Marco Frailis and Riccardo Giannitrapani.
 

Joseph Perl

27 September 2004