// Point3d doxygen page /** \page Point3DPage Point3D Classes The following types of Point are defined by defaults:
XYZPoint p1; // create an empty vector (x = 0, y = 0, z = 0) XYZPoint p2( 1,2,3); // create a vector with x=1, y = 2, z = 3; Polar3DPoint p3( 1, PI/2, PI); // create a vector with r = 1, theta = PI/2 and phi=PI RhoEtaPHiPoint p4( 1, 2, PI) // create a vector with rho= 1, eta = 2, phi = PINote that each type of vector is constructed by passing its coordinates representations, so a XYZPoint(1,2,3) is different from a Polar3DPoint(1,2,3).
In addition the Point classes can be constructed by any vector, which implements the accessors x(), y() and z(). This con be another Point3D based on a different coordinate system types or even any vector of a different package, like the CLHEP HepThreePoint that implements the required signatures.
XYZPoint p1(1,2,3); RhoEtaPHiPoint r2(v1); CLHEP::HepThreePoint q(1,2,3); XYZPoint p3(q)
p += v; p -= v;In addition between Point 3D classes, the following operations are possibles returning Points or Vectors ( points and vectors can be in different coordinate system but the returned type, p3 (v3) is the same type of p1 (v1) )
p3 = p1 + v2; p3 = v1 + p2; p3 = p1 - v2; p3 = v1 - p2; v3 = p1 - p2; // difference between points returns a vectorNote that additions between two points is NOT possible and the difference between points returns a vector. */