Bugs and other discoveries
Here are some of the problems and unexpected difficulties encountered.
Perhaps only one (the lack of the no menu bar option under W95) may be
a genuine bug; the rest are "features" which we might either complain about
or like.
-
In-line routines
A surprising discovery: If one defines a class or even
a C procedure within a macro, an error message appears i.e. "Limitation:
Can not define body of function in temp file, File:....". This can
be bypassed by making the procedure into a separate macro such as phtog.C
so it is no real restriction, but it does affect the structure and organization
of a system of macros and shareable libraries.
-
Spreading statements over several lines
This works OK as usual for C++ in general i.e. a carriage return
is "whitespace"; but a string of statements within quotes, such as the
method argument for TButton, cannot be broken by returns.
-
Nested quotes
Perhaps on further reading I'd find a way around such as repeated
quotes or some other defined syntax, but " quotes within " quotes lead
to the obvious ambiguity.
-
Picky about picking
The right mouse pulldowns rely upon one being close to a vertex
such as one corner of a detector rectangle. It might be easier to
pick based on being close to the middle. I don't know how hard this
is to implement. It helps to select a "status bar" from the canvas
menu to display at the bottom which object would be picked by a right click.
A change in color for
an object within picking range, as well as already picked, would help
a lot (but may be too slow... I think a repaint of the canvas is called).
-
TView properties
The TView class automatically scales (but not always it seems?)
to fill the 3-d box in x, y, z. This is very useful in lego and 3-D
plots but distorts views of real apparatus. As you see I experimented
(little green button) with changing to equal scale factors (with
some apparently system dependent mysteries about the offset). I have
not found how to "clip" i.e. all objects are made to fit within the "rotator
box"; maybe we can live with this if we make more selection of subsets
of objects to view (such as just one "banjo" in the multiplicity detectors).
-
TViewOpenGL
This is a very new class and I suspect further work is underway
by the ROOT team. Right now, only mouse rotations are supported;
if object picking (right mouse) is not soon implemented we may be able
to do it ourselves by overloading the ExecuteEvent() method after learning
more about the inner workings of this class. For now, it is
useful for pretty pictures.
-
How to get TView into "final" state?
Note in phgeom.C the repeated c1->Draw() statements that seem
to be required for a view with objects in the proper locations. Why
is this?
-
Consistent path specification
Noted with pleasure: "/" seems to be automatically changed to
"\" in W95 path arguments
-
But not the shell syntax
In W95, start executables with 'Start" in gSystem->Exec() arguments,
but not in UNIX! Also one obviously wants & at the end of the
line in UNIX but not W95/NT. This (and the streamer problem below)
account for differing W95/NT and UNIX downloads.
-
Streamer problems, or my understanding?
The streaming to a string variable seen in phghelp.C is quite
convenient in the W95 version but had to be abandoned in the UNIX version
(replaced by strcpy and strcat calls). The desired string is constructed,
but ROOT crashes at the phghelp.C exit when an operator destructor is called,
presumably the overloaded << for writing to a string?
-
A small but real bug?
Not to criticise Valery Fine's valiant efforts in bringing ROOT
to the W95/NT world, but there may have been a small oversight.
If the first numerical argument of a TCanvas creator is negative, the menu
bar at the top is omitted. This is useful for button panels and is
in fact built in to the inherited class TDialogCanvas. However, it
doesn't work in W95.
