CLHEP VERSION Reference Documentation
   
CLHEP Home Page     CLHEP Documentation     CLHEP Bug Reports

CLHEP/Geometry/Vector3D.h
Go to the documentation of this file.
1 // -*- C++ -*-
2 // $Id: Vector3D.h,v 1.3 2003/10/23 21:29:50 garren Exp $
3 // ---------------------------------------------------------------------------
4 //
5 // This file is a part of the CLHEP - a Class Library for High Energy Physics.
6 //
7 // History:
8 // 09.09.96 E.Chernyaev - initial version
9 // 12.06.01 E.Chernyaev - CLHEP-1.7: introduction of BasicVector3D to decouple
10 // the functionality from CLHEP::Hep3Vector
11 // 01.04.03 E.Chernyaev - CLHEP-1.9: template version
12 //
13 
14 #ifndef HEP_VECTOR3D_H
15 #define HEP_VECTOR3D_H
16 
17 #include <iosfwd>
18 #include "CLHEP/Geometry/defs.h"
19 #include "CLHEP/Vector/ThreeVector.h"
21 
22 namespace HepGeom {
23 
24  class Transform3D;
25 
34  template<class T>
35  class Vector3D : public BasicVector3D<T> {};
36 
43  template<>
44  class Vector3D<float> : public BasicVector3D<float> {
45  public:
48  Vector3D() {}
49 
52  Vector3D(float x1, float y1, float z1) : BasicVector3D<float>(x1,y1,z1) {}
53 
56  explicit Vector3D(const float * a)
57  : BasicVector3D<float>(a[0],a[1],a[2]) {}
58 
61  Vector3D(const Vector3D<float> & v) : BasicVector3D<float>(v) {}
62 
65  Vector3D(const BasicVector3D<float> & v) : BasicVector3D<float>(v) {}
66 
69  ~Vector3D() {}
70 
74  set(v.x(),v.y(),v.z()); return *this;
75  }
76 
80  set(v.x(),v.y(),v.z()); return *this;
81  }
82 
85  Vector3D<float> & transform(const Transform3D & m);
86  };
87 
93  operator*(const Transform3D & m, const Vector3D<float> & v);
94 
101  template<>
102  class Vector3D<double> : public BasicVector3D<double> {
103  public:
106  Vector3D() {}
107 
110  Vector3D(double x1, double y1, double z1) : BasicVector3D<double>(x1,y1,z1) {}
111 
114  explicit Vector3D(const float * a)
115  : BasicVector3D<double>(a[0],a[1],a[2]) {}
116 
119  explicit Vector3D(const double * a)
120  : BasicVector3D<double>(a[0],a[1],a[2]) {}
121 
125 
129 
133 
137 
144  : BasicVector3D<double>(v.x(),v.y(),v.z()) {}
145 
151  operator CLHEP::Hep3Vector () const { return CLHEP::Hep3Vector(x(),y(),z()); }
152 
156  set(v.x(),v.y(),v.z()); return *this;
157  }
158 
162  set(v.x(),v.y(),v.z()); return *this;
163  }
164 
168  set(v.x(),v.y(),v.z()); return *this;
169  }
170 
173  Vector3D<double> & transform(const Transform3D & m);
174  };
175 
181  operator*(const Transform3D & m, const Vector3D<double> & v);
182 
183 } /* namespace HepGeom */
184 
185 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
186 // backwards compatibility will be enabled ONLY in CLHEP 1.9
187 typedef HepGeom::Vector3D<double> HepVector3D;
188 #endif
189 
190 #endif /* HEP_VECTOR3D_H */
#define double(obj)
Definition: excDblThrow.cc:32
Vector3D< double > & operator=(const BasicVector3D< double > &v)
Vector3D(const BasicVector3D< float > &v)
Vector3D< float > & operator=(const Vector3D< float > &v)
Vector3D< double > & operator=(const Vector3D< double > &v)
Vector3D< double > & operator=(const BasicVector3D< float > &v)
Vector3D< float > & operator=(const BasicVector3D< float > &v)
Vector3D(const BasicVector3D< float > &v)
Vector3D(const Vector3D< double > &v)
Vector3D(const CLHEP::Hep3Vector &v)
Vector3D(float x1, float y1, float z1)
Vector3D(const BasicVector3D< double > &v)
Vector3D< float > operator*(const Transform3D &m, const Vector3D< float > &v)
Definition: Vector3D.cc:22
Vector3D(double x1, double y1, double z1)
Vector3D(const Vector3D< float > &v)