/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/Mcgpj/Mcgpj-00-01-04/src/code3pi/inc/TUtil.h

Go to the documentation of this file.
00001 #include "TLorentzVector.h"
00002 #include "TConstant.h"
00003 #include <complex>
00004 
00005 typedef std::complex<double> complex_t;
00006 
00007 inline complex_t operator+(const double &x, const complex_t &y) {
00008   return y + x;
00009 }
00010 
00011 inline complex_t operator-(const double &x, const complex_t &y) {
00012   return -(y - x);
00013 }
00014 
00015 namespace rb{
00016   inline double Gamma(const double Q2, 
00017                       const double M2, const double G,
00018                       const double mkpp2, const double mkmp2){
00019     const double mkmp22 = mkmp2*mkmp2;
00020     double beta2_q = (Q2*Q2 - 2*Q2*mkpp2 + mkmp22)/pow(Q2 - mkpp2,2);
00021     double beta2_M = (M2*M2 - 2*M2*mkpp2 + mkmp22)/pow(M2 - mkpp2,2);
00022     double beta2 = beta2_q/beta2_M;
00023     double beta = sqrt(beta2);
00024     return G*M2/Q2*beta2*beta;
00025   }
00026   
00027   inline complex_t R(double Q2, 
00028                      double M2, double G, 
00029                      double Mp2, double Mm2){
00030     if(Q2<Mp2) return 0;
00031     const complex_t I(0,1);
00032     double Q = sqrt(Q2);
00033     complex_t prop = M2/(Q2 - M2 + I*(Gamma(Q2,M2,G,Mp2,Mm2)*Q));
00034     return prop;
00035   }  
00036 
00037   inline TLorentzVector PseudoScalars3(const TLorentzVector &qp,
00038                                        const TLorentzVector &qm,
00039                                        const TLorentzVector &q0){
00040     // The hadronic current
00041     // here for 3pi J_\mu=\epsilon_{a b g \mu}q+_{a}q-_{b}q0_{g}
00042 
00043     double Jx = qp.Y()*qm.Z()*q0.T()
00044       -    qp.Y()*qm.T()*q0.Z()
00045       +    qp.T()*qm.Y()*q0.Z()
00046       -    qp.T()*qm.Z()*q0.Y()
00047       +    qp.Z()*qm.T()*q0.Y()
00048       -    qp.Z()*qm.Y()*q0.T();
00049     
00050     double Jy = qp.X()*qm.Z()*q0.T()
00051       -    qp.X()*qm.T()*q0.Z()
00052       +    qp.T()*qm.X()*q0.Z()
00053       -    qp.T()*qm.Z()*q0.X()
00054       +    qp.Z()*qm.T()*q0.X()
00055       -    qp.Z()*qm.X()*q0.T();
00056     
00057     double Jz = qp.Y()*qm.X()*q0.T()
00058       -    qp.Y()*qm.T()*q0.X()
00059       +    qp.T()*qm.Y()*q0.X()
00060       -    qp.T()*qm.X()*q0.Y()
00061       +    qp.X()*qm.T()*q0.Y()
00062       -    qp.X()*qm.Y()*q0.T();
00063     
00064     double Jt = qp.Y()*qm.Z()*q0.X()
00065       -    qp.Y()*qm.X()*q0.Z()
00066       +    qp.X()*qm.Y()*q0.Z()
00067       -    qp.X()*qm.Z()*q0.Y()
00068       +    qp.Z()*qm.X()*q0.Y()
00069       -    qp.Z()*qm.Y()*q0.X();
00070     
00071     TLorentzVector J(Jx,Jy,Jz,Jt);
00072     return J;
00073   }
00074 
00075 }

Generated on Tue Nov 29 23:12:42 2016 for BOSS_7.0.2 by  doxygen 1.4.7