Kinematics tools
Kinematic tools are defined in Common/Kinematics package. SCT kinematics classes are based on Eigen3
library. ROOT implementation of vectors and matrices is abandoned intentionally as too slow.
Main definitions
Main set of aliases for basic kinematic entities in namespace sct
is located in KineTypedefs.h. These aliases are to be used at maximum extent in the Aurora framework.
Entity | Alias | Source |
---|---|---|
1D vector | Vector1D | Eigen::Matrix<ftype, 1, S> |
Three-vector | ThreeVector | sct::kine::ThreeVector<> |
Lorentz-vector | FourVector | sct::kine::FourVector<> |
Matrix | template<size_t D1, size_t D2> Matrix | Eigen::Matrix<ftype, D1, D2> |
Square Matrix | template<size_t S> SquareMatrix | Eigen::Matrix<ftype, S, S> |
3x3 matrix | ThreeMatrix | SquareMatrix<3> |
4x4 matrix | FourMatrix | SquareMatrix<4> |
Several APIs are described in detail below.
sct::kine::ThreeVector
| ThreeVector.h (contributors: D. Yakovlev, V. Vorobyev)
The ThreeVector class is a template class inherits from Eigen::Matrix<ftype, 1, 3>
template <typename ftype = double> class ThreeVector : public Eigen::Matrix<ftype, 1, 3>
ThreeVector can be initialized with Cartesian or polar coordinates:
ThreeVector v1(x, y, z); ThreeVector v2 = ThreeVector::fromRPhiCosth(r, phi, costh)
Operation | ThreeVector API | TVector3 API |
---|---|---|
x component | x(), px() | X(), Px() |
y component | y(), py() | Y(), Py() |
z component | z(), pz() | Z(), Pz() |
Transverse momentum | pt() | Pt(), Perp() |
Norm | norm() | Mag() |
Squared norm | norm2(), squaredNorm() | Mag2() |
Rotation around x axis | RotateX(double) | RotateX (Double_t) |
Rotation around y axis | RotateY(double) | RotateY (Double_t) |
Rotation around z axis | RotateZ(double) | RotateZ (Double_t) |
The angle between two vectors can be obtained with
template <typename ftype> inline ftype angle(const ThreeVector<ftype>& v1, const ThreeVector<ftype> v2)
sct::kine::FourVector
| FourVector.h (contributors: D. Yakovlev, V. Vorobyev)
--V.S.Vorobev (talk) 21:53, 25 April 2020 (+07)