ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Normal3D.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Normal3D.h
1 // -*- C++ -*-
2 // ---------------------------------------------------------------------------
3 //
4 // This file is a part of the CLHEP - a Class Library for High Energy Physics.
5 //
6 // History:
7 // 09.09.96 E.Chernyaev - initial version
8 // 12.06.01 E.Chernyaev - CLHEP-1.7: introduction of BasicVector3D to decouple
9 // the functionality from CLHEP::Hep3Vector
10 // 01.04.03 E.Chernyaev - CLHEP-1.9: template version
11 //
12 
13 #ifndef HEP_NORMAL3D_H
14 #define HEP_NORMAL3D_H
15 
16 #include <iosfwd>
19 
20 namespace HepGeom {
21 
22  class Transform3D;
23 
32  template<class T>
33  class Normal3D : public BasicVector3D<T> {};
34 
41  template<>
42  class Normal3D<float> : public BasicVector3D<float> {
43  public:
46  Normal3D() = default;
47 
50  Normal3D(float x1, float y1, float z1) : BasicVector3D<float>(x1,y1,z1) {}
51 
54  explicit Normal3D(const float * a)
55  : BasicVector3D<float>(a[0],a[1],a[2]) {}
56 
59  Normal3D(const Normal3D<float> &) = default;
60 
63  Normal3D(Normal3D<float> &&) = default;
64 
67  Normal3D(const BasicVector3D<float> & v) : BasicVector3D<float>(v) {}
68 
71  ~Normal3D() = default;
72 
75  Normal3D<float> & operator=(const Normal3D<float> &) = default;
76 
81  return *this;
82  }
83 
87 
91  };
92 
97  Normal3D<float>
98  operator*(const Transform3D & m, const Normal3D<float> & n);
99 
106  template<>
107  class Normal3D<double> : public BasicVector3D<double> {
108  public:
111  Normal3D() = default;
112 
115  Normal3D(double x1, double y1, double z1) : BasicVector3D<double>(x1,y1,z1) {}
116 
119  explicit Normal3D(const float * a)
120  : BasicVector3D<double>(a[0],a[1],a[2]) {}
121 
124  explicit Normal3D(const double * a)
125  : BasicVector3D<double>(a[0],a[1],a[2]) {}
126 
129  Normal3D(const Normal3D<double> &) = default;
130 
133  Normal3D(Normal3D<double> &&) = default;
134 
137  Normal3D(const BasicVector3D<float> & v) : BasicVector3D<double>(v) {}
138 
142 
145  ~Normal3D() = default;
146 
153  : BasicVector3D<double>(v.x(),v.y(),v.z()) {}
154 
160  operator CLHEP::Hep3Vector () const { return CLHEP::Hep3Vector(x(),y(),z()); }
161 
164  Normal3D<double> & operator=(const Normal3D<double> &) = default;
165 
170  return *this;
171  }
172 
177  return *this;
178  }
179 
183 
187  };
188 
193  Normal3D<double>
194  operator*(const Transform3D & m, const Normal3D<double> & n);
195 
196 } /* namespace HepGeom */
197 
198 #endif /* HEP_NORMAL3D_H */