9 #ifndef KINEMATICFUNCTIONS_H 10 #define KINEMATICFUNCTIONS_H 14 #include "TLorentzVector.h" 17 const double pi = 3.14159265358979323846;
39 return std::abs(TVector2::Phi_mpi_pi(phi1 - phi2));
43 double deltaR2(
double eta1,
double phi1,
double eta2,
double phi2) {
44 auto d_eta = eta2 - eta1;
46 return d_eta * d_eta + d_phi * d_phi;
50 double deltaR(
double eta1,
double phi1,
double eta2,
double phi2) {
51 return sqrt(
deltaR2(eta1, phi1, eta2, phi2));
55 TVector2
vectorSum(
double pt1,
double phi1,
double pt2,
double phi2) {
58 vec1.SetMagPhi(pt1, phi1);
59 vec2.SetMagPhi(pt2, phi2);
65 double vectorSumPhi(
double pt1,
double phi1,
double pt2,
double phi2) {
66 return vectorSum(pt1, phi1, pt2, phi2).Phi();
70 double vectorSumPt(
double pt1,
double phi1,
double pt2,
double phi2) {
71 return vectorSum(pt1, phi1, pt2, phi2).Mod();
75 double vectorSum3Pt(
double pt1,
double phi1,
double pt2,
double phi2,
double pt3,
double phi3) {
76 return sqrt( pow(pt1*cos(phi1) + pt2*cos(phi2) + pt3*cos(phi3),2) +
77 pow(pt1*sin(phi1) + pt2*sin(phi2) + pt3*sin(phi3),2) );
81 TLorentzVector
vectorSum(
double pt1,
double eta1,
double phi1,
double mass1,
double pt2,
double eta2,
double phi2,
double mass2) {
84 vec1.SetPtEtaPhiM(pt1,eta1,phi1,mass1);
85 vec2.SetPtEtaPhiM(pt2,eta2,phi2,mass2);
90 double vectorSumMass(
double pt1,
double eta1,
double phi1,
double mass1,
double pt2,
double eta2,
double phi2,
double mass2) {
91 return vectorSum(pt1, eta1, phi1, mass1, pt2, eta2, phi2, mass2).M();
95 double vectorSumMass(
double pt1,
double eta1,
double phi1,
double pt2,
double eta2,
double phi2) {
96 return vectorSumMass(pt1, eta1, phi1, 0.0, pt2, eta2, phi2, 0.0);
100 double vectorSumEta(
double pt1,
double eta1,
double phi1,
double mass1,
double pt2,
double eta2,
double phi2,
double mass2) {
101 return vectorSum(pt1, eta1, phi1, mass1, pt2, eta2, phi2, mass2).Eta();
105 double uPerp(
double recoil,
double recoilPhi,
double zPhi) {
106 TLorentzVector recoilvec;
107 recoilvec.SetPtEtaPhiM(recoil,0,recoilPhi + TMath::Pi() - zPhi,0);
108 return recoilvec.Py();
112 double uPara(
double recoil,
double recoilPhi,
double zPhi) {
113 TLorentzVector recoilvec;
114 recoilvec.SetPtEtaPhiM(recoil,0,recoilPhi + TMath::Pi() - zPhi,0);
115 return recoilvec.Px();
119 double uPerp(
double met,
double metPhi,
double zPt,
double zPhi) {
120 TLorentzVector metvec;
122 + TMath::Pi() - zPhi,0);
127 double uPara(
double met,
double metPhi,
double zPt,
double zPhi) {
128 TLorentzVector metvec;
130 + TMath::Pi() - zPhi,0);
136 double cosDPhi = cos(
deltaPhi(lepPhi,metPhi));
137 return sqrt(2*lepPt*met*(1-cosDPhi));