AxialVector.h
Go to the documentation of this file.
1 
9 #ifndef _utl_AxialVector_h_
10 #define _utl_AxialVector_h_
11 
12 #include <utl/BasicVector.h>
13 #include <utl/Vector.h>
14 #include <utl/CoordinateSystem.h>
15 
16 #include <CLHEP/Geometry/Normal3D.h>
17 
18 namespace utl {
19 
20  class Vector;
21 
22 
30  class AxialVector : public AxialVectorBase {
31 
32  public:
34 
36  AxialVector(double x, double y, double z,
37  const CoordinateSystemPtr& theCoordinateSystem)
38  : AxialVectorBase(x, y, z, theCoordinateSystem) { }
39 
41  AxialVector(double p1, double p2, double p3,
42  const CoordinateSystemPtr& theCoordinateSystem,
43  const CoordinateType& theType)
44  : AxialVectorBase(p1, p2, p3, theCoordinateSystem, theType) { }
45 
49 
50  //~AxialVector() { };
51 
53  operator Vector() const
54  { return Vector(fVector, fCoordinateSystem); }
55 
56  double GetMag() const
57  { return GetR(fCoordinateSystem); }
58 
59  double GetMag2() const
60  { return GetR2(fCoordinateSystem); }
61 
63 
64  explicit operator bool() const { return fVector.x() || fVector.y() || fVector.z(); }
65 
66  private:
69  const CoordinateSystemPtr& theCoordinateSystem)
70  : AxialVectorBase(theVector, theCoordinateSystem) { }
71 
72  friend class TransformationPolicy;
73  friend class Vector;
74  friend AxialVector Cross(const Vector& l, const Vector& r);
75 
76  };
77 
78 
79  inline
82  {
83  AxialVector vv = v;
84  vv.Normalize();
85  return vv;
86  }
87 
88 
89 }
90 
91 
92 #include <utl/OperationsAV.h>
93 
94 
95 #endif
friend AxialVector Cross(const Vector &l, const Vector &r)
Definition: OperationsAV.h:25
AxialVector(double x, double y, double z, const CoordinateSystemPtr &theCoordinateSystem)
Construct axial vector from coordinates in a given coordinate system.
Definition: AxialVector.h:36
HepVector DataType
Definition: BasicVector.h:45
AxialVector(const AxialVectorBase::DataType &theVector, const CoordinateSystemPtr &theCoordinateSystem)
Constructor from internal components for use by operators.
Definition: AxialVector.h:68
AxialVector(double p1, double p2, double p3, const CoordinateSystemPtr &theCoordinateSystem, const CoordinateType &theType)
Construct an axial vector from arbitraty representation.
Definition: AxialVector.h:41
double GetR(const CoordinateSystemPtr &coordinateSystem) const
radius r in spherical coordinates coordinates (distance to origin)
Definition: BasicVector.h:257
void Normalize()
normalize the vector
Definition: BasicVector.h:354
double GetMag() const
Definition: AxialVector.h:56
friend class Vector
Definition: AxialVector.h:73
double GetMag2() const
Definition: AxialVector.h:59
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
Basic vector class template for geometry.
Definition: BasicVector.h:42
DataType fVector
Definition: BasicVector.h:360
double GetR2(const CoordinateSystemPtr &coordinateSystem) const
radius r^2 in spherical coordinates coordinates (distance to origin)^2
Definition: BasicVector.h:260
AxialVector Normalized(const AxialVector &v)
Definition: AxialVector.h:81
AxialVector(const Vector &a)
Constructor for automatic conversion from Vector to AxialVector.
Definition: AxialVector.h:47
CoordinateSystemPtr fCoordinateSystem
Definition: BasicVector.h:359
Base class for classes indicating coordinate types.
Definition: BasicVector.h:48
Vector object.
Definition: Vector.h:30
AxialVector object.
Definition: AxialVector.h:30

, generated on Tue Sep 26 2023.