00001 #include "T2piCrossPart.h"
00002 #include "TConstant.h"
00003
00004 #include <complex>
00005 #include <iostream>
00006 using namespace rb;
00007 typedef std::complex<double> complex_t;
00008
00009 inline complex_t operator+(const double &x, const complex_t &y) {
00010 return y + x;
00011 }
00012
00013 inline complex_t operator-(const double &x, const complex_t &y) {
00014 return -(y - x);
00015 }
00016
00017 inline double Gamma(const double Q2, const double M2, const double G){
00018 double beta2 = (Q2-4*mpi2)/(M2-4*mpi2);
00019 double beta = sqrt(beta2);
00020 return G*M2/Q2*beta2*beta;
00021 }
00022
00023 inline complex_t Rrho0(double Q2){
00024 if(Q2<4*mpi2) return 0;
00025 const complex_t I(0,1);
00026 double Q = sqrt(Q2);
00027 complex_t prop_rho = Mrho2/(Q2 - Mrho2 + I*(Gamma(Q2,Mrho2,Grho)*Q));
00028 complex_t prop_rhop = Mrhop2/(Q2 - Mrhop2 + I*(Gamma(Q2,Mrhop2,Grhop)*Q));
00029 complex_t prop_rhopp = Mrhopp2/(Q2 - Mrhopp2 + I*(Gamma(Q2,Mrhopp2,Grhopp)*Q));
00030
00031
00032
00033
00034 const complex_t beta(-0.178042,-0.369325);
00035
00036
00037 const complex_t gamma(-0.068488,0.0280249);
00038
00039
00040 const complex_t delta(0.0015,0);
00041 complex_t prop_omega = Momega2/(Q2 - Momega2 + I*(Gomega*Momega));
00042
00043 return (prop_rho*(1-delta*Q2/Momega2*prop_omega) + beta*prop_rhop + gamma*prop_rhopp)/(1+beta+gamma);
00044 }
00045
00046 complex_t F2pi(double s){
00047 return complex_t(1,0);
00048
00049 }
00050
00051 T2piCrossPart::T2piCrossPart(double e, double de, double nth0):
00052 TCrossPart(e,de,nth0)
00053 {
00054 const double m[] = { mpi, mpi};
00055 const int pid[] = { 211, -211};
00056 fphot->SetEnergyRange(de,e - m[0]*m[0]/e);
00057
00058 SetFinalParticles(2, m, pid);
00059 std::cout<<"Process -- e^+e^- -> pi^+pi^-"<<std::endl;
00060 }
00061
00062
00063 void T2piCrossPart::SetJ(){
00064 TLorentzVector &qp = *fres[0];
00065 TLorentzVector &qm = *fres[1];
00066
00067 double Jx = qp.X()-qm.X();
00068 double Jy = qp.Y()-qm.Y();
00069 double Jz = qp.Z()-qm.Z();
00070 double Jt = qp.T()-qm.T();
00071
00072 complex_t F = F2pi(fq2);
00073
00074 fJc.SetPxPyPzE(F*Jx,F*Jy,F*Jz,F*Jt);
00075 }
00076
00077 bool T2piCrossPart::Accepted(){
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 return true;
00092 }
00093