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

Go to the documentation of this file.
00001 #include <iostream>
00002 
00003 #include "T4piCrossPart.h"
00004 #include "TConstant.h"
00005 #include <complex>
00006 
00007 typedef std::complex<double> complex_t;
00008 
00009 using namespace std;
00010 using namespace rb;
00011 
00012 inline complex_t bw_rho(double s){
00013   const double sig = -0.1;
00014   complex_t Drho = complex_t(Mrho*Mrho-s,-Mrho*Grho);
00015   complex_t Drhop = complex_t(Mrhop*Mrhop-s,-Mrhop*Grhop);
00016   complex_t bw = (1./Drho + sig/Drhop);
00017 //
00018 // dumping factor added in omega part: to be substituted with a formfactor
00019 //
00020   const double Et2 = (2.2*1e3)*(2.2*1e3);
00021   if(s>Et2){
00022     double r = Et2/s;
00023     bw *= r*r;
00024   }
00025   return bw;
00026 }
00027 
00028 inline complex_t Rrho(double s, bool IsIsospinBreak){
00029   complex_t Drho = complex_t(Mrho2-s, -Mrho*Grho);
00030   complex_t prop_rho = Mrho2/Drho;
00031   return prop_rho;
00032 }
00033 
00034 inline complex_t bw_om(double s){
00035   complex_t Domega = complex_t(Momega*Momega-s,-Momega*Gomega);
00036   complex_t bw = 1./Domega;
00037   return bw;
00038 }
00039 
00040 T4piCrossPart::T4piCrossPart(double e, double de, double nth0):
00041   TCrossPart(e,de,nth0)
00042 {
00043   const double m[] = { mpi, mpi, mpi0, mpi0};
00044   const int pid[]  = { 211, -211, 111, 111};
00045   double emax = e*(1 - pow((m[0]+m[1]+m[2]+m[3])/(2*e),2));
00046   fphot->SetEnergyRange(de,emax);
00047   SetFinalParticles(4, m, pid);
00048   std::cout<<"Process -- e^+e^- -> omega pi^0"<<std::endl;
00049   std::cout<<"                       |-> rho pi"<<std::endl;
00050   std::cout<<"                            |-> pi pi"<<std::endl;
00051 }
00052 
00053 void T4piCrossPart::SetJ(){
00054   TLorentzVector &q3 = *fres[0];  //pi^+ momentum
00055   TLorentzVector &q4 = *fres[1];  //pi^- momentum
00056   TLorentzVector &q1 = *fres[2];  //pi^0 momentum
00057   TLorentzVector &q2 = *fres[3];  //pi^0 momentum
00058   
00059   TLorentzVector q134 = q1 + q3 + q4; 
00060   TLorentzVector q234 = q2 + q3 + q4; 
00061 
00062   double q1_134 = q1*q134;
00063   double q3_134 = q3*q134;
00064   double q4_134 = q4*q134;
00065   double q2_234 = q2*q234;
00066   double q3_234 = q3*q234;
00067   double q4_234 = q4*q234;
00068   double q12 = q1*q2;
00069   double q13 = q1*q3;
00070   double q14 = q1*q4;
00071   double q23 = q2*q3;
00072   double q24 = q2*q4;
00073   double q34 = q3*q4;
00074   double q134_2 = q134*q134;
00075   double q234_2 = q234*q234;
00076 //
00077 //  from here Omega current
00078 //
00079   complex_t Rrho34 = Rrho(q34,false);
00080 
00081   complex_t H1 = Rrho(q13,false) + Rrho(q14,false) + Rrho34;
00082   complex_t H2 = Rrho(q23,false) + Rrho(q24,false) + Rrho34;
00083   complex_t bwr = 1e-8;//bw_rho(fq2);
00084   complex_t bw2 = bwr*bw_om(q234_2)*H2;
00085   complex_t bw1 = bwr*bw_om(q134_2)*H1;
00086   //  cout<<qq2<<" "<<q134_2<<" "<<q234_2<<" "<<bw1<<" "<<bw2<<endl;
00087 
00088   complex_t f0 = bw1*(q3_134*q24 - q4_134*q23);
00089   complex_t f1 = bw2*(q3_234*q14 - q4_234*q13);
00090   complex_t f2 = bw1*(q4_134*q12 - q1_134*q24) + bw2*(q4_234*q12 - q2_234*q14);
00091   complex_t f3 = bw1*(q1_134*q23 - q3_134*q12) + bw2*(q2_234*q13 - q3_234*q12);
00092 
00093   complex_t Jx = q1.X()*f0 + q2.X()*f1 + q3.X()*f2 + q4.X()*f3;
00094   complex_t Jy = q1.Y()*f0 + q2.Y()*f1 + q3.Y()*f2 + q4.Y()*f3;
00095   complex_t Jz = q1.Z()*f0 + q2.Z()*f1 + q3.Z()*f2 + q4.Z()*f3;
00096   complex_t Jt = q1.T()*f0 + q2.T()*f1 + q3.T()*f2 + q4.T()*f3;
00097   //  ptlv(fJc);
00098   fJc.SetPxPyPzE(Jx,Jy,Jz,Jt);
00099   double fac3 = 5.5e3;
00100   fJc *= fac3/fq2;
00101 }
00102 
00103 bool T4piCrossPart::Accepted(){
00104   //  if(fq2<0.5*fs) return false;
00105   return true;
00106 }

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