Star Event Display requirements

 Geometry:

1. Display exactly XY,YZ,ZX views. Not by user rotation;
2. Visibility:
   a) Object is seen, but not its daughters;
   b) Object is not seed seen, but its are seed daughters;
   c) Object is seen but transparent, so his daughters also seen;
   d) Total level of detailisation. Usually default is 5, but sometimes needed more, which slower of course;
   e)  Wire representation and normal one, with suppress of  unseen edges;

3. Axis:
   a) Show short axis, only to understand orientation. They could be in some of angles
       or in the middle, selected by user;
   b) Big axes, with ticks in centimetres or in metres, to understand the real sizes;

4. Clicks:
    a) Shows the volume name, parameters, material, etc...
    b) Shows the X,Y,Z coordinates and name. Repeating shows inner volume , etc..

5. Rotations:
   a) If it is XY representation, rotation around Z
   b) Rotation around X
   c) May be also rotation around Y
   d) Some click defines centre of rotation

6. Shifts, X,Y,Z . Note, shift in Z is not a ZOOM
7. Zoom

7. Switch on and off perspective vision. Default is off.
 
Simplified Geometry
    This geometry made not from TGeo. It is used special file with very simple geometry which is used
    only as background for tracks. Almost all the methods, described above, do not work for this geometry.
   Usually we used  only TPC file, but a few other detectors also implemented.

Tracks and Hits

1. Tracks could be seen with or without hits;
2. Hits without tracks could be seen as used, unused or all;
3. Click to hit provides position, name of volume, etc...
4 .Click to track also provides some information, momentum, number of hits,  etc...
5. Some track filter could be used, to filter out non interesting track.

Programming Interface.
Such interface was proposed by Thomas Ullrikh and implemented by V.Fine.
This interface you can look in $STAR/StRoot/StarRoot/StDraw3D.h
there are virtual methods to define track, hit,group of hits, etc...
User can overload these methods in his own class.
and define track, using McTrack, StiTrack, StvTrack, StTrack etc...
This class could be created in user program and called even from gdb line.
It is extremely useful for debugging

Resume.
I did not mention the methods which I did not use. There is a lot of them.
Sure, I forgot some, which I will add later.