3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 ///////////////////////////////////////////////////////////////////////////
10 // Handling of Lorentz 4-vectors in various reference frames.
12 // This class is meant to serve as a base class for ALICE objects
13 // that have Lorentz 4-vector characteristics.
15 // All 4-vectors are treated in the contravariant form and the convention
16 // for the metric and the 4-vector components is according to the one
17 // used in the book "Classical Electrodynamics" by J.D. Jackson.
19 // The dotproduct is defined such that p.Dot(p) yields the Lorentz invariant
20 // scalar of the 4-vector p (i.e. m**2 in case p is a 4-momentum).
24 // Vectors (v) and reference frames (f) are specified via
25 // SetVector(Float_t* v,TString f) under the following conventions :
27 // f="car" ==> 3-vector part of v in Cartesian coordinates (x,y,z)
28 // f="sph" ==> 3-vector part of v in Spherical coordinates (r,theta,phi)
29 // f="cyl" ==> 3-vector part of v in Cylindrical coordinates (rho,phi,z)
31 // All angles are in radians.
38 // Float_t v[4]={25,-1,3,7};
39 // a.SetVector(v,"car");
42 // a.GetVector(vec,"sph");
45 // Float_t v2[4]={33,6,-18,2};
46 // b.SetVector(v2,"car");
48 // Float_t dotpro=a.Dot(b);
52 // Float_t vec2[3]={1,2,3};
53 // x.SetVector(vec2,"car");
57 // c.GetVector(vec,"car");
63 //--- NvE 01-apr-1999 UU-SAP Utrecht
64 ///////////////////////////////////////////////////////////////////////////
69 #include "Ali3Vector.h"
74 Ali4Vector(); // Default constructor for contravariant vector
75 virtual ~Ali4Vector(); // Destructor
76 virtual void SetVector(Double_t v0,Ali3Vector v); // Store contravariant vector
77 virtual void SetVector(Double_t* v,TString f); // Store contravariant vector v^i in frame f
78 virtual void GetVector(Double_t* v,TString f); // Provide contravariant vector v^i in frame f
79 virtual void SetVector(Float_t* v,TString f); // Store contravariant vector v^i in frame f
80 virtual void GetVector(Float_t* v,TString f); // Provide contravariant vector v^i in frame f
81 Double_t GetScalar(); // Provide the scalar part of v
82 Ali3Vector Get3Vector(); // Provide the 3-vector part of v
83 virtual void Info(TString f="car"); // Print contravariant components in frame f
84 Double_t Dot(Ali4Vector& q); // Provide dot product v^i*q_i
85 Ali4Vector operator+(Ali4Vector& q); // Add contravariant vector q
86 Ali4Vector operator-(Ali4Vector& q); // Subtract contravariant vector q
87 Ali4Vector operator*(Double_t s); // Multiply contravariant vector with scalar s
88 Ali4Vector operator/(Double_t s); // Divide contravariant vector by scalar s
89 Ali4Vector& operator+=(Ali4Vector& q); // Add contravariant vector q
90 Ali4Vector& operator-=(Ali4Vector& q); // Subtract contravariant vector q
91 Ali4Vector& operator*=(Double_t s); // Multiply with scalar s
92 Ali4Vector& operator/=(Double_t s); // Divide by scalar s
95 Double_t fV0; // The scalar part
96 Ali3Vector fV; // The 3-vector part
98 ClassDef(Ali4Vector,1) // Class definition to enable ROOT I/O