#include <TKcFormFactor.h>
Inheritance diagram for TKcFormFactor:
Public Member Functions | |
TKcFormFactor () | |
~TKcFormFactor () | |
void | SetUnitFF () |
void | SetDefaultFF () |
bool | GetFFMode () |
void | SetNpoints (const unsigned int &i) |
void | Init () |
void | Init (const double &) |
std::complex< double > | Eval (const double &s) |
void | Print () |
Protected Member Functions | |
virtual std::complex< double > | ff (const double &) |
double | rhowidth (const double &) |
double | omegawidth (const double &) |
double | phiwidth (const double &) |
double | qklks (const double &) |
double | qkpkm (const double &) |
double | qpgamma (const double &, const int &) |
double | z (const double &) |
double | csborn (const double &) |
double | phase_space_3pi (const double &) |
Protected Attributes | |
double | fM_rho |
double | fM_rho2 |
double | fG_rho |
double | fB_rho_ee |
double | fM_omega |
double | fM_omega2 |
double | fG_omega |
double | fB_omega_ee |
double | fM_phi |
double | fM_phi2 |
double | fG_phi |
double | fB_phi_ee |
double | fB_phi [6] |
double | fB_omega [4] |
double | fB_rho [3] |
double | f_range [6] |
double | f_array [6][4] |
unsigned int | fNp |
TRadSpline * | fsvsr |
TRadSpline * | fsvsi |
bool | fUnitFF |
Definition at line 7 of file TKcFormFactor.h.
TKcFormFactor::TKcFormFactor | ( | ) |
Definition at line 5 of file TKcFormFactor.C.
References f_array, f_range, fB_omega, fB_omega_ee, fB_phi, fB_phi_ee, fB_rho, fB_rho_ee, fG_omega, fG_phi, fG_rho, fM_omega, fM_omega2, fM_phi, fM_phi2, fM_rho, fM_rho2, genRecEmupikp::i, and t().
00005 :TFormFactor(){ 00006 fM_rho = 775.8; 00007 fM_rho2 = fM_rho*fM_rho; 00008 fG_rho = 150.3; 00009 fB_rho_ee = 4.67e-5; 00010 00011 fM_omega = 782.59; 00012 fM_omega2 = fM_omega*fM_omega; 00013 fG_omega = 8.49; 00014 fB_omega_ee = 7.14e-5; 00015 00016 fM_phi = 1019.456; 00017 fM_phi2 = fM_phi*fM_phi; 00018 fG_phi = 4.26; 00019 fB_phi_ee = 2.98e-4; 00020 00021 fB_phi[0] = 0.492; // phi->K+ K- 00022 fB_phi[1] = 0.337; // phi->K_S K_L 00023 fB_phi[2] = 0.155; // phi->pi+ pi- pi0 00024 fB_phi[3] = 0.01299; // phi->eta pi0 00025 fB_phi[4] = 1.23e-3; // phi->pi0 gamma 00026 fB_phi[5] = 7.3e-5; // phi->pi+ pi- 00027 00028 fB_omega[0] = 0.891; // omega->pi+ pi- pi0 00029 fB_omega[1] = 0.087; // omega->pi0 gamma 00030 fB_omega[2] = 0.017; // omega->pi+ pi- 00031 fB_omega[3] = 4.9e-4; // omega->eta gamma 00032 00033 fB_rho[0] = 0.9987386; // rho->pi+ pi- 00034 fB_rho[1] = 6e-4; // rho->pi0 gamma 00035 fB_rho[2] = 3e-4; // rho->eta gamma 00036 00037 // phase space parametrization of 3pi from A.S.Popov 00038 double lm[] = {1.1, 0.875, 0.75, 0.62, 0.52, 0.46}; 00039 for(int i=0;i<6;i++)f_range[i] = lm[i]; 00040 00041 double b[] = { 5.29354148, -7.90990714, -2.26007613, 5.21453902}; 00042 double a[] = {-6.12394622, 25.0341405, -34.1311022, 15.5413717}; 00043 double a1[] = {-4.91624401, 19.8655606, -26.9136128, 12.2412286}; 00044 double c[] = {-0.56436115, 2.69953793, -4.32966739, 2.33116866}; 00045 double d[] = {-0.0548334238, 0.31600391, -0.609523718, 0.393667808}; 00046 double d1[] = {-0.00794774189, 0.0522269164, -0.114526409, 0.0838126536}; 00047 00048 for(int i=0;i<4;i++){ 00049 f_array[0][i] = b[i]; 00050 f_array[1][i] = a[i]; 00051 f_array[2][i] = a1[i]; 00052 f_array[3][i] = c[i]; 00053 f_array[4][i] = d[i]; 00054 f_array[5][i] = d1[i]; 00055 } 00056 00057 for(int i=0;i<5;i++){ 00058 double *t = &f_array[5-i][0]; 00059 double temp1 = t[0] + (t[1] + (t[2] + t[3]*lm[4-i])*lm[4-i])*lm[4-i]; 00060 double *r = &f_array[4-i][0]; 00061 double temp2 = (r[1] + (r[2] + r[3]*lm[4-i])*lm[4-i])*lm[4-i]; 00062 r[0] = temp1 - temp2; 00063 } 00064 00065 }
TKcFormFactor::~TKcFormFactor | ( | ) | [inline] |
double TKcFormFactor::csborn | ( | const double & | ) | [protected] |
Definition at line 176 of file TKcFormFactor.C.
References TConstants::Alpha2(), gConst, M_PI, and TConstants::MKC2().
Referenced by ff().
00176 { 00177 double beta = sqrt(1 - 4*gConst->MKC2()/s); 00178 return M_PI*gConst->Alpha2()*pow(beta,3)/(3*s)*0.389379e12; 00179 }
std::complex<double> TFormFactor::Eval | ( | const double & | s | ) | [inline, inherited] |
Definition at line 23 of file TFormFactor.h.
References TRadSpline::Eval(), TFormFactor::fsvsi, TFormFactor::fsvsr, and TFormFactor::fUnitFF.
Referenced by TPiCrossPart::BornShift(), isr(), main(), TFormFactor::Print(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_kuraev_eidelman(), and TPiCrossPart::R_Gamma_t().
00023 { 00024 if(fUnitFF) return std::complex<double>(1,0); 00025 return std::complex<double>(fsvsr->Eval(s),fsvsi->Eval(s)); 00026 }
std::complex< double > TKcFormFactor::ff | ( | const double & | ) | [protected, virtual] |
Implements TFormFactor.
Definition at line 67 of file TKcFormFactor.C.
References csborn(), fB_omega_ee, fB_phi, fB_rho_ee, fM_omega, fM_omega2, fM_phi, fM_phi2, fM_rho, fM_rho2, M_PI, omegawidth(), phiwidth(), qkpkm(), rhowidth(), and z().
00067 { 00068 std::complex<double> arho = sqrt(phiwidth(fM_phi2)*rhowidth(fM_rho2)*pow(fM_rho,3)*fM_phi2*6*M_PI*fB_rho_ee*fB_phi[1])/std::complex<double>(fM_rho2-s, -sqrt(s)*rhowidth(s)); 00069 std::complex<double> aomega = sqrt(phiwidth(fM_phi2)*omegawidth(fM_omega2)*pow(fM_omega,3)*fM_phi2*6*M_PI*fB_omega_ee*fB_phi[1])/std::complex<double>(fM_omega2-s, -sqrt(s)*omegawidth(s)); 00070 double smax = 2043.0; 00071 std::complex<double> aphi = phiwidth(fM_phi2)*pow(fM_phi,3)*sqrt(smax/0.389379292e12*fM_phi)/std::complex<double>(fM_phi2-s,-sqrt(s)*phiwidth(s)); 00072 std::complex<double> atot = -aphi - aomega - arho; 00073 double cs = csborn(s); 00074 // std::cout<<phiwidth(fM_phi2)<<" "<<omegawidth(fM_omega2)<<std::endl; 00075 // std::cout<<atot<<" "<<aphi<<" "<<aomega<<" "<<arho<<std::endl; 00076 // std::cout<<pow(sqrt(s),5)<<" "<<qkpkm(s)<<" "<<qkpkm(fM_phi2)<<" "<<z(s)<<" "<<z(fM_phi2)<<" "<<cs<<std::endl; 00077 // std::cout<<0.389379e12/pow(sqrt(s),5)*qkpkm(s)/qkpkm(fM_phi2)*z(s)/z(fM_phi2)/cs<<std::endl; 00078 if(cs>0){ 00079 std::complex<double> res = atot*sqrt(0.389379e12/pow(sqrt(s),5)*qkpkm(s)/qkpkm(fM_phi2)*z(s)/z(fM_phi2)/cs); 00080 // std::cout<<arho<<" "<<aomega<<" "<<aphi<<" "<<z(fM_phi2)<<" "<<cs<<" "<<qkpkm(s)<<" "<<z(s)<<std::endl; 00081 // std::cout<<sqrt(s)/2<<" "<<res*z(fM_phi2)*cs<<std::endl; 00082 // exit(0); 00083 return res; 00084 } else { 00085 std::complex<double> res = atot*sqrt(0.389379e12/pow(sqrt(s+1),5)*qkpkm(s+1)/qkpkm(fM_phi2)*z(s+1)/z(fM_phi2)/csborn(s+1)); 00086 // std::cout<<arho<<" "<<aomega<<" "<<aphi<<" "<<z(fM_phi2)<<" "<<cs<<" "<<qkpkm(s)<<" "<<z(s)<<std::endl; 00087 // std::cout<<sqrt(s)/2<<" "<<res*z(fM_phi2)*cs<<std::endl; 00088 return res; 00089 } 00090 }
bool TFormFactor::GetFFMode | ( | ) | [inline, inherited] |
Definition at line 19 of file TFormFactor.h.
References TFormFactor::fUnitFF.
00019 {return fUnitFF;}
void TFormFactor::Init | ( | const double & | ) | [inherited] |
Definition at line 30 of file TFormFactor.C.
References TFormFactor::ff(), TFormFactor::fNp, TFormFactor::fsvsi, TFormFactor::fsvsr, TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), gGlobal, genRecEmupikp::i, imag(), and s.
00030 { 00031 double *s = new double[fNp]; 00032 double *re_vs = new double[fNp]; 00033 double *im_vs = new double[fNp]; 00034 /* 00035 for(int i = 1;i<=1;i++){ 00036 double en = 500 + i; 00037 std::complex<double> form = ff(pow(2*en,2)); 00038 std::cout<< en << " " << form<<" "<<std::abs(form*std::conj(form))<<std::endl; 00039 } 00040 exit(0); 00041 */ 00042 double smin = gGlobal->Get_MF2()*gGlobal->Get_s(); 00043 double ds = (smax-smin)/(fNp-1); 00044 for(unsigned int i=0; i<fNp; i++){ 00045 s[i] = smin + i*ds; 00046 std::complex<double> vs = ff( (i>0) ? s[i] : smin + 0.01*ds); 00047 // std::cout<<i<<" "<<s[i]<<" "<<vs<<std::endl; 00048 re_vs[i] = std::real(vs); 00049 im_vs[i] = std::imag(vs); 00050 } 00051 00052 if(fsvsr) delete fsvsr; 00053 fsvsr = new TRadSpline3("vsr", s, re_vs, fNp); 00054 00055 if(fsvsi) delete fsvsi; 00056 fsvsi = new TRadSpline3("vsi", s, im_vs, fNp); 00057 00058 delete [] re_vs; 00059 delete [] im_vs; 00060 delete [] s; 00061 }
void TFormFactor::Init | ( | ) | [inherited] |
Definition at line 21 of file TFormFactor.C.
References TRadGlobal::Get_s(), and gGlobal.
Referenced by TPiCrossPart::Init(), and main().
00021 { 00022 #ifndef ALONE 00023 double smax = gGlobal->Get_s(); 00024 #else 00025 double smax = 4*800*800; 00026 #endif 00027 Init(smax); 00028 }
double TKcFormFactor::omegawidth | ( | const double & | ) | [protected] |
Definition at line 104 of file TKcFormFactor.C.
References fB_omega, fB_phi, fG_omega, fM_omega2, fM_phi2, gConst, TConstants::Mpi2(), phase_space_3pi(), phiwidth(), qklks(), qkpkm(), and qpgamma().
Referenced by ff().
00104 { 00105 00106 double temp5 = pow(0.5*sqrt(s - 4*gConst->Mpi2()),3); 00107 double temp6 = pow(0.5*sqrt(fM_omega2 - 4*gConst->Mpi2()),3); 00108 00109 return 00110 fG_omega* 00111 ( 00112 fB_omega[0]*phase_space_3pi(s)/phase_space_3pi(fM_omega2) + 00113 fB_omega[1]*qpgamma(s,1)/qpgamma(fM_omega2,1) + 00114 fB_omega[2]*temp5/temp6*fM_omega2/s + 00115 fB_omega[3]*qpgamma(s,2)/qpgamma(fM_omega2,2) 00116 ) + 00117 0.5*phiwidth(fM_phi2)*fM_phi2* 00118 ( 00119 fB_phi[0]*qkpkm(s)/qkpkm(fM_phi2)/s + 00120 fB_phi[1]*qklks(s)/qklks(fM_phi2)/s 00121 ); 00122 }
double TKcFormFactor::phase_space_3pi | ( | const double & | ) | [protected] |
Definition at line 181 of file TKcFormFactor.C.
References f_array, f_range, genRecEmupikp::i, and x.
Referenced by omegawidth(), and phiwidth().
00181 { 00182 double x = sqrt(s)*1e-3; 00183 00184 int k = 0; 00185 if (f_range[0] <= x ){ 00186 k = 0; 00187 } else if( x < f_range[5] ){ 00188 k = 5; 00189 } else { 00190 for(int i=0;i<4;i++){ 00191 if( f_range[i+1] <= x && x < f_range[i] ){ 00192 k = i+1; 00193 break; 00194 } 00195 } 00196 } 00197 double pol = 0; 00198 for(int i=0;i<4;i++) 00199 pol += pow(x,i)*f_array[k][i]; 00200 return pol/0.393728*(0.00749/0.0361478); // norm to omega 00201 }
double TKcFormFactor::phiwidth | ( | const double & | ) | [protected] |
Definition at line 124 of file TKcFormFactor.C.
References fB_phi, fG_phi, fM_phi2, gConst, TConstants::Mpi2(), phase_space_3pi(), qklks(), qkpkm(), and qpgamma().
Referenced by ff(), omegawidth(), and rhowidth().
00124 { 00125 double w1 = phase_space_3pi(s); 00126 double w2 = phase_space_3pi(fM_phi2); 00127 return fM_phi2*fG_phi* 00128 ( 00129 fB_phi[0]*qkpkm(s)/qkpkm(fM_phi2) + 00130 fB_phi[1]*qklks(s)/qklks(fM_phi2) + 00131 fB_phi[5]*pow(sqrt((s/4-gConst->Mpi2())/(fM_phi2/4 - gConst->Mpi2())),3) 00132 )/s + 00133 fG_phi* 00134 ( 00135 fB_phi[2]*w1/w2 + 00136 fB_phi[4]*qpgamma(s,1)/qpgamma(fM_phi2,1) + 00137 fB_phi[3]*qpgamma(s,2)/qpgamma(fM_phi2,2) 00138 ); 00139 }
void TFormFactor::Print | ( | ) | [inherited] |
Definition at line 63 of file TFormFactor.C.
References abs, conj(), TFormFactor::Eval(), TRadGlobal::Get_s(), and gGlobal.
00063 { 00064 #ifndef ALONE 00065 std::complex<double> form = Eval(gGlobal->Get_s()); 00066 #else 00067 std::complex<double> form = Eval(4*200*200); 00068 #endif 00069 std::cout<<"Formfactor is "<<form<<std::endl; 00070 std::cout<<"Squared formfactor is "<<std::abs(form*std::conj(form))<<std::endl; 00071 std::cout<<std::flush; 00072 }
double TKcFormFactor::qklks | ( | const double & | ) | [protected] |
Definition at line 141 of file TKcFormFactor.C.
References gConst, and TConstants::MK02().
Referenced by omegawidth(), phiwidth(), and rhowidth().
double TKcFormFactor::qkpkm | ( | const double & | ) | [protected] |
Definition at line 146 of file TKcFormFactor.C.
References gConst, and TConstants::MKC2().
Referenced by ff(), omegawidth(), phiwidth(), and rhowidth().
double TKcFormFactor::qpgamma | ( | const double & | , | |
const int & | ||||
) | [protected] |
Definition at line 151 of file TKcFormFactor.C.
References gConst, TConstants::Meta2(), and TConstants::Mpi2().
Referenced by omegawidth(), phiwidth(), and rhowidth().
00151 { 00152 //==================================================== 00153 // MODE is a type of Pseudo-Scalar meson : 00154 // = 1 means pi0 00155 // = 2 means eta 00156 //==================================================== 00157 switch (mode){ 00158 case 1: 00159 return (s>gConst->Mpi2())?pow((1-gConst->Mpi2()/s)*sqrt(s)/2,3):0; 00160 break; 00161 case 2: 00162 return (s>gConst->Meta2())?pow((1-gConst->Meta2()/s)*sqrt(s)/2,3):0; 00163 break; 00164 default: 00165 return 0; 00166 break; 00167 } 00168 }
double TKcFormFactor::rhowidth | ( | const double & | ) | [protected] |
Definition at line 92 of file TKcFormFactor.C.
References fB_phi, fB_rho, fG_rho, fM_phi2, fM_rho2, gConst, TConstants::Mpi2(), phiwidth(), qklks(), qkpkm(), and qpgamma().
Referenced by ff().
00092 { 00093 return fG_rho*fM_rho2/s* 00094 fB_rho[0]*pow(sqrt((s/4.0-gConst->Mpi2())/(fM_rho2/4.0-gConst->Mpi2())),3) + 00095 fG_rho*fB_rho[1]*qpgamma(s,1)/qpgamma(fM_rho2,1) + 00096 fG_rho*fB_rho[2]*qpgamma(s,2)/qpgamma(fM_rho2,2) + 00097 0.5*phiwidth(fM_phi2)*fM_phi2* 00098 ( 00099 fB_phi[0]*qkpkm(s)/qkpkm(fM_phi2) + 00100 fB_phi[1]*qklks(s)/qklks(fM_phi2) 00101 )/s; 00102 }
void TFormFactor::SetDefaultFF | ( | ) | [inline, inherited] |
Definition at line 18 of file TFormFactor.h.
References TFormFactor::fUnitFF.
Referenced by TPiCrossPart::Init().
00018 {fUnitFF = false;}
void TFormFactor::SetNpoints | ( | const unsigned int & | i | ) | [inline, inherited] |
void TFormFactor::SetUnitFF | ( | ) | [inline, inherited] |
Definition at line 17 of file TFormFactor.h.
References TFormFactor::fUnitFF.
Referenced by TPiCrossPart::Init(), and main().
00017 {fUnitFF = true;}
double TKcFormFactor::z | ( | const double & | ) | [protected] |
Definition at line 170 of file TKcFormFactor.C.
References TConstants::Alpha(), gConst, is, M_PI, and TConstants::MKC2().
Referenced by ff().
00170 { 00171 double mkc24 = 4*gConst->MKC2(); 00172 double is = 1/s; 00173 return (s<=mkc24)?0:1 + 0.5*gConst->Alpha()*M_PI*(2 - mkc24*is)/sqrt(1 - mkc24*is); 00174 }
double TKcFormFactor::f_array[6][4] [protected] |
Definition at line 29 of file TKcFormFactor.h.
Referenced by phase_space_3pi(), and TKcFormFactor().
double TKcFormFactor::f_range[6] [protected] |
Definition at line 28 of file TKcFormFactor.h.
Referenced by phase_space_3pi(), and TKcFormFactor().
double TKcFormFactor::fB_omega[4] [protected] |
double TKcFormFactor::fB_omega_ee [protected] |
double TKcFormFactor::fB_phi[6] [protected] |
Definition at line 24 of file TKcFormFactor.h.
Referenced by ff(), omegawidth(), phiwidth(), rhowidth(), and TKcFormFactor().
double TKcFormFactor::fB_phi_ee [protected] |
double TKcFormFactor::fB_rho[3] [protected] |
double TKcFormFactor::fB_rho_ee [protected] |
double TKcFormFactor::fG_omega [protected] |
double TKcFormFactor::fG_phi [protected] |
double TKcFormFactor::fG_rho [protected] |
double TKcFormFactor::fM_omega [protected] |
double TKcFormFactor::fM_omega2 [protected] |
Definition at line 15 of file TKcFormFactor.h.
Referenced by ff(), omegawidth(), and TKcFormFactor().
double TKcFormFactor::fM_phi [protected] |
double TKcFormFactor::fM_phi2 [protected] |
Definition at line 20 of file TKcFormFactor.h.
Referenced by ff(), omegawidth(), phiwidth(), rhowidth(), and TKcFormFactor().
double TKcFormFactor::fM_rho [protected] |
double TKcFormFactor::fM_rho2 [protected] |
unsigned int TFormFactor::fNp [protected, inherited] |
Definition at line 9 of file TFormFactor.h.
Referenced by TFormFactor::Init(), TFormFactor::SetNpoints(), and TFormFactor::TFormFactor().
TRadSpline* TFormFactor::fsvsi [protected, inherited] |
Definition at line 11 of file TFormFactor.h.
Referenced by TFormFactor::Eval(), TFormFactor::Init(), TFormFactor::TFormFactor(), and TFormFactor::~TFormFactor().
TRadSpline* TFormFactor::fsvsr [protected, inherited] |
Definition at line 10 of file TFormFactor.h.
Referenced by TFormFactor::Eval(), TFormFactor::Init(), TFormFactor::TFormFactor(), and TFormFactor::~TFormFactor().
bool TFormFactor::fUnitFF [protected, inherited] |
Definition at line 12 of file TFormFactor.h.
Referenced by TFormFactor::Eval(), TFormFactor::GetFFMode(), TFormFactor::SetDefaultFF(), TFormFactor::SetUnitFF(), and TFormFactor::TFormFactor().