CLHEP 2.4.7.1
C++ Class Library for High Energy Physics
Normal3D.h
Go to the documentation of this file.
1// -*- C++ -*-
2// $Id: Normal3D.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_NORMAL3D_H
15#define HEP_NORMAL3D_H
16
17#include <iosfwd>
18#include "CLHEP/Geometry/defs.h"
21
22namespace HepGeom {
23
24 class Transform3D;
25
34 template<class T>
35 class Normal3D : public BasicVector3D<T> {};
36
43 template<>
44 class Normal3D<float> : public BasicVector3D<float> {
45 public:
48 Normal3D() = default;
49
52 Normal3D(float x1, float y1, float z1) : BasicVector3D<float>(x1,y1,z1) {}
53
56 explicit Normal3D(const float * a)
57 : BasicVector3D<float>(a[0],a[1],a[2]) {}
58
61 Normal3D(const Normal3D<float> &) = default;
62
66
70
73 ~Normal3D() = default;
74
78
83 return *this;
84 }
85
89
93 };
94
100 operator*(const Transform3D & m, const Normal3D<float> & n);
101
108 template<>
109 class Normal3D<double> : public BasicVector3D<double> {
110 public:
113 Normal3D() = default;
114
117 Normal3D(double x1, double y1, double z1) : BasicVector3D<double>(x1,y1,z1) {}
118
121 explicit Normal3D(const float * a)
122 : BasicVector3D<double>(a[0],a[1],a[2]) {}
123
126 explicit Normal3D(const double * a)
127 : BasicVector3D<double>(a[0],a[1],a[2]) {}
128
131 Normal3D(const Normal3D<double> &) = default;
132
136
139 Normal3D(const BasicVector3D<float> & v) : BasicVector3D<double>(v) {}
140
144
147 ~Normal3D() = default;
148
155 : BasicVector3D<double>(v.x(),v.y(),v.z()) {}
156
162 operator CLHEP::Hep3Vector () const { return CLHEP::Hep3Vector(x(),y(),z()); }
163
167
172 return *this;
173 }
174
179 return *this;
180 }
181
185
189 };
190
197
198} /* namespace HepGeom */
199
200#ifdef ENABLE_BACKWARDS_COMPATIBILITY
201// backwards compatibility will be enabled ONLY in CLHEP 1.9
202typedef HepGeom::Normal3D<double> HepNormal3D;
203#endif
204
205#endif /* HEP_NORMAL3D_H */
BasicVector3D< T > & operator=(const BasicVector3D< T > &)=default
Normal3D(double x1, double y1, double z1)
Definition Normal3D.h:117
Normal3D< float > & transform(const Transform3D &m)
Normal3D< double > & operator=(const Normal3D< double > &)=default
Normal3D< double > operator*(const Transform3D &m, const Normal3D< double > &n)
Normal3D(const BasicVector3D< float > &v)
Definition Normal3D.h:139
Normal3D(const Normal3D< float > &)=default
Normal3D< double > & operator=(Normal3D< double > &&)=default
Normal3D< float > operator*(const Transform3D &m, const Normal3D< float > &n)
Normal3D(Normal3D< double > &&)=default
Normal3D< double > & operator=(const BasicVector3D< double > &v)
Definition Normal3D.h:177
Normal3D< float > & operator=(const Normal3D< float > &)=default
Normal3D(const double *a)
Definition Normal3D.h:126
Normal3D(const BasicVector3D< float > &v)
Definition Normal3D.h:69
Normal3D(const BasicVector3D< double > &v)
Definition Normal3D.h:143
Normal3D< float > & operator=(Normal3D< float > &&)=default
Normal3D< double > & transform(const Transform3D &m)
Normal3D(const float *a)
Definition Normal3D.h:56
Normal3D< double > & operator=(const BasicVector3D< float > &v)
Definition Normal3D.h:170
Normal3D< float > & operator=(const BasicVector3D< float > &v)
Definition Normal3D.h:81
Normal3D(Normal3D< float > &&)=default
Normal3D(const Normal3D< double > &)=default
Normal3D(const CLHEP::Hep3Vector &v)
Definition Normal3D.h:154
Normal3D(const float *a)
Definition Normal3D.h:121
Normal3D(float x1, float y1, float z1)
Definition Normal3D.h:52