/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/Mcgpj/Mcgpj-00-01-04/src/code3pi/src/T2piCrossPart.C

Go to the documentation of this file.
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   // rho(770), rho(1450), rho(1700) in 2-pi inv mass
00031   // beta and gamma from Ph.D. thesis of Fedor Ignatov (ignatov@inp.nsk.su)
00032 
00033   //  const complex_t beta(0.41*cos(-2.02),0.41*sin(-2.02));
00034   const complex_t beta(-0.178042,-0.369325);
00035 
00036   //  const complex_t gamma(0.074*cos(-3.53),0.074*sin(-3.53));
00037   const complex_t gamma(-0.068488,0.0280249);
00038 
00039   // rho-omega mixing
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   //  return Rrho0(s);
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   //  fphot->SetEnergyRange(de,0.5*e);
00058   SetFinalParticles(2, m, pid);
00059   std::cout<<"Process -- e^+e^- -> pi^+pi^-"<<std::endl;
00060 }
00061 
00062 // The hadronic current 
00063 void T2piCrossPart::SetJ(){
00064   TLorentzVector &qp = *fres[0];  //pi^+ momentum
00065   TLorentzVector &qm = *fres[1];  //pi^- momentum
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   // require inv mass of 3-pi within 97% of Ecm
00079   //  if(fq2<0.5*fs) return false;
00080   //   const TLorentzVector &qp = *fres[0];  //pi^+ momentum
00081   //   const TLorentzVector &qm = *fres[1];  //pi^- momentum
00082   
00083 //   if(fabs(qp.P()-qm.P())>0.04*fe) return false;
00084 
00085 //   double cosqp = qp.CosTheta();
00086 //   if(fabs(cosqp)>0.9)return false;
00087   
00088 //   double cosqm = qm.CosTheta();
00089 //   if(fabs(cosqm)>0.9)return false;
00090   
00091   return true;
00092 }
00093 

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