TKcFormFactor Class Reference

#include <TKcFormFactor.h>

Inheritance diagram for TKcFormFactor:

TFormFactor List of all members.

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
TRadSplinefsvsr
TRadSplinefsvsi
bool fUnitFF

Detailed Description

Definition at line 7 of file TKcFormFactor.h.


Constructor & Destructor Documentation

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]

Definition at line 46 of file TKcFormFactor.h.

00046 {};


Member Function Documentation

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().

00141                                           {
00142   double M2 = 4*gConst->MK02();
00143   return (s<M2)?0:pow(0.5*sqrt(s - M2),3);
00144 }

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().

00146                                           {
00147   double M2 = 4*gConst->MKC2();
00148   return (s<M2)?0:pow(0.5*sqrt(s - M2),3);
00149 }

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]

Definition at line 20 of file TFormFactor.h.

References TFormFactor::fNp.

00020 {fNp = i;}

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 }


Member Data Documentation

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]

Definition at line 25 of file TKcFormFactor.h.

Referenced by omegawidth(), and TKcFormFactor().

double TKcFormFactor::fB_omega_ee [protected]

Definition at line 17 of file TKcFormFactor.h.

Referenced by ff(), and TKcFormFactor().

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]

Definition at line 22 of file TKcFormFactor.h.

Referenced by TKcFormFactor().

double TKcFormFactor::fB_rho[3] [protected]

Definition at line 26 of file TKcFormFactor.h.

Referenced by rhowidth(), and TKcFormFactor().

double TKcFormFactor::fB_rho_ee [protected]

Definition at line 12 of file TKcFormFactor.h.

Referenced by ff(), and TKcFormFactor().

double TKcFormFactor::fG_omega [protected]

Definition at line 16 of file TKcFormFactor.h.

Referenced by omegawidth(), and TKcFormFactor().

double TKcFormFactor::fG_phi [protected]

Definition at line 21 of file TKcFormFactor.h.

Referenced by phiwidth(), and TKcFormFactor().

double TKcFormFactor::fG_rho [protected]

Definition at line 11 of file TKcFormFactor.h.

Referenced by rhowidth(), and TKcFormFactor().

double TKcFormFactor::fM_omega [protected]

Definition at line 14 of file TKcFormFactor.h.

Referenced by ff(), and TKcFormFactor().

double TKcFormFactor::fM_omega2 [protected]

Definition at line 15 of file TKcFormFactor.h.

Referenced by ff(), omegawidth(), and TKcFormFactor().

double TKcFormFactor::fM_phi [protected]

Definition at line 19 of file TKcFormFactor.h.

Referenced by ff(), and TKcFormFactor().

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]

Definition at line 9 of file TKcFormFactor.h.

Referenced by ff(), and TKcFormFactor().

double TKcFormFactor::fM_rho2 [protected]

Definition at line 10 of file TKcFormFactor.h.

Referenced by ff(), rhowidth(), and TKcFormFactor().

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().


Generated on Tue Nov 29 23:36:00 2016 for BOSS_7.0.2 by  doxygen 1.4.7