TPiFormFactor Class Reference

#include <TPiFormFactor.h>

Inheritance diagram for TPiFormFactor:

TFormFactor List of all members.

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

Detailed Description

Definition at line 7 of file TPiFormFactor.h.


Constructor & Destructor Documentation

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]

Definition at line 45 of file TPiFormFactor.h.

00045 {};


Member Function Documentation

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]

Definition at line 214 of file TPiFormFactor.C.

References ppi().

Referenced by GS().

00216                                           {
00217   double M2 = M*M;
00218   double G_rho = G*pow(ppi(s)/ppi(M2),3)*sqrt(M2/s);
00219   return G_rho;
00220 }

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

00226                                         {
00227   return 0.5*sqrt(s-4*gConst->Mpi2());
00228 }

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]

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;}


Member Data Documentation

std::complex<double> TPiFormFactor::fAmp_omega [protected]

Definition at line 34 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

std::complex<double> TPiFormFactor::fAmp_phi [protected]

Definition at line 35 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

std::complex<double> TPiFormFactor::fBeta [protected]

Definition at line 31 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fBr_omega_pipi [protected]

Definition at line 21 of file TPiFormFactor.h.

Referenced by SetFFParameters().

double TPiFormFactor::fBr_phi_pipi [protected]

Definition at line 28 of file TPiFormFactor.h.

Referenced by SetFFParameters().

std::complex<double> TPiFormFactor::fDelta [protected]

Definition at line 32 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fG_omega [protected]

Definition at line 19 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fG_omega_ee [protected]

Definition at line 20 of file TPiFormFactor.h.

Referenced by SetFFParameters().

double TPiFormFactor::fG_phi [protected]

Definition at line 26 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fG_phi_ee [protected]

Definition at line 27 of file TPiFormFactor.h.

Referenced by SetFFParameters().

double TPiFormFactor::fG_rho [protected]

Definition at line 11 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fG_rho_p [protected]

Definition at line 13 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fG_rho_p2 [protected]

Definition at line 15 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_omega [protected]

Definition at line 17 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_omega2 [protected]

Definition at line 18 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_phi [protected]

Definition at line 24 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_phi2 [protected]

Definition at line 25 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_rho [protected]

Definition at line 10 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_rho_p [protected]

Definition at line 12 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

double TPiFormFactor::fM_rho_p2 [protected]

Definition at line 14 of file TPiFormFactor.h.

Referenced by ff(), and SetFFParameters().

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]

Definition at line 22 of file TPiFormFactor.h.

Referenced by SetFFParameters().

double TPiFormFactor::fPhi_rho_phi [protected]

Definition at line 29 of file TPiFormFactor.h.

Referenced by SetFFParameters().

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


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