Geant4-11
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Normal3D.h
Go to the documentation of this file.
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
20namespace 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
64
68
71 ~Normal3D() = default;
72
76
81 return *this;
82 }
83
87
91 };
92
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
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
165
170 return *this;
171 }
172
177 return *this;
178 }
179
183
187 };
188
194 operator*(const Transform3D & m, const Normal3D<double> & n);
195
196} /* namespace HepGeom */
197
198#endif /* HEP_NORMAL3D_H */
static constexpr double m
Definition: G4SIunits.hh:109
BasicVector3D< T > & operator=(const BasicVector3D< T > &)=default
Normal3D(double x1, double y1, double z1)
Definition: Normal3D.h:115
Normal3D< double > & operator=(const Normal3D< double > &)=default
Normal3D(const BasicVector3D< float > &v)
Definition: Normal3D.h:137
Normal3D< double > & operator=(Normal3D< double > &&)=default
Normal3D(Normal3D< double > &&)=default
Normal3D< double > & operator=(const BasicVector3D< double > &v)
Definition: Normal3D.h:175
Normal3D(const double *a)
Definition: Normal3D.h:124
Normal3D(const BasicVector3D< double > &v)
Definition: Normal3D.h:141
Normal3D< double > & operator=(const BasicVector3D< float > &v)
Definition: Normal3D.h:168
Normal3D(const Normal3D< double > &)=default
Normal3D(const CLHEP::Hep3Vector &v)
Definition: Normal3D.h:152
Normal3D(const float *a)
Definition: Normal3D.h:119
Normal3D(const Normal3D< float > &)=default
Normal3D< float > & operator=(const Normal3D< float > &)=default
Normal3D(const BasicVector3D< float > &v)
Definition: Normal3D.h:67
Normal3D< float > & operator=(Normal3D< float > &&)=default
Normal3D(const float *a)
Definition: Normal3D.h:54
Normal3D< float > & operator=(const BasicVector3D< float > &v)
Definition: Normal3D.h:79
Normal3D(Normal3D< float > &&)=default
Normal3D(float x1, float y1, float z1)
Definition: Normal3D.h:50
G4bool transform(G4String &input, const G4String &type)
Normal3D< float > operator*(const Transform3D &m, const Normal3D< float > &v)
Definition: Normal3D.cc:23