To the authors of the new ROOT documentation, Thanks to René Brun, I had the chance to read a pre-release of the new ROOT documentation and here are my comments about it. First of all, it is clear that it is a huge improvment as compared to what was available before. Reading it, I have found that in the past I missed plenty of interesting features. So first of all , be insure that I am very satisfied with this new documentation. If what follows contains more critics than compliments, it is not because I do not recognise that giant step forward, it is because criticism is a more efficient way of getting things improved. So here are my comments, for every chapter : (1) - Chapter 1 Introduction. : Ok keep it as it is. (2) - Chapter 2 Getting Started : Ok keep it as it is. (3) - Chapter 3 A little C++ : It is a good idea to place such a chapter here. On the other hand, it is extremely difficult here to find the right middle between too short introduction and writing a book on C++. I think you are too close to the first case. To my mind, a user knowing nothing about C++ will not understand what you mean by inheritance. A definition of "Stack" and "Heap" would also be useful. You use these concepts without defining them. You should also end this chapter with recommended books on C++. (4) - Chapter 4 CINT the C++ Interpreter. This chapter is very good until you come to the point of "compiling a script". To my mind, ACLiC is a very strange extension to ROOT. If you have come to the point where your script are becoming too slow to execute, it means ( at least to my opinion ) that you have done the mistake of leaving in CINT things that you should have compiled and linked with ROOT. ACLiC looks to me as something for people in a hurry, not having time to do things properly. If I am wrong, it means at least that this chapter was not clever enough to make me understand why. If I am right, I think that ACLiC should not be explained here, but in an appendix. (5) - Chapter 5 Extending ROOT with your code This chapter is not clear enough about the following point : there are 2 ways of extending ROOT with user classes : (A) - either one builds an entirely new ROOT, containing the user classes in addition. This requires a main program, which is not documented in this chapter. (B) - either one builds a .so (or .dll) library, which has then to be loaded through gSystem.Load("xxx.so"); I am not sure of what follows, but at least it is what I have experienced with ROOT : Point (B) is only working if one does not define global variables. I have never succeeded in doing a .so or .dll in case my code contained global variables. If it is true, this chapter should explain why. If it is not true, there is something that I missed in the way to define global variables for which I found nothing in this chapter. (6) - Collection Classes To my opinion, it is the chapter which requires the biggest effort to improve. It contains too much information about internal working which is of interest only for those interesting in understanding the code, and not enough information about the interest for the user to use collection classes. It should begin by an explanation about why the "array" construct of C++ is not sufficient. It should explain why ROOT is so rich in different collection classes (for instance, I confess that until now, I have only used TObjArray, and that I was hoping in reading this chapter that I would find interest in the other collection classes, but it was not the case, except for the TClonesArray class, for which unfortunatly many things remained unclear to me, I come to this point later ). Points unclear to me : - for TList, why including a previous and a next pointer, since TIter does the job ? - why not include the operator[] to all collection classes ? - for TCloneArray, it is said that they have fixed length, and in the example given, they are used for storing tracks, something which by no mean has fixed length ! There are short tracks and there are long tracks ! Does it mean that one reserves always the memory for the longest possible track ? it seems awful and surely I missed something. Besides of this, the chapter terminates abruptly and give no explanation about THashList, TOrdCollection ? (7) - Chapter 7 Histograms and Fitting Excellent chapter. Perhaps should be placed sooner ? (8) - Chapter 8 Input/Output Excellent chapter. (9) - Chapter 9 Graphics and Interaction with the user: it is the best chapter of the book. Reading it, I profoundly regret to not having it with me 2 years ago ! (10)- Chapter 10 Trees An other excellent chapter. You should emphasize much more the remark at the end of page 195 : ROOT does not support splitting an object that has pointers as data members. I felt several times into this and in that case, ROOT crashes wildly without any warning message. (..) I have not yet read the last chapters To finish, some regrets or puzzles: - Why nothing about 3D ? Coming to this point, the status of ROOT about 3D to-day seems strange : Why is it possible to do such a complicated thing as moving in 3D an object like a TGTRA and impossible to simply define such simple objects like a 3d line ? - I was extremely surprised looking at the drawing of page 140. Here we can see ROOT working inside a MacIntosh window !!! Have you installed ROOT on Mac without making any publicity about that ??? F.X. Gentit DAPNIA/SPP CEN Saclay tel : 01 69 08 30 38 fax : 01 69 08 64 28 web : http://home.cern.ch/~gentit/
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:35 MET