#include <TPiFormFactor.h>
Inheritance diagram for TPiFormFactor:
Public Member Functions | |
TPiFormFactor () | |
~TPiFormFactor () | |
void | SetFFParameters (const double &, const double &, const double &, const double &, const double &, const double &, const double &, const double &, const double &, const double &) |
void | SetFFParameters (double *par) |
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 &) |
std::complex< double > | GS (const double &, const double &, const double &) |
double | f (const double &, const double &, const double &) |
double | G_rho (const double &, const double &, const double &) |
double | h (const double &) |
double | ppi (const double &) |
Protected Attributes | |
int | fPrm |
double | fM_rho |
double | fG_rho |
double | fM_rho_p |
double | fG_rho_p |
double | fM_rho_p2 |
double | fG_rho_p2 |
double | fM_omega |
double | fM_omega2 |
double | fG_omega |
double | fG_omega_ee |
double | fBr_omega_pipi |
double | fPhi_rho_omega |
double | fM_phi |
double | fM_phi2 |
double | fG_phi |
double | fG_phi_ee |
double | fBr_phi_pipi |
double | fPhi_rho_phi |
std::complex< double > | fBeta |
std::complex< double > | fDelta |
std::complex< double > | fAmp_omega |
std::complex< double > | fAmp_phi |
unsigned int | fNp |
TRadSpline * | fsvsr |
TRadSpline * | fsvsi |
bool | fUnitFF |
Definition at line 7 of file TPiFormFactor.h.
TPiFormFactor::TPiFormFactor | ( | ) |
Definition at line 6 of file TPiFormFactor.C.
References fPrm, M_PI, and SetFFParameters().
00006 :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 }
TPiFormFactor::~TPiFormFactor | ( | ) | [inline] |
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 }
double TPiFormFactor::f | ( | const double & | , | |
const double & | , | |||
const double & | ||||
) | [protected] |
Definition at line 205 of file TPiFormFactor.C.
References gConst, h(), TConstants::Pi(), and ppi().
Referenced by GS().
00207 { 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 }
std::complex< double > TPiFormFactor::ff | ( | const double & | ) | [protected, virtual] |
Implements TFormFactor.
Definition at line 158 of file TPiFormFactor.C.
References fAmp_omega, fAmp_phi, fBeta, fDelta, fG_omega, fG_phi, fG_rho, fG_rho_p, fG_rho_p2, fM_omega, fM_omega2, fM_phi, fM_phi2, fM_rho, fM_rho_p, fM_rho_p2, fPrm, GS(), and I.
00158 { 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 }
double TPiFormFactor::G_rho | ( | const double & | , | |
const double & | , | |||
const double & | ||||
) | [protected] |
bool TFormFactor::GetFFMode | ( | ) | [inline, inherited] |
Definition at line 19 of file TFormFactor.h.
References TFormFactor::fUnitFF.
00019 {return fUnitFF;}
std::complex< double > TPiFormFactor::GS | ( | const double & | , | |
const double & | , | |||
const double & | ||||
) | [protected] |
Definition at line 192 of file TPiFormFactor.C.
References f(), G_rho(), gConst, I, mp, TConstants::Mpi(), TConstants::Pi(), pi, and ppi().
Referenced by ff(), and SetFFParameters().
00194 { 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 }
double TPiFormFactor::h | ( | const double & | ) | [protected] |
Definition at line 222 of file TPiFormFactor.C.
References gConst, TConstants::Mpi(), TConstants::Pi(), and ppi().
Referenced by f().
00222 { 00223 return 2/gConst->Pi()*ppi(s)/sqrt(s)*log((sqrt(s)+2*ppi(s))/(2*gConst->Mpi())); 00224 }
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 TPiFormFactor::ppi | ( | const double & | ) | [protected] |
Definition at line 226 of file TPiFormFactor.C.
References gConst, and TConstants::Mpi2().
Referenced by f(), G_rho(), GS(), h(), and SetFFParameters().
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 }
void TFormFactor::SetDefaultFF | ( | ) | [inline, inherited] |
Definition at line 18 of file TFormFactor.h.
References TFormFactor::fUnitFF.
Referenced by TPiCrossPart::Init().
00018 {fUnitFF = false;}
void TPiFormFactor::SetFFParameters | ( | double * | par | ) |
Definition at line 121 of file TPiFormFactor.C.
References abs, TConstants::Alpha2(), exp(), fAmp_omega, fAmp_phi, fBeta, fBr_omega_pipi, fBr_phi_pipi, fDelta, fG_omega, fG_omega_ee, fG_phi, fG_phi_ee, fG_rho, fG_rho_p, fG_rho_p2, fM_omega, fM_omega2, fM_phi, fM_phi2, fM_rho, fM_rho_p, fM_rho_p2, fPhi_rho_omega, fPhi_rho_phi, fPrm, gConst, GS(), I, and ppi().
00121 { 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 }
void TPiFormFactor::SetFFParameters | ( | const double & | , | |
const double & | , | |||
const double & | , | |||
const double & | , | |||
const double & | , | |||
const double & | , | |||
const double & | , | |||
const double & | , | |||
const double & | , | |||
const double & | ||||
) |
Definition at line 91 of file TPiFormFactor.C.
References abs, TConstants::Alpha2(), exp(), fAmp_omega, fBeta, fBr_omega_pipi, fG_omega, fG_omega_ee, fG_rho, fG_rho_p, fM_omega, fM_omega2, fM_rho, fM_rho_p, fPhi_rho_omega, fPrm, gConst, GS(), I, TConstants::Pi(), and ppi().
Referenced by TPiFormFactor().
00095 { 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 }
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;}
std::complex<double> TPiFormFactor::fAmp_omega [protected] |
std::complex<double> TPiFormFactor::fAmp_phi [protected] |
std::complex<double> TPiFormFactor::fBeta [protected] |
double TPiFormFactor::fBr_omega_pipi [protected] |
double TPiFormFactor::fBr_phi_pipi [protected] |
std::complex<double> TPiFormFactor::fDelta [protected] |
double TPiFormFactor::fG_omega [protected] |
double TPiFormFactor::fG_omega_ee [protected] |
double TPiFormFactor::fG_phi [protected] |
double TPiFormFactor::fG_phi_ee [protected] |
double TPiFormFactor::fG_rho [protected] |
double TPiFormFactor::fG_rho_p [protected] |
double TPiFormFactor::fG_rho_p2 [protected] |
double TPiFormFactor::fM_omega [protected] |
double TPiFormFactor::fM_omega2 [protected] |
double TPiFormFactor::fM_phi [protected] |
double TPiFormFactor::fM_phi2 [protected] |
double TPiFormFactor::fM_rho [protected] |
double TPiFormFactor::fM_rho_p [protected] |
double TPiFormFactor::fM_rho_p2 [protected] |
unsigned int TFormFactor::fNp [protected, inherited] |
Definition at line 9 of file TFormFactor.h.
Referenced by TFormFactor::Init(), TFormFactor::SetNpoints(), and TFormFactor::TFormFactor().
double TPiFormFactor::fPhi_rho_omega [protected] |
double TPiFormFactor::fPhi_rho_phi [protected] |
int TPiFormFactor::fPrm [protected] |
Definition at line 9 of file TPiFormFactor.h.
Referenced by ff(), SetFFParameters(), and TPiFormFactor().
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().