TPiKFun Class Reference

#include <TPiKFun.h>

Inheritance diagram for TPiKFun:

TMuKFun List of all members.

Public Member Functions

 TPiKFun ()
double Eval_odd (const double &, const double &)
double Eval_odd_ultra (const double &)
double Eval_even (const double &, const double &)
double Eval_even_odd (const double &, const double &)
void Init (std::string, std::string)
double Eval_int_odd (const double &, const double &)
double Eval (const double &s, const double &c)
virtual double Eval_even_ultra (const double &)
virtual double Eval_Coloumb_Factor (const double &)

Static Public Member Functions

static double Eval_a ()

Protected Attributes

float * fm

Detailed Description

Definition at line 5 of file TPiKFun.h.


Constructor & Destructor Documentation

TPiKFun::TPiKFun (  )  [inline]

Definition at line 7 of file TPiKFun.h.

00007 :TMuKFun(){};


Member Function Documentation

double TMuKFun::Eval ( const double &  s,
const double &  c 
) [inline, inherited]

Definition at line 15 of file TMuKFun.h.

References TMuKFun::Eval_a(), and TMuKFun::Eval_even_odd().

Referenced by TPiCrossPart::GetValue(), and TMuCrossPart::GetValue().

00015                                                       {
00016     return Eval_even_odd(s,c) + Eval_a();
00017   }

static double TMuKFun::Eval_a (  )  [inline, static, inherited]

Definition at line 13 of file TMuKFun.h.

References gConst, and TConstants::Pi2().

Referenced by TMuKFun::Eval(), TPiCrossPart::GetValue(), and TMuCrossPart::GetValue().

00013 {return gConst->Pi2()/6. - 1./4.;}

double TMuKFun::Eval_Coloumb_Factor ( const double &   )  [virtual, inherited]

Definition at line 30 of file TMuKFun.C.

References TConstants::Alpha(), exp(), gConst, TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), gGlobal, and TConstants::Pi().

Referenced by TMuCrossPart::GetValue(), and TMuCrossPart::TMuCrossPart().

00030                                                   {
00031   // Coloumb final state interaction, the first term of
00032   // expansion of Sakharov-Sommerfeld factor is taken into
00033   // account in formulae above, so it should be subtracted from K_Even
00034 
00035   double beta  = sqrt(1 - gGlobal->Get_MF2()*gGlobal->Get_s()/s);
00036   // relative velocity between final particles (inversed)
00037   double iv = (1+beta*beta)/(2*beta);
00038   double z = 2*gConst->Pi()*gConst->Alpha()*iv;
00039   // Sakharov-Sommerfeld factor
00040   return z/(1. - exp(-z));
00041 }

double TPiKFun::Eval_even ( const double &  ,
const double &   
) [virtual]

Reimplemented from TMuKFun.

Definition at line 27 of file TPiKFun.C.

References EvtCyclic3::A, TLi2::Eval(), gConst, TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), gGlobal, and TConstants::Pi2().

00027                                                          {
00028   // b-function from errata of JHEP10(1997) 006
00029   double r      = gGlobal->Get_MF2()*0.25*gGlobal->Get_s()/s;
00030   double rho    =-log(r);
00031   double beta   = sqrt(1-4*r);
00032   double beta1p = 1 + beta;
00033   double beta1m = 1 - beta;
00034   double rbeta  = beta1m/beta1p;
00035   double ibeta  = 1/beta;
00036   double A      = rho + gConst->Pi2()/6 - log(rbeta)*log(0.5*ibeta*ibeta*beta1p) + 2*TLi2::Eval(rbeta);
00037   double k_even = -1 + 0.5*beta1m*ibeta*rho + (2 + beta*beta)*ibeta*log(0.5*beta1p) + 0.5*(1+beta*beta)*ibeta*A;
00038   return k_even;
00039 }

double TPiKFun::Eval_even_odd ( const double &  ,
const double &   
) [virtual]

Reimplemented from TMuKFun.

Definition at line 100 of file TPiKFun.C.

References EvtCyclic3::A, TLi2::Eval(), TMuKFun::Eval_int_odd(), gConst, TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), gGlobal, and TConstants::Pi2().

00100                                                              {
00101   // b-function from errata of JHEP10(1997) 006
00102   double r      = gGlobal->Get_MF2()*0.25*gGlobal->Get_s()/s;
00103   double rho    =-log(r);
00104   double beta2  = 1 - 4*r;
00105   double beta   = sqrt(beta2);
00106   double beta1p = 1 + beta;
00107   double beta1m = 1 - beta;
00108   double rbeta  = beta1m/beta1p;
00109   double ibeta  = 1/beta;
00110   double lgbeta = log(0.5*beta1p);
00111   double A      = rho + gConst->Pi2()/6.0 - log(rbeta)*log(0.5*ibeta*ibeta*beta1p) + 2*TLi2::Eval(rbeta);
00112   double k_even = -1 + 0.5*beta1m*ibeta*rho + (2 + beta*beta)*ibeta*lgbeta + 0.5*(1+beta*beta)*ibeta*A;
00113 
00114   double betas2 = beta2*(1-c*c);
00115   double i2betas2 = 1/(2*betas2);
00116 
00117   double d      =-0.25*ibeta*beta1m*beta1m*(rho*rho + gConst->Pi2()/3)
00118     + ibeta*(1 + beta2)*(-rho*lgbeta - TLi2::Eval(-rbeta) + 2*TLi2::Eval(0.5*beta1m));
00119 
00120   double betac  = beta*c;
00121   double betc1m = 1 - betac;
00122   double l_m    = log(0.5*betc1m);
00123   double l_m2   = 0.5*l_m*l_m;
00124   double t1     = (1-beta2)/(2*betc1m);
00125   double a      = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00126   double li2t1  = TLi2::Eval(1 - t1);
00127   double li2t2  = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00128 
00129   double res_plus = l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00130 
00131   //changing sign of theta cosine
00132   betac  = -betac;
00133   betc1m = 1 - betac;
00134   l_m    = log(0.5*betc1m);
00135   l_m2   = 0.5*l_m*l_m;
00136   t1     = (1-beta2)/(2*betc1m);
00137   a      = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00138   li2t1  = TLi2::Eval(1 - t1);
00139   li2t2  = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00140   double res_minus= l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00141 
00142   return k_even + res_plus - res_minus + Eval_int_odd(beta,c);
00143 }

double TMuKFun::Eval_even_ultra ( const double &   )  [virtual, inherited]

Definition at line 43 of file TMuKFun.C.

References gConst, TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), gGlobal, and TConstants::Pi2().

00043                                               {
00044   return 3./4.*log(s/(gGlobal->Get_MF2()*0.25*gGlobal->Get_s())) + gConst->Pi2()/6. - 1.;
00045 }

double TMuKFun::Eval_int_odd ( const double &  ,
const double &   
) [inherited]

Definition at line 214 of file TMuKFun.C.

References genRecEmupikp::i, ganga-rec::j, NX, and T.

Referenced by Eval_even_odd(), TMuKFun::Eval_even_odd(), Eval_odd(), and TMuKFun::Eval_odd().

00214                                                                {
00215   int i = int(floor((beta - 0.01)*50));
00216   int j = int(floor((c + 1)*50));
00217   double wy = 50*c - (j - 50);
00218   double res = 0;
00219   if(i >= 0 && i < NX-1){
00220     double wx = 50*beta - i - 0.5;
00221     res = 
00222       (T(i,j  )*(1-wx) + T(i+1,j  )*wx)*(1-wy) + 
00223       (T(i,j+1)*(1-wx) + T(i+1,j+1)*wx)*wy;
00224   } else if (i == -1){
00225     double wx = 100*beta;
00226      res = 
00227       (T(0,j  )*(1-wy) + T(0,  j+1)*wy)*wx;
00228   } else if (i == NX - 1){
00229     double wx = 1 - 100*(beta-0.99);
00230     res = 
00231       (T(NX-1,j)*(1-wy)+ T(NX-1,j+1)*wy)*wx;
00232   }
00233   return -res;
00234 }

double TPiKFun::Eval_odd ( const double &  ,
const double &   
) [virtual]

Reimplemented from TMuKFun.

Definition at line 41 of file TPiKFun.C.

References TLi2::Eval(), TMuKFun::Eval_int_odd(), gConst, TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), gGlobal, and TConstants::Pi2().

00041                                                         {
00042   double r      = gGlobal->Get_MF2()*0.25*gGlobal->Get_s()/s;
00043   double rho    =-log(r);
00044   double beta2  = 1 - 4*r;
00045   double betas2 = beta2*(1-c*c);
00046   double i2betas2 = 1/(2*betas2);
00047   double beta   = sqrt(beta2);
00048   double ibeta  = 1/beta;
00049 
00050   double d      =-0.25*ibeta*(1-beta)*(1-beta)*(rho*rho + gConst->Pi2()/3)
00051     + ibeta*(1 + beta2)*(-rho*log(0.5*(1 + beta)) - 
00052                          TLi2::Eval(-(1-beta)/(1+beta)) + 2*TLi2::Eval(0.5*(1-beta)));
00053 
00054   double betac  = beta*c;
00055   double betc1m = 1 - betac;
00056   double l_m    = log(0.5*betc1m);
00057   double l_m2   = 0.5*l_m*l_m;
00058   double t1     = (1-beta2)/(2*betc1m);
00059   double a      = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00060   double li2t1  = TLi2::Eval(1 - t1);
00061   double li2t2  = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00062 
00063   double res_plus = l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00064 
00065   //changing sign of theta cosine
00066   betac  = -betac;
00067   betc1m = 1 - betac;
00068   l_m    = log(0.5*betc1m);
00069   l_m2   = 0.5*l_m*l_m;
00070   t1     = (1-beta2)/(2*betc1m);
00071   a      = l_m2 - log(1 - t1)*(rho + l_m ) + TLi2::Eval(t1);
00072   li2t1  = TLi2::Eval(1 - t1);
00073   li2t2  = TLi2::Eval(betas2/(1 + beta2 - 2*betac));
00074   double res_minus= l_m2 - li2t1 + li2t2 + i2betas2*(a*(1 - beta2) + betc1m*(-2*a + d));
00075 
00076   return res_plus - res_minus + Eval_int_odd(beta,c);
00077 }

double TPiKFun::Eval_odd_ultra ( const double &   )  [virtual]

Reimplemented from TMuKFun.

Definition at line 79 of file TPiKFun.C.

References TLi2::Eval().

00079                                              {
00080   // Ultra-relativistic limit of odd part of K-function 
00081   double st_h2 = 0.5*(1-c);
00082   double st_h  = sqrt(st_h2);
00083   double ct_h2 = 0.5*(1+c);
00084   double ct_h  = sqrt(ct_h2);
00085   double lst_h = log(st_h);
00086   double lct_h = log(ct_h);
00087   /*
00088   std::cout<<c<<" "
00089            <<st_h2<<" "
00090            <<ct_h2<<" "
00091            <<st_h<<" "
00092            <<ct_h<<" "
00093            <<lst_h<<" "
00094            <<lct_h<<" "
00095            <<std::endl;
00096   */
00097   return (2-1/ct_h2)*lst_h*lst_h - (2-1/st_h2)*lct_h*lct_h - TLi2::Eval(st_h2) + TLi2::Eval(ct_h2);
00098 }

void TMuKFun::Init ( std::string  ,
std::string   
) [inherited]

Definition at line 166 of file TMuKFun.C.

References false, TMuKFun::fm, fname, genRecEmupikp::i, ganga-rec::j, NX, NY, deljobs::string, and T.

Referenced by TMuCrossPart::TMuCrossPart().

00166                                                 {
00167   if(!fm){
00168     fm = new float[NX*NY];
00169 /*
00170     char *intd = getenv("INTEG_DIR");
00171     char *intf = getenv("INTEG_FNAME");
00172     std::string fname;
00173     if(intf == NULL){
00174       if(intd == NULL){
00175         fname = "integ.dat";
00176       }else{
00177         std::ostringstream temp;
00178         temp<<intd<<"/"<<"integ.dat";
00179         fname = temp.str();
00180       }
00181     } else {
00182       fname = intf;
00183     }
00184 */
00185     std::string fname;
00186     if(! intf.empty()) fname = intf;
00187     else fname = "integ.dat";
00188 
00189     if(! intd.empty()) fname = intd + "/" + fname;
00190     
00191     std::ifstream IN(fname.c_str());
00192     if(IN.is_open() == false ){
00193       std::cout<<"Can't read \""<<fname<<"\". "
00194                <<"Angular distribution will be partially incorrect!"
00195                <<std::endl;
00196       std::cout<<"Probably you should tune INTEG_DIR or INTEG_FNAME variables."<<std::endl;
00197       for(int i=0;i<NX;i++){
00198         for(int j=0;j<NY;j++)
00199           T(i,j) = 0;
00200       }
00201       return;
00202     }
00203     float t1,t2;
00204     for(int i=0;i<NX;i++){
00205       for(int j=0;j<NY-1;j++)
00206         IN>>t1>>t2>>T(i,j);
00207       T(i,0) = 0;
00208       T(i,NY-1) = 0;
00209     }
00210     IN.close();
00211   }
00212 }


Member Data Documentation

float* TMuKFun::fm [protected, inherited]

Definition at line 8 of file TMuKFun.h.

Referenced by TMuKFun::Init(), TMuKFun::TMuKFun(), and TMuKFun::~TMuKFun().


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