Kinematics tools

From Charm-Tau Detector
(Difference between revisions)
Jump to: navigation, search
m
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Event_selection_framework]]
 
[[Event_selection_framework]]
  
Kinematic tools are defined in [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics| Common/Kinematics] package. SCT kinematics classes are based on <code>Eigen3</code> library. ROOT implementation of vectors and matrices is abandoned intentionally as too slow.
+
Kinematic tools are defined in [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics Common/Kinematics] package. SCT kinematics classes are based on <code>Eigen3</code> library. ROOT implementation of vectors and matrices is abandoned intentionally as too slow.
  
 
== Main definitions ==
 
== Main definitions ==
Main set of aliases for basic kinematic entities in namespace <code>sct</code> is located in [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics/KineTypedefs.h| KineTypedefs.h]. These aliases are to be used at maximum extent in the Aurora framework.  
+
Main set of aliases for basic kinematic entities in namespace <code>sct</code> is located in [https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics/KineTypedefs.h KineTypedefs.h].
 +
These aliases are to be used at maximum extent in the Aurora framework.  
  
 
{|class="wikitable" style="text-align: center; color: black;" width=700
 
{|class="wikitable" style="text-align: center; color: black;" width=700
Line 27: Line 28:
  
 
== sct::kine::ThreeVector ==
 
== sct::kine::ThreeVector ==
[https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics/ThreeVector.h | ThreeVector.h] (contributors: D. Yakovlev, V. Vorobyev)
+
[https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics/ThreeVector.h ThreeVector.h] (contributors: D. Yakovlev, V. Vorobyev)
  
 
The ThreeVector class is a template class inherits from <code>Eigen::Matrix<ftype, 1, 3></code>
 
The ThreeVector class is a template class inherits from <code>Eigen::Matrix<ftype, 1, 3></code>
Line 70: Line 71:
 
  template <typename ftype>  
 
  template <typename ftype>  
 
  inline ftype angle(const ThreeVector<ftype>& v1, const ThreeVector<ftype> v2)
 
  inline ftype angle(const ThreeVector<ftype>& v1, const ThreeVector<ftype> v2)
 
 
</code>
 
</code>
 +
 +
== sct::kine::FourVector ==
 +
[https://git.inp.nsk.su/sctau/aurora/-/blob/master/Common/Kinematics/Kinematics/FourVector.h FourVector.h] (contributors: D. Yakovlev, V. Vorobyev)
  
 
--[[User:V.S.Vorobev|V.S.Vorobev]] ([[User talk:V.S.Vorobev|talk]]) 21:53, 25 April 2020 (+07)
 
--[[User:V.S.Vorobev|V.S.Vorobev]] ([[User talk:V.S.Vorobev|talk]]) 21:53, 25 April 2020 (+07)

Latest revision as of 00:49, 4 May 2020

Event_selection_framework

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.

[edit] 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.

[edit] 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)

ThreeVecotor API compared with ROOT TVector3 API
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)

[edit] sct::kine::FourVector

FourVector.h (contributors: D. Yakovlev, V. Vorobyev)

--V.S.Vorobev (talk) 21:53, 25 April 2020 (+07)

Personal tools