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

Go to the documentation of this file.
00001 #include "TKKEtaCrossPart.h"
00002 #include "TConstant.h"
00003 #include "TUtil.h"
00004 
00005 #include <complex>
00006 #include <iostream>
00007 
00008 using namespace rb;
00009 
00010 inline complex_t Amp(double s){
00011   const complex_t I(0,1);
00012   const double Apsi = 4*alpha*Gpsi/(3*Geepsi);
00013   const double phipsi = -M_PI/2;
00014   const double Apsip = 2*alpha*Gpsip/(3*Geepsip);
00015   const double phipsip = -M_PI/2;
00016   const double Apsipp = alpha*Gpsipp/(3*Geepsipp);
00017   const double phipsipp = -M_PI/2;
00018   complex_t res = 3*sqrt(s)/alpha*
00019     (
00020      Geepsi*(1 + Apsi*exp(I*phipsi))/(s - Mpsi2 + I*Mpsi*Gpsi) +
00021      Geepsip*(1 + Apsip*exp(I*phipsip))/(s - Mpsip2 + I*Mpsip*Gpsip) +
00022      Geepsipp*(1 + Apsipp*exp(I*phipsipp))/(s - Mpsipp2 + I*Mpsipp*Gpsipp));
00023   return res;
00024 }
00025 
00026 complex_t FK0K0Eta(double s, double Q02){
00027   complex_t H = R(Q02,Mphi2,Gphi,mk02+mk02,0);
00028   return (5e-3*(1/s))*H*(1+Amp(s));
00029 }
00030 
00031 complex_t FKcKcEta(double s, double Q02){
00032   complex_t H = R(Q02,Mphi2,Gphi,mkc2+mkc2,0);
00033   return (5e-3*(1/s))*H*(1+Amp(s));
00034 }
00035 
00036 TKKEtaCrossPart::TKKEtaCrossPart(double e, double de, double nth0, int mode):
00037   TCrossPart(e,de,nth0),fmode(mode)
00038 {
00039   const double m_0[] = { mkc, mkc, meta};
00040   const int pid_0[]  = { 321, -321, 221};
00041   const double m_1[] = { mk0, mk0, meta};
00042   const int pid_1[]  = { 310,  130, 221};
00043 
00044   double emax = e;
00045   if(mode == 0){
00046     SetFinalParticles(3, m_0, pid_0);
00047     emax = e*(1 - pow((m_0[0]+m_0[1]+m_0[2])/(2*e),2));
00048     std::cout<<"Process -- e^+e^- -> K* K -> K^+ K^- eta"<<std::endl;
00049   } else {
00050     SetFinalParticles(3, m_1, pid_1);
00051     emax = e*(1 - pow((m_1[0]+m_1[1]+m_1[2])/(2*e),2));
00052     std::cout<<"Process -- e^+e^- -> K* K -> K_S K_L eta"<<std::endl;
00053   }
00054 
00055   //  emax = e/2.5;
00056   fphot->SetEnergyRange(de,emax);
00057   std::cout<<de<<"MeV <E_gamma< "<<emax<<" MeV"<<std::endl;
00058 }
00059 
00060 void TKKEtaCrossPart::SetJ(){
00061   TLorentzVector &qK1 = *fres[0];  //K momentum
00062   TLorentzVector &qK2 = *fres[1];  //K momentum
00063 
00064   TLorentzVector qK1qK2 = qK1 + qK2;
00065 
00066   //  invariant masses
00067   double QKK = qK1qK2.M2();
00068 
00069   complex_t F;
00070   if(fmode == 0){
00071     F = FKcKcEta(fq2,QKK);
00072   }else {
00073     F = FK0K0Eta(fq2,QKK);
00074   }
00075  
00076   J3PseudoScalars();
00077 
00078   fJc *= F;
00079 }
00080 
00081 bool TKKEtaCrossPart::Accepted(){
00082   // require inv mass of 3-pi within 97% of Ecm
00083 //   if(fq2<0.95*fs) return false;
00084 //   const TLorentzVector &qp = *fres[0];  //pi^+ momentum
00085 //   const TLorentzVector &qm = *fres[1];  //pi^- momentum
00086 //   const TLorentzVector &q0 = *fres[2];  //pi^0 momentum
00087   
00088 //   double qpqm = qp*qm;
00089 //   double qpq0 = qp*q0;
00090 //   double qmq0 = qm*q0;
00091 //   double Qp2 = mpi2 + mpi02 + 2*qmq0;
00092 //   double Qm2 = mpi2 + mpi02 + 2*qpq0;
00093   
00094 //   if(Qp2+Qm2<5e6) return false;
00095 
00096 //   if(fabs(qp.P()-qm.P())>0.04*fe) return false;
00097 
00098 //   double cosqp = qp.CosTheta();
00099 //   if(fabs(cosqp)>0.9)return false;
00100   
00101 //   double cosqm = qm.CosTheta();
00102 //   if(fabs(cosqm)>0.9)return false;
00103   
00104   return true;
00105 }
00106 

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