/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/Mcgpj/Mcgpj-00-01-04/src/code/src/TPiFormFactor.C

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <cmath>
00003 #include "TPiFormFactor.h"
00004 #include "TConstants.h"
00005 
00006 TPiFormFactor::TPiFormFactor():TFormFactor(){
00007   fPrm  = 0;
00008   /*
00009   SetFFParameters(775.77,     // M_rho
00010                   144.09,     // G_rho
00011                   1464.6,     // M_rho_p
00012                   308.72,     // G_rho_p
00013                   782.70,     // M_omega
00014                   8.6888,     // G_omega
00015                   0.595e-3,   // G_omega_ee
00016                   0.013307,   // Br_omega_pipi
00017                   13.25,      // Phi_rho_omega in degree
00018                   -0.80305e-1 // Beta
00019                   );
00020   */
00021   /*
00022   // CMD-2 pion formfactor parametriztion in rho-meson region
00023   // 23 june 2003
00024   SetFFParameters(775.68,
00025                   143.89,
00026                   1464.6,
00027                   308.72,
00028                   782.70,
00029                   8.6855,
00030                   0.59500e-03,
00031                   0.13033e-01,
00032                   13.297,
00033                   -0.80656e-01
00034                   );
00035   */
00036 
00037   // pion formactor parametrization with rho' rho'' should be valid up to 3 GeV 
00038   /*
00039   double par[20]=
00040     {
00041       775.364,       //  M_rho
00042       143.533,       //  G_rho
00043       1316.67,       //  M_rho_p
00044       465.943,       //  G_rho_p
00045       1732.79,       //  M_rho_p2
00046       175.142,       //  G_rho_p2
00047       0.0146604,     //  Br_omega_pipi
00048       0.191774,      //  Phi_rho_omega
00049       0.335192,      //  Beta
00050       -2.19222,      //  Phi_rho_p
00051       0.035182,      //  Delta
00052       -2.17322,      //  Phi_rho_p2
00053       782.57,        //  M_omega
00054       8.44,          //  G_omega
00055       6.95e-5*8.44,  //  G_omega_ee
00056       1019.456,      //  M_phi
00057       4.26,          //  G_phi
00058       2.96e-4*4.26,  //  G_phi_ee
00059       7.3e-5,        //  Br_phi_pipi
00060       TMath::Pi()    //  Phi_rho_phi
00061     };
00062   */
00063 
00064   double par[20]=
00065     {
00066       774.824,       //  M_rho
00067       141.335,       //  G_rho
00068       1294.08,       //  M_rho_p
00069       472.468,       //  G_rho_p
00070       1732.79,       //  M_rho_p2
00071       175.142,       //  G_rho_p2
00072       0.0124238,     //  Br_omega_pipi
00073       0.264541,      //  Phi_rho_omega
00074       0.37245,       //  Beta
00075       -2.17681,      //  Phi_rho_p
00076       0.035182,      //  Delta
00077       -2.17322,      //  Phi_rho_p2
00078       782.57,        //  M_omega
00079       8.44,          //  G_omega
00080       6.95e-5*8.44,  //  G_omega_ee
00081       1019.456,      //  M_phi
00082       4.26,          //  G_phi
00083       2.96e-4*4.26,  //  G_phi_ee
00084       7.3e-5,        //  Br_phi_pipi
00085       M_PI           //  Phi_rho_phi
00086     };
00087   SetFFParameters(par);
00088 
00089 }
00090 
00091 void TPiFormFactor::SetFFParameters(const double &p0, const double &p1, 
00092                                   const double &p2, const double &p3, 
00093                                   const double &p4, const double &p5, 
00094                                   const double &p6, const double &p7,
00095                                   const double &p8, const double &p9){
00096   const std::complex<double> One = std::complex<double>(1,0), I = std::complex<double>(0,1);
00097   fPrm  =  1;
00098   fM_rho         = p0;
00099   fG_rho         = p1;
00100 
00101   fM_rho_p       = p2;
00102   fG_rho_p       = p3;
00103 
00104   fM_omega       = p4;
00105   fG_omega       = p5;
00106 
00107   fG_omega_ee    = p6;
00108   fBr_omega_pipi = p7;
00109   fPhi_rho_omega = p8*gConst->Pi()/180;
00110 
00111   fBeta          = p9;
00112 
00113   fM_omega2      = fM_omega*fM_omega;
00114 
00115   std::complex<double> fpi_rho_omega = GS(fM_omega2, fM_rho, fG_rho);
00116   double br_omega = 2*gConst->Alpha2()*pow(ppi(fM_omega2),3)/(9*fM_omega*fG_omega*fG_omega_ee); 
00117   fAmp_omega  = (One + fBeta)/std::abs(fpi_rho_omega)*sqrt(fBr_omega_pipi/br_omega);
00118   fAmp_omega *= exp(I*fPhi_rho_omega);
00119 }
00120 
00121 void TPiFormFactor::SetFFParameters(double *p){
00122   const std::complex<double> One = std::complex<double>(1,0), I = std::complex<double>(0,1);
00123   fPrm  =  2;
00124   fM_rho         = p[0];
00125   fG_rho         = p[1];
00126   fM_rho_p       = p[2];
00127   fG_rho_p       = p[3];
00128   fM_rho_p2      = p[4];
00129   fG_rho_p2      = p[5];
00130   fBr_omega_pipi = p[6];
00131   fPhi_rho_omega = p[7];
00132   fBeta          = p[8]*exp(I*p[9]);
00133   fDelta         = p[10]*exp(I*p[11]);
00134   fM_omega       = p[12];
00135   fG_omega       = p[13];
00136   fG_omega_ee    = p[14];
00137   fM_phi         = p[15];
00138   fG_phi         = p[16];
00139   fG_phi_ee      = p[17];
00140   fBr_phi_pipi   = p[18];
00141   fPhi_rho_phi   = p[19];
00142                  
00143   fM_omega2      = fM_omega*fM_omega;
00144   fM_phi2        = fM_phi*fM_phi;
00145 
00146   std::complex<double> fpi_rho_omega = GS(fM_omega2, fM_rho, fG_rho);
00147   double br_omega  = 2*gConst->Alpha2()*pow(ppi(fM_omega2),3)/(9*fM_omega*fG_omega*fG_omega_ee);
00148   double amp_omega = std::abs((One + fBeta + fDelta)/fpi_rho_omega)*sqrt(fBr_omega_pipi/br_omega);
00149   fAmp_omega       = amp_omega*exp(I*fPhi_rho_omega);
00150 
00151   std::complex<double> fpi_rho_phi = GS(fM_phi2, fM_rho, fG_rho);
00152   double br_phi  = 2*gConst->Alpha2()*pow(ppi(fM_phi2),3)/(9*fM_phi*fG_phi*fG_phi_ee);
00153   double amp_phi = std::abs((One + fBeta + fDelta)/fpi_rho_phi)*sqrt(fBr_phi_pipi/br_phi);
00154   fAmp_phi       = amp_phi*exp(I*fPhi_rho_phi);
00155 
00156 }
00157 
00158 std::complex<double> TPiFormFactor::ff(const double &s){
00159   const std::complex<double> One = std::complex<double>(1,0), I = std::complex<double>(0,1);
00160   std::complex<double> cfpi_rho, cfpi_rho_p, cfpi_rho_p2, cfpi_omega, cfpi_phi, Alpha;
00161   if(fPrm==1){
00162 
00163     cfpi_rho    = GS(s, fM_rho   , fG_rho   );
00164     cfpi_rho_p  = GS(s, fM_rho_p , fG_rho_p );
00165     cfpi_omega  = s/(s - fM_omega2 + I*fM_omega*fG_omega);
00166 
00167     Alpha = One - fAmp_omega*cfpi_omega;
00168     return (
00169             Alpha*cfpi_rho +
00170             fBeta*cfpi_rho_p
00171             )/(One + fBeta);
00172 
00173   }else if(fPrm==2){
00174 
00175     cfpi_rho    = GS(s, fM_rho   , fG_rho   );
00176     cfpi_rho_p  = GS(s, fM_rho_p , fG_rho_p );
00177     cfpi_rho_p2 = GS(s, fM_rho_p2, fG_rho_p2);
00178     cfpi_omega  = s/(s - fM_omega2 + I*fM_omega*fG_omega);
00179     cfpi_phi    = s/(s - fM_phi2   + I*fM_phi  *fG_phi  );
00180     
00181     Alpha = One - fAmp_omega*cfpi_omega - fAmp_phi*cfpi_phi;
00182     return (
00183             Alpha *cfpi_rho   +
00184             fBeta *cfpi_rho_p +
00185             fDelta*cfpi_rho_p2
00186             )/(One + fBeta + fDelta);
00187 
00188   }
00189   return One;
00190 }
00191 
00192 std::complex<double> TPiFormFactor::GS(const double &s, 
00193                                      const double &M, 
00194                                      const double &G){
00195   const std::complex<double> I = std::complex<double>(0,1);
00196   double M2 = M*M;
00197   double prho = ppi(M2);
00198   double pi = gConst->Pi();
00199   double mp = gConst->Mpi();
00200   double d  = 3/pi*mp*mp/(prho*prho)*log((M+2*prho)/(2*mp)) +
00201     M/(2*pi*prho) - mp*mp*M/(pi*pow(prho,3));
00202   return (1+d*G/M)/((1+(f(s,M,G)-s)/M2) - I*G_rho(s,M,G)/M);
00203 }
00204 
00205 double TPiFormFactor::f(const double &s, 
00206                       const double &M, 
00207                       const double &G){
00208   double M2 = M*M;
00209   double prho = ppi(M2);
00210   double dhds = h(M2)*(1/(8*pow(prho/M,2))-1./2.) + 1/(2*gConst->Pi());
00211   return G*prho*pow(M/prho,2)*(pow(ppi(s)/prho,2)*(h(s)-h(M2)) + (1-s/M2)*dhds);
00212 }
00213 
00214 double TPiFormFactor::G_rho(const double &s, 
00215                           const double &M, 
00216                           const double &G){
00217   double M2 = M*M;
00218   double G_rho = G*pow(ppi(s)/ppi(M2),3)*sqrt(M2/s);
00219   return G_rho;
00220 }
00221 
00222 double TPiFormFactor::h(const double &s){
00223   return 2/gConst->Pi()*ppi(s)/sqrt(s)*log((sqrt(s)+2*ppi(s))/(2*gConst->Mpi()));
00224 }
00225 
00226 double TPiFormFactor::ppi(const double &s){
00227   return 0.5*sqrt(s-4*gConst->Mpi2());
00228 }

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