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

Go to the documentation of this file.
00001 #include <iostream>
00002 
00003 #include "T5piCrossPart.h"
00004 #include "TConstant.h"
00005 #include "TUtil.h"
00006 #include <complex>
00007 
00008 typedef std::complex<double> complex_t;
00009 using namespace std;
00010 using namespace rb;
00011 
00012 inline complex_t Rrho(double s, bool IsIsospinBreak){
00013   complex_t Drho = complex_t(Mrho2-s, -Mrho*Grho);
00014   complex_t prop_rho = Mrho2/Drho;
00015   return prop_rho;
00016 }
00017 
00018 inline complex_t bw_om(double s){
00019   complex_t Domega = complex_t(Momega2-s,-Momega*Gomega);
00020   complex_t bw = Momega2/Domega;
00021   return bw;
00022 }
00023 
00024 inline complex_t bw_b1(double s){
00025   complex_t Db1 = complex_t(Mb12-s,-Mb1*Gb1);
00026   complex_t bw = Mb12/Db1;
00027   return bw;
00028 }
00029 
00030 T5piCrossPart::T5piCrossPart(double e, double de, double nth0, int mode):
00031   TCrossPart(e,de,nth0),fmode(mode)
00032 {
00033   const double m_0[] = { mpi, mpi, mpi, mpi, mpi0};
00034   const int pid_0[]  = { 211, -211, 211, -211, 111};
00035   const double m_1[] = { mpi, mpi, mpi0, mpi0, mpi0};
00036   const int pid_1[]  = { 211, -211, 111, 111, 111};
00037   double emax = e;
00038   if(fmode==0) {
00039     emax *= 1 - pow((m_0[0]+m_0[1]+m_0[2]+m_0[3]+m_0[4])/(2*e),2);
00040     SetFinalParticles(5, m_0, pid_0);
00041     std::cout<<"Process -- e^+e^- -> b1^+- pi^-+"<<std::endl;
00042     std::cout<<"                      |-> omega pi^+-"<<std::endl;
00043     std::cout<<"                            |-> rho^+-0 pi^-+0"<<std::endl;
00044     std::cout<<"                                  |-> pi pi"<<std::endl;
00045   }else{
00046     emax *= 1 - pow((m_1[0]+m_1[1]+m_1[2]+m_1[3]+m_1[4])/(2*e),2);
00047     SetFinalParticles(5, m_1, pid_1);
00048     std::cout<<"Process -- e^+e^- -> b1^0 pi^0"<<std::endl;
00049     std::cout<<"                      |-> omega pi^0"<<std::endl;
00050     std::cout<<"                            |-> rho^+-0 pi^-+0"<<std::endl;
00051     std::cout<<"                                  |-> pi pi"<<std::endl;
00052   }
00053   fphot->SetEnergyRange(de,emax);
00054 }
00055 
00056 // TLorentzVectorC J5pi(const TLorentzVector &q1,
00057 //                   const TLorentzVector &q2,
00058 //                   const TLorentzVector &q3, 
00059 //                   const TLorentzVector &q4,
00060 //                   const TLorentzVector &q5){
00061 //   TLorentzVector qom = q3 + q4 + q5; 
00062 //   TLorentzVector qb1 = qom + q2;
00063 //   complex_t pom = bw_om(qom.M2());
00064 //   TLorentzVector tom = PseudoScalars3(q3,q4,q5);
00065 
00066 //   complex_t pb1 = bw_b1(qb1.M2());
00067 
00068 //   complex_t prop = pom*pb1;
00069 
00070 //   TLorentzVector res0
00071 //     = qom*(( q1*q2 )*(qb1*tom) - (qb1*q2 )*( q1*tom))
00072 //     +  q2*((qb1*qom)*( q1*tom) - ( q1*qom)*(qb1*tom))
00073 //     + tom*(( q1*qom)*(qb1*q2 ) - (qb1*qom)*( q1*q2 ));
00074 
00075 //   return TLorentzVectorC(res0.X()*prop,
00076 //                       res0.Y()*prop,
00077 //                       res0.Z()*prop,
00078 //                       res0.T()*prop);
00079 // }
00080 TLorentzVectorC J5pi(const TLorentzVector &q1,
00081                      const TLorentzVector &q2,
00082                      const TLorentzVector &q3, 
00083                      const TLorentzVector &q4,
00084                      const TLorentzVector &q5){
00085   TLorentzVector qom = q3 + q4 + q5;
00086   TLorentzVector qp = q3 + q5;
00087   TLorentzVector qm = q4 + q5;
00088   TLorentzVector q0 = q3 + q4;
00089   TLorentzVector qb1_0 = qom + q2;
00090   TLorentzVector qb1_1 = qom + q1;
00091   complex_t pom = bw_om(qom.M2());
00092   pom *= Rrho(qp.M2(),false) + Rrho(qm.M2(),false) + Rrho(q0.M2(),true);
00093 
00094   TLorentzVector tom = PseudoScalars3(q3,q4,q5);
00095 
00096   complex_t pb1_0 = bw_b1(qb1_0.M2());
00097   complex_t pb1_1 = bw_b1(qb1_1.M2());
00098 
00099   complex_t prop_0 = pom*pb1_0;
00100   complex_t prop_1 = pom*pb1_1;
00101   double    q1q2   =    q1*q2;
00102   double    q1tom  =    q1*tom;
00103   double qb1_0qom  = qb1_0*qom;
00104   double qb1_0tom  = qb1_0*tom;
00105   double qb1_0q2   = qb1_0*q2;
00106   double    q1qom  =    q1*qom;
00107   TLorentzVector res0
00108     = qom*((   q1q2 )*(qb1_0tom) - (qb1_0q2 )*(   q1tom))
00109     +  q2*((qb1_0qom)*(   q1tom) - (   q1qom)*(qb1_0tom))
00110     + tom*((   q1qom)*(qb1_0q2 ) - (qb1_0qom)*(   q1q2 ));
00111 
00112   double    q2tom  =    q2*tom;
00113   double qb1_1qom  = qb1_1*qom;
00114   double qb1_1tom  = qb1_1*tom;
00115   double qb1_1q1   = qb1_1*q1;
00116   double    q2qom  =    q2*qom;
00117   TLorentzVector res1
00118     = qom*((   q1q2 )*(qb1_1tom) - (qb1_1q1 )*(   q2tom))
00119     +  q1*((qb1_1qom)*(   q2tom) - (   q2qom)*(qb1_1tom))
00120     + tom*((   q2qom)*(qb1_1q1 ) - (qb1_1qom)*(   q1q2 ));
00121   
00122   return TLorentzVectorC(res0.X()*prop_0 + res1.X()*prop_1,
00123                          res0.Y()*prop_0 + res1.Y()*prop_1,
00124                          res0.Z()*prop_0 + res1.Z()*prop_1,
00125                          res0.T()*prop_0 + res1.T()*prop_1);
00126 }
00127 
00128 void T5piCrossPart::SetJ(){
00129   TLorentzVector &q1 = *fres[0];  //pi^+ momentum
00130   TLorentzVector &q2 = *fres[1];  //pi^- momentum
00131   TLorentzVector &q3 = *fres[2];  //pi^+ momentum
00132   TLorentzVector &q4 = *fres[3];  //pi^- momentum
00133   TLorentzVector &q5 = *fres[4];  //pi^0 momentum
00134   
00135   if(fmode == 0){
00136     fJc  = J5pi(q1,q2,q3,q4,q5);
00137     fJc += J5pi(q3,q2,q1,q4,q5);
00138     fJc += J5pi(q3,q4,q1,q2,q5);
00139     fJc += J5pi(q1,q4,q3,q2,q5);
00140   } else {
00141     fJc  = J5pi(q3,q4,q1,q2,q5);
00142     fJc += J5pi(q5,q3,q1,q2,q4);
00143     fJc += J5pi(q5,q4,q1,q2,q3);
00144   }
00145   double fac3 = 1.45e-19;
00146   fJc *= fac3/fq2;
00147 }
00148 
00149 bool T5piCrossPart::Accepted(){
00150   //  if(fq2<0.5*fs) return false;
00151   return true;
00152 }

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