Class describing a generic position vector (point) in 3 dimensions.
This class is templated on the type of Coordinate system.
One example is the XYZPoint which is a vector based on
double precision x,y,z data members by using the
ROOT::Math::Cartesian3D<double> Coordinate system.
The class is having also an extra template parameter, the coordinate system tag,
to be able to identify (tag) vector described in different reference coordinate system,
like global or local coordinate systems.
@ingroup GenVector
| ROOT::Math::Polar3D<double> | fCoordinates |

Set internal data based on a C-style array of 3 Scalar numbers
{ fCoordinates.SetCoordinates(src); return *this; }
Set internal data based on 3 Scalar numbers
{ fCoordinates.SetCoordinates(a, b, c); return *this; }
get internal data into 3 Scalar numbers
{ fCoordinates.GetCoordinates(a, b, c); }
get internal data into a C-style array of 3 Scalar numbers
{ fCoordinates.GetCoordinates(dest); } ------------------- Equality -----------------
Exact equality
------ Individual element access, in various coordinate systems ------
Cartesian X, converting if necessary from internal coordinate system.
{ return fCoordinates.X(); }
Cartesian Y, converting if necessary from internal coordinate system.
{ return fCoordinates.Y(); }
Cartesian Z, converting if necessary from internal coordinate system.
{ return fCoordinates.Z(); }
Polar R, converting if necessary from internal coordinate system.
{ return fCoordinates.R(); }
Polar theta, converting if necessary from internal coordinate system.
{ return fCoordinates.Theta(); }
Polar phi, converting if necessary from internal coordinate system.
{ return fCoordinates.Phi(); }
Polar eta, converting if necessary from internal coordinate system.
{ return fCoordinates.Eta(); } ----- Other fundamental properties -----
Magnitute squared ( r^2 in spherical coordinate)
{ return fCoordinates.Mag2();}
Transverse component squared (rho^2 in cylindrical coordinates.
{ return fCoordinates.Perp2();} It is physically meaningless to speak of the unit vector corresponding
to a point.
------ Setting individual elements present in coordinate system ------
Change X - Cartesian3D coordinates only
{ fCoordinates.SetX(xx); return *this;}
Change Y - Cartesian3D coordinates only
{ fCoordinates.SetY(yy); return *this;}
Change Z - Cartesian3D coordinates only
{ fCoordinates.SetZ(zz); return *this;}
Change R - Polar3D coordinates only
{ fCoordinates.SetR(rr); return *this;}
Change Theta - Polar3D coordinates only
{ fCoordinates.SetTheta(ang); return *this;}
Change Phi - Polar3D or CylindricalEta3D coordinates
{ fCoordinates.SetPhi(ang); return *this;}
Change Rho - CylindricalEta3D coordinates only
{ fCoordinates.SetRho(rr); return *this;}
Change Eta - CylindricalEta3D coordinates only
{ fCoordinates.SetEta(etaval); return *this;} ------ Operations combining two vectors ------
need to specialize to exclude those with a different tags
Return the scalar (Dot) product of this with a displacement vector in
any coordinate system, but with the same tag
Return vector (Cross) product of this point with a displacement, as a
point vector in this coordinate system of the first.
Self Difference with a displacement vector.