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

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

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