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:
-
Fast:
-
Minimize network traffic.
-
Minimize accumulation of call overhead.
-
Maintainable:
-
Let a static installed base of client software handle new Representable
Types from evolving servers.
-
Allow physicists to add Representables by modifying only the server side
code.
-
Avoid class explosion in the interface definition and client.
-
Full-Featured:
-
Enable picking and physics-based visibility cuts in a simple way for all
Representables.
-
Make such features possible without slowing down those clients that don't
want such functionality.
-
Provide a flexible, generic solution to the problem of pickable object
granularity (give the user fine-grained pick abilities, such as the ability
to pick on a single hit on a track, while avoiding having so many separate
pickable objects that the graphics engine is overloaded).
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.
-
An already existing HepRep-enabled event display client such as WIRED3 or
FRED
can be immediately reused by any other experiment just by having that experiment
implement a HepRep server.
-
A competing HepRep-enabled event display client could immediately get data
from any HepRep event display server. The experiment providing the
server doesn't have to commit their future success to a 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.
-
Detailed PowerPoint Presentation covering all of the major ideas (
PowerPoint
- 864K) (PDF
- 688K)
-
Writeup giving details of the important HepRep Attribute named "DrawAs"
which defines the available set of graphics primitives and their attributes
(Word - 159K)
(PDF
- 241K)
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