1#include "TLorentzVector.h"
16 inline double Gamma(
const double Q2,
17 const double M2,
const double G,
18 const double mkpp2,
const double mkmp2){
19 const double mkmp22 = mkmp2*mkmp2;
20 double beta2_q = (Q2*Q2 - 2*Q2*mkpp2 + mkmp22)/pow(Q2 - mkpp2,2);
21 double beta2_M = (M2*M2 - 2*M2*mkpp2 + mkmp22)/pow(M2 - mkpp2,2);
22 double beta2 = beta2_q/beta2_M;
23 double beta = sqrt(beta2);
24 return G*M2/Q2*beta2*beta;
29 double Mp2,
double Mm2){
38 const TLorentzVector &qm,
39 const TLorentzVector &q0){
43 double Jx = qp.Y()*qm.Z()*q0.T()
44 - qp.Y()*qm.T()*q0.Z()
45 + qp.T()*qm.Y()*q0.Z()
46 - qp.T()*qm.Z()*q0.Y()
47 + qp.Z()*qm.T()*q0.Y()
48 - qp.Z()*qm.Y()*q0.T();
50 double Jy = qp.X()*qm.Z()*q0.T()
51 - qp.X()*qm.T()*q0.Z()
52 + qp.T()*qm.X()*q0.Z()
53 - qp.T()*qm.Z()*q0.X()
54 + qp.Z()*qm.T()*q0.X()
55 - qp.Z()*qm.X()*q0.T();
57 double Jz = qp.Y()*qm.X()*q0.T()
58 - qp.Y()*qm.T()*q0.X()
59 + qp.T()*qm.Y()*q0.X()
60 - qp.T()*qm.X()*q0.Y()
61 + qp.X()*qm.T()*q0.Y()
62 - qp.X()*qm.Y()*q0.T();
64 double Jt = qp.Y()*qm.Z()*q0.X()
65 - qp.Y()*qm.X()*q0.Z()
66 + qp.X()*qm.Y()*q0.Z()
67 - qp.X()*qm.Z()*q0.Y()
68 + qp.Z()*qm.X()*q0.Y()
69 - qp.Z()*qm.Y()*q0.X();
71 TLorentzVector J(Jx,Jy,Jz,Jt);
complex_t operator-(const double &x, const complex_t &y)
complex_t operator+(const double &x, const complex_t &y)
std::complex< double > complex_t
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)
double Gamma(const double Q2, const double M2, const double G, const double mkpp2, const double mkmp2)
TLorentzVector PseudoScalars3(const TLorentzVector &qp, const TLorentzVector &qm, const TLorentzVector &q0)