Hi, I saw Pasha's message of a few days ago about the new LorentzVector class and thought I'd weigh in with a couple of concerns. First, I am surprised about the lack of "interknowledge" of a LorentzVector with its three-vector as well. I am prototyping a Monte-Carlo program for electron scattering just to evaluate ROOT/C++ as a platform for a further, bigger project. I have four-vector classes I wrote (in Python) before, and the ones in ROOT operate totally differently. The tack I took was that the invariant square of the vector was _invariant_ so that this, not the fourth component (energy or time) was the fourth data member. This has the advantage that if one changes the momentum of a vector (through a process such as ionization energy loss), you can simply reset the momentum and let the class figure out the energy by itself that is necessary to keep the mass identical. It sees to me that with the current ROOT classes, lots of extra work is necessary if you worry about keeping the invariant square really invariant under operations on a four-vector. Given the design decision made by the ROOT team, there should be other convenience functions. Perhaps this is what is meant by the function void SetVectM(TVector3& spatial, Double_t mass) but it was not too obvious from the documentation. And again not preserving the invariant mass under operations has led to floating-point roundoff difficulties for me in the past; in my first version of four-vector classes I took the same approach as the ROOT classes did. JAT
This archive was generated by hypermail 2b29 : Tue Jan 04 2000 - 00:43:35 MET