20 static double MT(
const TLorentzVector &l1,
const TLorentzVector &l2);
21 static double CosthStar(
const TLorentzVector &Lepton,
const TLorentzVector &AntiLepton);
22 static double DeltaR(
double,
double,
double,
double);
23 static double DeltaPhi(
double,
double);
25 static void GetCSFAngles(
const TLorentzVector &lep1,
const int &charge1,
const TLorentzVector &lep2,
double ebeam,
double &costh,
double &phi);
26 static void GetVHFAngles(
const TLorentzVector &lep1,
const int &charge1,
const TLorentzVector &lep2,
double &costh,
double &phi);
27 static void GetBDFAngles(
const TLorentzVector &tlv1,
const int &charge1,
const TLorentzVector &tlv2,
double &costh,
double &phi);
29 static void GetAiPolynominals(
double costh,
double phi, std::vector<double> &aipols);
31 static double SumAiPolynominals(std::vector<double> &ai, std::vector<double> &aimom);
34 static void GetProjections(
const TLorentzVector &proj,
const TLorentzVector &axis,
double &par,
double &perp);
41 inline double Kinematics::MT(
const TLorentzVector &l1,
const TLorentzVector &l2)
43 return sqrt(2 * l1.Pt() * l2.Pt() * (1 - cos(l1.DeltaPhi(l2))));
52 double costh, P1_plus, P1_minus, P2_plus, P2_minus, Q, QT;
53 TLorentzVector Zboson = Lepton + AntiLepton;
55 P1_plus = 1 / sqrt(2) * (Lepton.E() + Lepton.Pz());
56 P1_minus = 1 / sqrt(2) * (Lepton.E() - Lepton.Pz());
57 P2_plus = 1 / sqrt(2) * (AntiLepton.E() + AntiLepton.Pz());
58 P2_minus = 1 / sqrt(2) * (AntiLepton.E() - AntiLepton.Pz());
61 costh = 2 / (Q * sqrt(Q * Q + QT * QT)) * (P1_plus * P2_minus - P2_plus * P1_minus);
72 par = (proj.Px() * axis.Px() + proj.Py() * axis.Py()) / axis.Pt();
73 perp = (proj.Py() * axis.Px() - proj.Px() * axis.Py()) / axis.Pt();
85 static const double norm = 3. / (16. * TMath::Pi());
86 double xsec = 1 + aimom[4] * aimom[4];
87 for (
int imom = 0; imom < 8; imom++)
88 xsec += ((imom == 2) ? 0.5 : 1) * ai[imom] * aimom[imom];
100 return sqrt((eta1 - eta2) * (eta1 - eta2) + pow(
DeltaPhi(phi1, phi2), 2));
109 return TVector2::Phi_mpi_pi(phi1 - phi2);
Provide some static functions to calculate kinematic variables.
static void GetAiPolynominals(double costh, double phi, std::vector< double > &aipols)
Calculate angular terms corresponding to each angular coefficient.
static void GetProjections(const TLorentzVector &proj, const TLorentzVector &axis, double &par, double &perp)
Get the parallel and perpendicular components of a vector corresponding to an axis.
static double CosthStar(const TLorentzVector &Lepton, const TLorentzVector &AntiLepton)
Calculate the Collins-Soper angle of a two-particle-system.
static double DeltaR(double, double, double, double)
Calculate the between two particles.
static double SumAiPolynominals(std::vector< double > &ai, std::vector< double > &aimom)
Calculate the angular polynomials.
static double DeltaPhi(double, double)
Calculate the between two angles.
static void GetCSFAngles(const TLorentzVector &lep1, const int &charge1, const TLorentzVector &lep2, double ebeam, double &costh, double &phi)
Calculate the decay angles in the Collins-Soper Frame.
static double MT(const TLorentzVector &l1, const TLorentzVector &l2)
Calculate the transverse momentum of a two-particle-system.
static void GetVHFAngles(const TLorentzVector &lep1, const int &charge1, const TLorentzVector &lep2, double &costh, double &phi)
Calculate the decay angles in the Vector Boson Helicity Frame.
static void GetBDFAngles(const TLorentzVector &tlv1, const int &charge1, const TLorentzVector &tlv2, double &costh, double &phi)
Calculate the decay angles in the Beam Direction Frame.
Kinematics(std::shared_ptr< MSGTool > MSG)