Title: Building an Event Display with GAUDI
1Building an Event Display with GAUDI
- LHCb Software Week
- 24-26 November 1999
- P. Mato
2Outline
- Visualization Model in GAUDI
- Functionality
- Status
3Architectural choice
- We do not want to tell a Data Object to draw
itself - A Data Object does not know where to be drawn,
how to be drawn, with which graphical properties
(color, texture, projection,), which graphical
package, ... - Instead we want to decouple Data Object from its
graphical representation. - Same pattern as for persistency using adapter
classes (Converters) - We need to write a Converter for each Data Object
class and each visualization package.
4Visualization Model
Interactive User Interface
Algorithm
xxLabSvc
Algorithm
Algorithm
TransientEvent Data
GraphicalScene
SoCnvSvc
SoXXCnv
SoXXCnv
SoXXCnv
TransientDetector Data
SoXXCnv
5Converter Example SoDetElemCnv
StatusCode SoDetElemCnvcreateRep( DataObject
aObject,IOpaqueAddress) DetectorElement
de dynamic_castltDetectorElementgt(aObject)
ISolid sl de-gtgeometry()-gtlvolume()-gts
olid()-gtcoverTop() SolidBox box
dynamic_castltSolidBoxgt(sl) SoSeparator
separator new SoSeparator SoTransform trans
new SoTransform Hep3Vector c
de-gtgeometry()-gtmatrix().getTranslation()
-1.0 Hep3Vector v double angle
de-gtgeometry()-gtmatrix().getRotation().getAngleAxi
s(angle , v ) trans-gttranslation.setValue(
c.x(), c.y(), c.z()) trans-gtrotation
SbRotation( SbVec3f(v.x(),v.y(),v.z()), angle)
separator-gtaddChild(trans) SoCube cube
new SoCube() cube-gtwidth box-gtxHalfLength()
2 cube-gtheight box-gtyHalfLength() 2
cube-gtdepth box-gtzHalfLength() 2
separator-gtaddChild(cube)
6Managing the two stores
Graphical Store
Bi-directional opaque address
TransientEvent Data
G
pick()
update()
7Potential Functionality
- What can be displayed?
- In principle anything that is in any of the
transient stores (event, detector, histogram,)
can be displayed. Needed corresponding converter. - Objects not in the transient stores could also be
drawn if driven by algorithms. - How much interactivity?
- Not the business of data visualization. The
interactive user interface is another service.
8GaudiLab Status
- Prototype exists based on Open Scientist()
- Proof of concept
- Could be useful for debugging. E.g. geometry,
algorithms - More work is needed to make it complete and
usable.
() OpenGL, OpenInventor, HEPVis, Lab, ...