# class ROOT::Math::DisplacementVector2D<ROOT::Math::Polar2D<Double32_t>,ROOT::Math::DefaultCoordinateSystemTag>

```
Class describing a generic displacement vector in 2 dimensions.
This class is templated on the type of Coordinate system.
One example is the XYVector which is a vector based on
double precision x,y  data members by using the
ROOT::Math::Cartesian2D<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

```

## Data Members

private:
 ROOT::Math::Polar2D fCoordinates internal coordinate system

## Function documentation

DisplacementVector2D & operator=( const ForeignVector & v)
```           Assignment from a foreign 2D vector type, for example, Hep2Vector
Precondition: v must implement methods x() and  y()

```
CoordSystem Coordinates() const
``` ------ Set, Get, and access coordinate data ------

Retrieve a copy of the coordinates object

```

```           Set internal data based on 2 Scalar numbers.
These are for example (x,y) for a cartesian vector or (r,phi) for a polar vector

```

```           get internal data into 2 Scalar numbers.
These are for example (x,y) for a cartesian vector or (r,phi) for a polar vector

```
`{ fCoordinates.GetCoordinates(a, b); }`

``` ------------------- Equality -----------------

Exact equality

```

Scalar X() const
``` ------ Individual element access, in various coordinate systems ------

Cartesian X, converting if necessary from internal coordinate system.

```
`{ return fCoordinates.X(); }`
Scalar Y() const
```           Cartesian Y, converting if necessary from internal coordinate system.

```
`{ return fCoordinates.Y(); }`
Scalar R() const
```           Polar R, converting if necessary from internal coordinate system.

```
`{ return fCoordinates.R(); }`
Scalar Phi() const
```           Polar phi, converting if necessary from internal coordinate system.

```
`{ return fCoordinates.Phi(); }`
Scalar Mag2() const
``` ----- Other fundamental properties -----

Magnitute squared ( r^2 in spherical coordinate)

```
`{ return fCoordinates.Mag2();}`
DisplacementVector2D Unit() const
```           return unit vector parallel to this

```

``` ------ Setting individual elements present in coordinate system ------

Change X - Cartesian2D coordinates only

```

```           Change Y - Cartesian2D coordinates only

```

```           Change R - Polar2D coordinates only

```

```           Change Phi - Polar2D  coordinates

```

```           multiply this vector by a scalar quantity

```

```           divide this vector by a scalar quantity

```
return operator*( Scalar(-1) )

```           Division of a vector with a real number

```

```           Rotate by an angle

```
Scalar x() const
``` Methods providing  Limited backward name compatibility with CLHEP
```
`{ return fCoordinates.X(); }`
Scalar y() const
`{ return fCoordinates.Y(); }`
Scalar phi() const
`{ return fCoordinates.Phi(); }`
Scalar mag2() const
`{ return fCoordinates.Mag2(); }`
DisplacementVector2D unit() const
`{return Unit();}`
DisplacementVector2D & operator=( const DisplacementVector2D<OtherCoords, OtherTag> & )
operator+( DisplacementVector2D<CoordSystem1,U> v1, const DisplacementVector2D<CoordSystem2,U> & v2)
``` ---------- DisplacementVector2D class template ends here ------------

Addition of DisplacementVector2D vectors.
The (coordinate system) type of the returned vector is defined to
be identical to that of the first vector, which is passed by value

```
operator-( DisplacementVector2D<CoordSystem1,U> v1, DisplacementVector2D<CoordSystem2,U> const & v2)
```        Difference between two DisplacementVector2D vectors.
The (coordinate system) type of the returned vector is defined to
be identical to that of the first vector.

```