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

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

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