alternative to TLorentzVector

Richard T. Jones (Richard.T.Jones@uconn.edu)
Wed, 14 Jul 1999 15:42:47 -0400


--------------8C03151508D4EBF50E94CE22
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

Hello Rene,

Back a few months ago, I looked at what was available in root and CLHEP
for doing 4-vector algebra and decided that what existed did not look
very extensible. At the time, I wanted to develop a OO mini-framework
for evaluating simple Feynman graphs. I think the basic classes that I
developed may be of general interest, beyond that specific application.
The main advantage of what I have over what CLHEP had was:

1. identical interfaces for real and complex vectors
2. unambiguous indexing methods
3. coherence between 3-vectors and 4-vectors, for example 4-vectors
are derived from three-vectors, rotations and boosts are derived
from a common base class of LorentzTransform.

I think that the classes have member functions for most of the common
operations with these types of objects, and each of them comes with its
own verifier that has fairly complete coverage. My implementation does
suffer from the criticism offered recently against internally storing a
4-vector in four-component form, where rounding errors affect the mass.
This is most important for very small masses compared to the energy
scale, for example involving massive neutrinos, something which did not
occur to me at the time I designed the classes. I have posted the docs
for these classes using the automatic root html generation method at
URL. These objects do not currently derive from TObject to keep them
light-weight, but they have their own streamers, overloaded shift, and
Print() members and contain root RTTI.

http://zeus.phys.uconn.edu/refs/root/USER_Index.html

The underlying classes are

1. TThreeVectorReal
2. TThreeVectorComplex
3. TFourVectorReal
4. TFourVectorComplex
5. TRotation
6. TLorentzBoost
7. TLorentzTransform

with higher-level classes

1. TPauliSpinor
2. TPauliMatrix
3. TDiracSpinor
4. TDiracMatrix

I have also a class TCrossSection that calculates common QED cross
sections (Compton, bremsstrahlung) to leading order with full
polarization included. These classes allow one to write code that
resembles what one would write directly down on paper just looking at a
tree-level diagram, for example

TDiracMatrix propagator1 = 1 / ( (TFourVectorReal *)p1->Slash() - m)
);

More complete examples are shown in TCrossSection.

Richard Jones
University of Connecticut

--------------8C03151508D4EBF50E94CE22
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit

<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
Hello Rene,

Back a few months ago, I looked at what was available in root and CLHEP for doing 4-vector algebra and decided that what existed did not look very extensible.   At the time, I wanted to develop a OO mini-framework for evaluating simple Feynman graphs.  I think the basic classes that I developed may be of general interest, beyond that specific application.  The main advantage of what I have over what CLHEP had was:

  1. identical interfaces for real and complex vectors
  2. unambiguous indexing methods
  3. coherence between 3-vectors and 4-vectors, for example 4-vectors are derived from three-vectors, rotations and boosts are derived from a common base class of LorentzTransform.
I think that the classes have member functions for most of the common operations with these types of objects, and each of them comes with its own verifier that has fairly complete coverage.  My implementation does suffer from the criticism offered recently against internally storing a 4-vector in four-component form, where rounding errors affect the mass.  This is most important for very small masses compared to the energy scale, for example involving massive neutrinos, something which did not occur to me at the time I designed the classes.  I have posted the docs for these classes using the automatic root html generation method at URL.  These objects do not currently derive from TObject to keep them light-weight, but they have their own streamers, overloaded shift, and Print() members and contain root RTTI.

http://zeus.phys.uconn.edu/refs/root/USER_Index.html

The underlying classes are

  1. TThreeVectorReal
  2. TThreeVectorComplex
  3. TFourVectorReal
  4. TFourVectorComplex
  5. TRotation
  6. TLorentzBoost
  7. TLorentzTransform
with higher-level classes
  1. TPauliSpinor
  2. TPauliMatrix
  3. TDiracSpinor
  4. TDiracMatrix
I have also a class TCrossSection that calculates common QED cross sections (Compton, bremsstrahlung) to leading order with full polarization included.  These classes allow one to write code that resembles what one would write directly down on paper just looking at a tree-level diagram, for example

  TDiracMatrix  propagator1 = 1 / ( (TFourVectorReal *)p1->Slash() - m) );

More complete examples are shown in  TCrossSection.

Richard Jones
University of Connecticut
  --------------8C03151508D4EBF50E94CE22--