3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 ///////////////////////////////////////////////////////////////////////////
10 // Handling of 3-vectors in various reference frames.
12 // This class is meant to serve as a base class for ALICE objects
13 // that have 3-dimensional vector characteristics.
17 // Vectors (v) and reference frames (f) are specified via
18 // SetVector(Float_t* v,TString f) under the following conventions :
20 // f="car" ==> v in Cartesian coordinates (x,y,z)
21 // f="sph" ==> v in Spherical coordinates (r,theta,phi)
22 // f="cyl" ==> v in Cylindrical coordinates (rho,phi,z)
24 // All angles are in radians.
30 // Float_t v[3]={-1,25,7};
31 // a.SetVector(v,"car");
35 // a.GetVector(vec,"sph");
38 // Float_t v2[3]={6,-18,33};
39 // b.SetVector(v2,"car");
41 // Float_t dotpro=a.Dot(b);
43 // Ali3Vector c=a.Cross(b);
45 // c.GetVector(vec,"cyl");
46 // Float_t norm=c.GetNorm();
51 //--- NvE 30-mar-1999 UU-SAP Utrecht
52 ///////////////////////////////////////////////////////////////////////////
63 Ali3Vector(); // Default constructor
64 virtual ~Ali3Vector(); // Destructor
65 virtual void SetVector(Double_t* v,TString f); // Store vector v in frame f
66 virtual void GetVector(Double_t* v,TString f); // Provide vector v in frame f
67 virtual void SetVector(Float_t* v,TString f); // Store vector v in frame f
68 virtual void GetVector(Float_t* v,TString f); // Provide vector v in frame f
69 virtual void Info(TString f="car"); // Print vector components in frame f
70 Double_t GetNorm(); // Provide norm of the vector
71 Double_t Dot(Ali3Vector& q); // Provide dot product with q
72 Ali3Vector Cross(Ali3Vector& q); // Provide cross product with q
73 Ali3Vector operator+(Ali3Vector& q); // Add vector q
74 Ali3Vector operator-(Ali3Vector& q); // Subtract vector q
75 Ali3Vector operator*(Double_t s); // Multiply vector with scalar s
76 Ali3Vector operator/(Double_t s); // Divide vector by scalar s
77 Ali3Vector& operator+=(Ali3Vector& q); // Add vector q
78 Ali3Vector& operator-=(Ali3Vector& q); // Subtract vector q
79 Ali3Vector& operator*=(Double_t s); // Multiply with scalar s
80 Ali3Vector& operator/=(Double_t s); // Divide by scalar s
83 Double_t fV,fTheta,fPhi; // Vector in spherical coordinates
85 ClassDef(Ali3Vector,1) // Class definition to enable ROOT I/O