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

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
22namespace 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:
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
66
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
86 };
87
93 operator*(const Transform3D & m, const Vector3D<float> & v);
94
101 template<>
102 class Vector3D<double> : public BasicVector3D<double> {
103 public:
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
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
187typedef HepGeom::Vector3D<double> HepVector3D;
188#endif
189
190#endif /* HEP_VECTOR3D_H */
Vector3D(const CLHEP::Hep3Vector &v)
Vector3D< double > & operator=(const Vector3D< double > &v)
Vector3D(const BasicVector3D< double > &v)
Vector3D< double > & operator=(const BasicVector3D< float > &v)
Vector3D(const BasicVector3D< float > &v)
Vector3D(const Vector3D< double > &v)
Vector3D< double > & operator=(const BasicVector3D< double > &v)
Vector3D< double > & transform(const Transform3D &m)
Vector3D(double x1, double y1, double z1)
Vector3D< float > & operator=(const Vector3D< float > &v)
Vector3D(float x1, float y1, float z1)
Vector3D< float > & operator=(const BasicVector3D< float > &v)
Vector3D(const BasicVector3D< float > &v)
Vector3D< float > & transform(const Transform3D &m)
Vector3D(const Vector3D< float > &v)
#define double(obj)
Normal3D< float > operator*(const Transform3D &m, const Normal3D< float > &v)
Definition Normal3D.cc:25