Class LorentzVector Discussion

From: Jeff Templon (templon@studbolt.physast.uga.edu)
Date: Tue Jul 13 1999 - 20:36:26 MEST


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