# Physics vectors

The physics vector classes describe vectors in two, three and four dimensions and their rotation algorithms.

## Design

In this package, a vector is built out of:

• the container with N dimensions, for example LorentzVector
• the coordinate system, for example PtEtaPhiM4D
• the scalar type, typically float or double

The concrete vector type is a combination of the three ingredients, for example:

// PtEtaPhiMVector is a typedef to LorentzVector<PtEtaPhiM4D<double>>;
ROOT::Math::PtEtaPhiMVector v1(10. /*pt*/, 0.1 /*eta*/, 0.24 /*phi*/, 5 /*M*/);


For a full list of possible types and more details, please refer to the Reference Guide.

## Operations

The vector classes provide functionality to express common arithmetic operations, such as adding two vectors and multiplication with a scalar:

using namespace ROOT::Math;
PtEtaPhiMVector v1(1, 2, 3, 4), v2(5, 6, 7, 8);
v1 += v2;
v1 *= 2;


For more details, please refer to the Reference Guide.

## Transformations

The transformation classes are grouped into rotations and transformations such as Lorentz boost.

For example, a transformation of a LorentzVector works as follows:

LorentzRotation t(RotationX(M_PI));
PtEtaPhiMVector v3 = t(v1);


For the full list of transformations, please refer to the Reference Guide.