TMuCrossPart Class Reference

#include <TMuCrossPart.h>

Inheritance diagram for TMuCrossPart:

TVCrossPart List of all members.

Public Member Functions

 TMuCrossPart ()
 ~TMuCrossPart ()
double BornShift (const double &, const double &, const double &)
double GetValue (const unsigned int)
void Init ()
void SetThetaMin (const double &)
void PrintEvent ()
void GetEvent (double &p0, double &t0, double &ph0, double &p1, double &t1, double &ph)
void GetEvent (double *m, int &n)
TEventGetEvent ()
unsigned int GetNPart ()
virtual void SetHardPhoton (const bool &x)
void SetZeroVP ()
void SetDefaultVP ()
void SetNoFSR ()
double BornCrossSection (const double &)

Protected Member Functions

double MakeCosTheta ()
double GetCNorm ()
double R_e_Gamma ()
double R_e_Gamma_t ()
double R_f_Gamma ()
double R_e_mu_Gamma_t ()

Protected Attributes

TMuKFunfK
TPhotonDfPhD1
TPhotonDfPhD2
TPhotonIfPhI1
TPhotonIfPhI2
TPhotonFSfPhFS
TVacuumPolfVPol
double fCosMin
double fSinTheta2
double fMax
double fNorm
double fCompMuSV
double fBetaMu
double fBetaMu2
unsigned int fNPart
TEventfEvent
TDFunfD
bool fHardPhoton
bool fZeroVP
bool fNoFSR

Detailed Description

Definition at line 8 of file TMuCrossPart.h.


Constructor & Destructor Documentation

TMuCrossPart::TMuCrossPart (  ) 

Definition at line 5 of file TMuCrossPart.C.

References TMuKFun::Eval_Coloumb_Factor(), fBetaMu, fCompMuSV, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, TVCrossPart::fNoFSR, TVCrossPart::fNPart, fPhD1, fPhD2, fPhFS, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, TRadGlobal::Get_BetaF(), TRadGlobal::Get_s(), TRadGlobal::GetDatadir(), TRadGlobal::GetIntFname(), TRadGlobal::GetVpolFname(), gGlobal, TVacuumPol::Init(), and TMuKFun::Init().

00005                           :TVCrossPart(){
00006   fNPart = 5;
00007 
00008   fK     = new TMuKFun();
00009   fK->Init(gGlobal->GetDatadir(), gGlobal->GetIntFname());
00010   fD     = new TDFun();
00011   fEvent = new TEvent();
00012   std::cout<<"Coloumb factor is "<<fK->Eval_Coloumb_Factor(gGlobal->Get_s())<<std::endl;
00013 
00014   // soft photons 
00015   fPhD1  = new TPhotonD();
00016   fPhD2  = new TPhotonD();
00017 
00018   // initial hard photons
00019   fPhI1  = new TPhotonI();
00020   fPhI2  = new TPhotonI();
00021   
00022   // final hard photons with spherical angle distribution
00023   fPhFS  = new TPhotonFS();
00024 
00025   // vacuum polarization
00026   fVPol  = new TVacuumPol();
00027   fVPol->Init(gGlobal->GetDatadir(), gGlobal->GetVpolFname());
00028 
00029   fBetaMu = gGlobal->Get_BetaF();
00030   fCompMuSV = (1+fBetaMu*fBetaMu)/(2*fBetaMu)*log((1+fBetaMu)/(1-fBetaMu))-1;
00031 
00032   //  cout<<DB(fBetaMu)<<DB(fCompMuSV)<<endl;
00033 
00034   fHardPhoton = true;
00035   fZeroVP     = false;
00036   fNoFSR      = false;
00037 }

TMuCrossPart::~TMuCrossPart (  ) 

Definition at line 82 of file TMuCrossPart.C.

References TVCrossPart::fD, TVCrossPart::fEvent, fK, fPhD1, fPhD2, fPhFS, fPhI1, fPhI2, and fVPol.

00082                            {
00083   delete fK;
00084   delete fD;
00085   delete fEvent;
00086 
00087   delete fPhD1;
00088   delete fPhD2;
00089 
00090   delete fPhI1;
00091   delete fPhI2;
00092 
00093   delete fPhFS;
00094   
00095   delete fVPol;
00096 }


Member Function Documentation

double TVCrossPart::BornCrossSection ( const double &   )  [inherited]

Definition at line 4 of file TVCrossPart.C.

References TVCrossPart::BornShift(), cos(), TVCrossPart::fEvent, TVCrossPart::fZeroVP, genRecEmupikp::i, TVCrossPart::Init(), M_PI, TEvent::MakeEvent(), and x.

Referenced by main().

00004                                                        {
00005   //save vacuum polarization status 
00006   bool tempVP = fZeroVP;
00007   // set zero vacuum polarization to calculate Born cross-section
00008   fZeroVP = true;
00009   Init();
00010 
00011   // integration in symmetric angle
00012   int NInt = 1<<14;
00013   double x, gsum = 0., h=-(cos(M_PI-theta)-cos(theta))/NInt;
00014   // simpson integration
00015   x = cos(M_PI-theta); fEvent->MakeEvent(x); gsum += BornShift(1,1,x);
00016   for(int i=1; i<NInt; i++){
00017     x += h; fEvent->MakeEvent(x); gsum += 2*(1+i%2)*BornShift(1,1,x);
00018   }
00019   x += h; fEvent->MakeEvent(x); gsum += BornShift(1,1,x);
00020 
00021   //restore vacuum polarization status
00022   fZeroVP = tempVP;
00023   Init();
00024 
00025   return gsum*h/3;
00026 }

double TMuCrossPart::BornShift ( const double &  ,
const double &  ,
const double &   
) [virtual]

Implements TVCrossPart.

Definition at line 98 of file TMuCrossPart.C.

References abs, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_s(), TEvent::GetPPar(), and gGlobal.

Referenced by GetValue().

00098                                                                                  {
00099   double Y1, y1, c1;
00100   fEvent->GetPPar(0,Y1,y1,c1);
00101   double sw = gGlobal->Get_s()*z1*z2;
00102   std::complex<double> vpsw  = fVPol->Evals(sw);
00103   double yc = y1*c;
00104   double ym = z1*(Y1-yc);
00105   double yp = z2*(Y1+yc);
00106   double cs = std::abs(vpsw*std::conj(vpsw));
00107   cs*= y1*(ym*ym + yp*yp + 2*z1*z2*(Y1*Y1 - y1*y1))/(z1*z1*z1*z2*z2*z2*(z1 + z2 - (z1 - z2)*c*Y1/y1));
00108   //  if(cs<0)
00109   //#define DB(x) #x<<"="<<x<<", "
00110   //  std::cout<<DB(Y1)<<DB(y1)<<DB(c1)<<DB(z1)<<DB(z2)<<DB(c)<<std::endl;
00111   return cs*0.25;
00112 }

double TMuCrossPart::GetCNorm (  )  [protected]

Definition at line 58 of file TMuCrossPart.C.

References fBetaMu2, fNorm, and fSinTheta2.

Referenced by GetValue().

00058                              {
00059   return fNorm/(2 - fBetaMu2*fSinTheta2);
00060 }

TEvent* TVCrossPart::GetEvent (  )  [inline, inherited]

Definition at line 28 of file TVCrossPart.h.

References TVCrossPart::fEvent.

00028 {return fEvent;}

void TVCrossPart::GetEvent ( double *  m,
int &  n 
) [inline, inherited]

Definition at line 25 of file TVCrossPart.h.

References TVCrossPart::fEvent, and TEvent::GetEvent().

00025                                          {
00026     fEvent->GetEvent(m,n);
00027   }

void TVCrossPart::GetEvent ( double &  p0,
double &  t0,
double &  ph0,
double &  p1,
double &  t1,
double &  ph 
) [inline, inherited]

Definition at line 21 of file TVCrossPart.h.

References TVCrossPart::fEvent, and TEvent::GetEvent().

Referenced by TRadCor::GetEvent(), hist_sample(), main(), TRadCor::MakeEvent(), TRadCor::MakeIntegral(), and TRadCor::MakeMaximum().

00022                                                           {
00023     fEvent->GetEvent(p0, t0, ph0, p1, t1, ph);
00024   }

unsigned int TVCrossPart::GetNPart (  )  [inline, inherited]

Definition at line 29 of file TVCrossPart.h.

References TVCrossPart::fNPart.

Referenced by main(), and TRadCor::TRadCor().

00029 {return fNPart;}

double TMuCrossPart::GetValue ( const unsigned  int  )  [virtual]

Reimplemented from TVCrossPart.

Definition at line 117 of file TMuCrossPart.C.

References TConstants::Alpha(), TConstants::AlphaPi(), BornShift(), COMP_I, TMuKFun::Eval(), TDFun::Eval(), TMuKFun::Eval_a(), TMuKFun::Eval_Coloumb_Factor(), TDFun::EvalSoft(), fBetaMu, fCompMuSV, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, TVCrossPart::fNoFSR, fPhD1, fPhD2, fPhI1, fPhI2, gConst, TRadGlobal::Get_LnDelta(), TRadGlobal::Get_s(), GetCNorm(), TPhotonI::GetEnergy(), TPhotonD::GetEnergy(), TPhotonD::GetENorm(), TPhotonI::GetENorm(), TPhoton::GetPhiNorm(), TPhoton::GetThNorm(), gGlobal, MakeCosTheta(), TEvent::MakeEvent(), TConstants::Pi2(), and R_e_Gamma().

00117                                                      {
00118   bool IsSoftIE, IsSoftIP;
00119   IsSoftIE = IsSoftIP = true;
00120 
00121   bool CompSV, CompIE, CompIP;
00122   CompSV = CompIE = CompIP = false;
00123   double AP = gConst->AlphaPi();
00124 
00125   double c  = MakeCosTheta();
00126 
00127   switch(ipart){
00128   case 0:
00129     IsSoftIE = IsSoftIP = true;
00130     CompSV   = true;
00131     break;
00132   case 1:
00133     IsSoftIP = false;
00134     CompIP   = true;
00135     break;
00136   case 2:
00137     IsSoftIE = false;
00138     CompIE   = true;
00139     break;
00140   case 3:
00141     IsSoftIE = IsSoftIP = false;
00142     break;
00143   case 4:
00144     // one photon out of the narrow cones with singularity around initial particles
00145     if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,2)){
00146       double t1 = gConst->Alpha()/(2*gConst->Pi2())*R_e_Gamma();
00147       double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm();
00148       return t1*norm;
00149     }
00150     return 0;
00151     break;
00152   default:
00153     return 0;
00154     break;
00155   }
00156 
00157   if(!fHardPhoton) CompSV = CompIE = CompIP  = false;
00158 
00159   double  x1g, x2g;
00160   x1g = x2g = 0;
00161 
00162   double  z1, z2;
00163   z1 = z2 = 1;
00164 
00165   if(IsSoftIE)
00166     x1g = fPhD1->GetEnergy(); 
00167   else
00168     x1g = fPhI1->GetEnergy();
00169   z1 = 1 - x1g;
00170   
00171   if(IsSoftIP)
00172     x2g = fPhD2->GetEnergy(); 
00173   else
00174     x2g = fPhI2->GetEnergy();
00175   z2 = 1 - x2g;
00176   
00177   if(fEvent->MakeEvent(c, x1g, x2g)){
00178     
00179     double D1, D2, t2 = 0;
00180 
00181     if(IsSoftIE)
00182       D1 = fD->EvalSoft(x1g)*fPhD1->GetENorm();
00183     else{
00184       double norm = fPhI1->GetENorm();
00185       D1 = fD->Eval(z1)*norm;
00186       if(CompIE) t2 = COMP_I(x1g)*norm;
00187     }
00188     
00189     if(IsSoftIP)
00190       D2 = fD->EvalSoft(x2g)*fPhD2->GetENorm();
00191     else{
00192       double norm = fPhI2->GetENorm();
00193       D2 = fD->Eval(z2)*norm;
00194       if(CompIP) t2 = COMP_I(x2g)*norm;
00195     }
00196     
00197     if(CompSV && !fNoFSR ){
00198       t2 = 2*AP*gGlobal->Get_LnDelta()*(fCompMuSV + 2*log((1-fBetaMu*c)/(1+fBetaMu*c)));
00199     }
00200 
00201     double kfactor, coloumbfactor;
00202     if(fNoFSR){
00203       kfactor = 2*AP*fK->Eval_a();
00204       coloumbfactor = 1;
00205     }else{
00206       kfactor = 2*AP*fK->Eval(z1*z2*gGlobal->Get_s(),c);
00207       coloumbfactor = fK->Eval_Coloumb_Factor(z1*z2*gGlobal->Get_s());
00208     }
00209     double t1 = coloumbfactor*(1 + kfactor)*D1*D2;
00210 
00211     return BornShift(z1,z2,c)*(t1+t2)*GetCNorm();
00212     
00213   }
00214   return 0;
00215 }

void TMuCrossPart::Init (  )  [virtual]

Reimplemented from TVCrossPart.

Definition at line 62 of file TMuCrossPart.C.

References TVCrossPart::fD, TVCrossPart::fEvent, fPhD1, fPhD2, fPhFS, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, TRadGlobal::Get_ThetaMin(), gGlobal, TPhotonF::Init(), TPhotonI::Init(), TPhotonD::Init(), TEvent::Init(), TDFun::Init(), TVacuumPol::SetDefaultVP(), SetThetaMin(), and TVacuumPol::SetZeroVP().

00062                        {
00063   SetThetaMin(gGlobal->Get_ThetaMin());
00064 
00065   fD->Init();
00066   fEvent->Init();
00067 
00068   fPhD1->Init();
00069   fPhD2->Init();
00070 
00071   fPhI1->Init();
00072   fPhI2->Init();
00073 
00074   fPhFS->Init();
00075 
00076   if(fZeroVP) 
00077     fVPol->SetZeroVP();
00078   else 
00079     fVPol->SetDefaultVP();
00080 }

double TMuCrossPart::MakeCosTheta (  )  [protected]

Definition at line 47 of file TMuCrossPart.C.

References fBetaMu2, fCosMin, and fSinTheta2.

Referenced by GetValue().

00047                                  {
00048   // generate distribution (2 - beta^2 sin^2(theta))dcos(theta)
00049   double c,s2;
00050   do{
00051     c = (2*gRandom->Rndm()-1)*fCosMin;
00052     s2 = 1 - c*c;
00053   }while(2 - fBetaMu2*s2 < fMax*gRandom->Rndm());
00054   fSinTheta2 = s2;
00055   return c;
00056 }

void TVCrossPart::PrintEvent (  )  [inline, inherited]

Definition at line 20 of file TVCrossPart.h.

References TVCrossPart::fEvent, and TEvent::Print().

00020 {fEvent->Print();}

double TMuCrossPart::R_e_Gamma (  )  [protected]

Definition at line 217 of file TMuCrossPart.C.

References abs, EvtCyclic3::B, EvtCyclic3::C, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, TVCrossPart::fNoFSR, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, is, rb::me2, s, and t().

Referenced by GetValue().

00217                               {
00218   // Equation 2.12
00219 
00220   double em,pm,cm, ep,pp,cp, eg,pg,cg;
00221   fEvent->GetPPar(0,em,pm,cm);
00222   fEvent->GetPPar(1,ep,pp,cp);
00223   fEvent->GetPPar(2,eg,pg,cg);
00224 
00225   double s, s1,  t, t1,  u, u1;
00226   s  = 4;
00227   s1 = 4*(1-eg);
00228 
00229   double BetaI = gGlobal->Get_BetaI();
00230   t  = -2*(em-BetaI*pm*cm);
00231   t1 = -2*(ep+BetaI*pp*cp);
00232 
00233   u  = -2*(ep-BetaI*pp*cp);
00234   u1 = -2*(em+BetaI*pm*cm);
00235       
00236   double chi_m  = eg*(1-BetaI*cg);
00237   double chi_p  = eg*(1+BetaI*cg);
00238   double ichi_m = 1/chi_m;
00239   double ichi_p = 1/chi_p;
00240 
00241   double chi_m_p=0, chi_p_p=0, ichi_m_p=0, ichi_p_p=0;
00242   if(!fNoFSR){
00243     chi_m_p = 2*(1-ep);
00244     chi_p_p = 2*(1-em);
00245     ichi_m_p = 1/chi_m_p;
00246     ichi_p_p = 1/chi_p_p;
00247   }
00248 
00249   double is  = 1/s;
00250   double is1 = 1/s1;
00251 
00252   double mmu2 = gGlobal->Get_MF2();
00253   double me2  = gGlobal->Get_MI2();
00254 
00255   double B = (u*u + u1*u1 + t*t + t1*t1)*(0.25*is*is1);
00256   double D_s1_s1 = ((t+u)*(t+u)+(t1+u1)*(t1+u1))*(0.5*ichi_m*ichi_p);
00257   double R_e = s*B*(ichi_m*ichi_p) 
00258     - me2*(0.5*ichi_m*ichi_m*is1*is1)*(t1*t1 + u1*u1 + 2*mmu2*s1) 
00259     - me2*(0.5*ichi_p*ichi_p*is1*is1)*(t*t   + u*u   + 2*mmu2*s1)
00260     + mmu2*(is1*is1)*D_s1_s1;
00261 
00262   double R_mu   = 0;
00263   double R_e_mu = 0;
00264   if(!fNoFSR){
00265     double D_s_s  = -(u*u + t1*t1 + 2*s*mmu2)*(0.5*ichi_m_p*ichi_m_p)
00266       -(u1*u1 + t*t + 2*s*mmu2)*(0.5*ichi_p_p*ichi_p_p)
00267       +(s*s1 - s*s + t*u + t1*u1 - 2*s*mmu2)*(ichi_m_p*ichi_p_p);
00268     R_mu   = s1*B*(ichi_m_p*ichi_p_p)+mmu2*(is*is)*D_s_s;
00269     
00270     double C      = 
00271       u*(ichi_m*ichi_p_p) + u1*(ichi_p*ichi_m_p) -
00272       t*(ichi_m*ichi_m_p) - t1*(ichi_p*ichi_p_p);
00273     double D_s_s1 = 0.5*(s+s1)*C + 2*(u-t1)*ichi_m_p + 2*(u1-t)*ichi_p_p;
00274     R_e_mu = B*C + mmu2*(is*is1)*D_s_s1;
00275   }
00276 
00277   double CosPsi = fEvent->GetCosPsi();
00278   double gamma = eg*pm/(2-eg*(1-em*CosPsi/pm));
00279 
00280   std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*(1-eg));
00281   double vp_s1_s1 = std::abs(vp_s1*vp_s1);
00282   
00283   double vp_s_s   = 0;
00284   double vp_s1_cs = 0;
00285   if(!fNoFSR){
00286     std::complex<double> vp_s  = fVPol->Evals(gGlobal->Get_s());
00287     vp_s_s  = std::abs(vp_s*vp_s);
00288     vp_s1_cs= std::real(vp_s1*std::conj(vp_s));
00289   }
00290 
00291   return (vp_s1_s1*R_e + vp_s1_cs*R_e_mu + vp_s_s*R_mu)*gamma;
00292 }

double TMuCrossPart::R_e_Gamma_t (  )  [protected]

Definition at line 341 of file TMuCrossPart.C.

References abs, TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), and gGlobal.

00341                                 {
00342   double em,pm,cm, ep,pp,cp, eg,pg,cg;
00343 
00344   fEvent->GetPPar(0,em,pm,cm);
00345   fEvent->GetPPar(1,ep,pp,cp);
00346   fEvent->GetPPar(2,eg,pg,cg);
00347   
00348   double betam = pm/em;
00349   double betap = pp/ep;
00350 
00351   double mmu2 = gGlobal->Get_MF2();
00352   double egamma2 = 1/gGlobal->Get_MI2();
00353 
00354   double Ae = mmu2*(1-eg+eg*eg/4*(1+cg*cg))+ep*em*(1-(1-eg)*betap*cp*betam*cm)
00355     +(1-eg)*eg*cg*eg*cg/2+(1-eg/2)*((2-eg)*(1-eg)-2*ep*em);
00356 
00357   double Be =-1/(1+egamma2*(1-cg*cg))*((1-eg)*(mmu2*ep*em*(1-betap*cp*betam*cm)-2)+
00358                                        ep*ep*(1+cg*betap*cp)+
00359                                        em*em*(1+cg*betam*cm));
00360 
00361   double CosPsi = fEvent->GetCosPsi();
00362   double gamma = eg*pm/(2-eg*(1-em*CosPsi/pm));
00363 
00364   double BetaI = gGlobal->Get_BetaI();
00365   double RG_i = (Ae+Be)*gamma/((eg*eg*(1-eg)*(1-eg))*(1-BetaI*BetaI*cg*cg));
00366   
00367   std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*(1-eg));
00368   double vp_s1_s1 = std::abs(vp_s1*vp_s1);
00369   
00370   return vp_s1_s1*RG_i;
00371 }

double TMuCrossPart::R_e_mu_Gamma_t (  )  [protected]

Definition at line 373 of file TMuCrossPart.C.

References abs, EvtCyclic3::C, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TEvent::Get4Vector(), TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), gGlobal, rb::me2, P(), s, and t().

00373                                    {
00374   TLorentzVector pm(0,0,gGlobal->Get_BetaI(),1.);
00375   TLorentzVector pp(0,0,-gGlobal->Get_BetaI(),1.);
00376   TLorentzVector qm = fEvent->Get4Vector(0);
00377   TLorentzVector qp = fEvent->Get4Vector(1);
00378   TLorentzVector k  = fEvent->Get4Vector(2);
00379 
00380   double s  = (pp + pm)*(pp + pm);
00381   double s1 = (qp + qm)*(qp + qm);
00382 
00383   double t  = -2*pm*qm;
00384   double t1 = -2*pp*qp;
00385   double u  = -2*pm*qp;
00386   double u1 = -2*pp*qm;
00387 
00388   double chi_p   = pp*k;
00389   double chi_m   = pm*k;
00390   double chi_p_p = qp*k;
00391   double chi_m_p = qm*k;
00392   
00393   double ichi_m   = 1/chi_m;
00394   double ichi_p   = 1/chi_p;
00395   double ichi_m_p = 1/chi_m_p;
00396   double ichi_p_p = 1/chi_p_p;
00397 
00398   TLorentzVector Q = qm*ichi_m_p - qp*ichi_p_p;
00399   TLorentzVector P = pp*ichi_p   - pm*ichi_m;
00400 
00401   double mmu2 = gGlobal->Get_MF2();
00402   double me2  = gGlobal->Get_MI2();
00403 
00404   double cA  = 2*mmu2*s     + u*u1       + t*t1;
00405   double cPp = 2*mmu2*chi_p - u1*chi_p_p - t1*chi_m_p;
00406   double cPm = 2*mmu2*chi_m - u *chi_m_p - t *chi_p_p;
00407 
00408   // Equation 2.9
00409   double A_e = 
00410     0.5*s*ichi_p*ichi_m*cA + ichi_m*cPp + ichi_p*cPm -
00411     0.5*(u1*ichi_p - t*ichi_m)*(u-t1) -
00412     0.5*(t1*ichi_p - u*ichi_m)*(t-u1) -
00413     0.5*s*ichi_p*(2*mmu2 + ichi_m*cPp) -
00414     0.5*s*ichi_m*(2*mmu2 + ichi_p*cPm);
00415 
00416   double B_e = -me2*(0.5*(ichi_p*ichi_p + ichi_m*ichi_m)*cA -
00417                      ichi_p*ichi_p*cPm - ichi_m*ichi_m*cPp);
00418 
00419   double R_e = A_e + B_e; R_e *= s/(s1*s1);
00420 
00421   // Equation 2.10
00422   double A_mu = 
00423     ((cA - (u1 + t1)*chi_m - (u + t)*chi_p)*qm*qp - 
00424      4*mmu2*chi_p*chi_m)*(ichi_p_p*ichi_m_p) - 
00425     (t1*chi_m + u*chi_p)*ichi_m_p - 
00426     (u1*chi_m + t*chi_p)*ichi_p_p +
00427     0.5*(t1*ichi_p_p - u1*ichi_m_p)*(t-u) + 
00428     0.5*(u*ichi_p_p - t*ichi_m_p)*(u1-t1);
00429 
00430   double B_mu = 
00431     -0.5*cA*mmu2*(ichi_p_p*ichi_p_p + ichi_m_p*ichi_m_p) +
00432     mmu2*((t1*chi_m + u*chi_p)*(ichi_m_p*ichi_m_p) + 
00433           (u1*chi_m + t*chi_p)*(ichi_p_p*ichi_p_p));
00434   /*
00435   // Equation 2.13
00436   double C_mu = me2*( 2*mmu2*s1*ichi_p_p*ichi_m_p 
00437                       + (t + u1)*ichi_m_p + (t1 + u)*ichi_p_p 
00438                       + 4*mmu2*(ichi_m_p + ichi_p_p));
00439   */
00440   double C_mu = 0;
00441   double R_mu = A_mu + B_mu + C_mu; R_mu /= s;
00442 
00443   double C = u*(ichi_m*ichi_p_p) + u1*(ichi_p*ichi_m_p) - 
00444     t*(ichi_m*ichi_m_p) - t1*(ichi_p*ichi_p_p);
00445 
00446   // Equation 2.11
00447   double R_e_mu = 0.5*cA*C - 
00448     2*( -t - t1 + u + u1 - 
00449         0.5*u1*(pm*ichi_m - qp*ichi_p_p )*(Q*chi_p_p + P*chi_m) - 
00450         0.5*t1*(pm*ichi_m - qm*ichi_m_p )*(Q*chi_m_p - P*chi_m) - 
00451         mmu2*(chi_p + chi_m )*(Q*P) + 
00452         mmu2*(ichi_p_p - ichi_m_p )*(chi_m - chi_p) - 
00453         0.5*t*(qp*ichi_p_p - pp*ichi_p )*(Q*chi_p_p - P*chi_p) -
00454         0.5*u*(qm*ichi_m_p - pp*ichi_p )*(Q*chi_m_p + P*chi_p) );
00455   R_e_mu /= s1;
00456 
00457   double CosPsi = fEvent->GetCosPsi();
00458   double gamma = k.E()*qm.P()/(2-k.E()*(1-qm.E()*CosPsi/qm.P()));
00459 
00460   std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*s1*0.25);
00461   std::complex<double> vp_s  = fVPol->Evals(gGlobal->Get_s());
00462   double vp_s1_s1 = std::abs(vp_s1*vp_s1);
00463   double vp_s_s   = std::abs(vp_s*vp_s);
00464   double vp_s1_cs = std::real(vp_s1*std::conj(vp_s));
00465 
00466   //  cout<<DB(gamma*R_e_mu*0.25)<<endl;
00467   //  return gamma*R_e_mu*vp_s1_cs*0.25;
00468 
00469   return gamma*(R_e*vp_s1_s1 + R_mu*vp_s_s + R_e_mu*vp_s1_cs)*0.25;
00470 }

double TMuCrossPart::R_f_Gamma (  )  [protected]

Definition at line 294 of file TMuCrossPart.C.

References abs, EvtCyclic3::B, EvtCyclic3::C, conj(), TVacuumPol::Evals(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MF2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, s, and t().

00294                               {
00295   double em,pm,cm, ep,pp,cp, eg,pg,cg;
00296   fEvent->GetPPar(0,em,pm,cm);
00297   fEvent->GetPPar(1,ep,pp,cp);
00298   fEvent->GetPPar(2,eg,pg,cg);
00299 
00300   double s, s1,  t, t1,  u, u1;
00301   s  = 4;
00302   s1 = 4*(1-eg);
00303 
00304   double BetaI = gGlobal->Get_BetaI();
00305   t  = -2*(em-BetaI*pm*cm);
00306   t1 = -2*(ep+BetaI*pp*cp);
00307 
00308   u  = -2*(ep-BetaI*pp*cp);
00309   u1 = -2*(em+BetaI*pm*cm);
00310 
00311   double chi_m, chi_p, chi_m_p, chi_p_p;
00312   chi_m   = eg*(1-BetaI*cg);
00313   chi_p   = eg*(1+BetaI*cg);
00314   chi_m_p = 2*(1-ep);
00315   chi_p_p = 2*(1-em);
00316 
00317   double mmu2 = gGlobal->Get_MF2();
00318   double B = (u*u + u1*u1 + t*t + t1*t1)/(4*s*s1);
00319   double D_s_s = -(u*u + t1*t1 + 2*s*mmu2)/(2*chi_m_p*chi_m_p)
00320     -(u1*u1 + t*t + 2*s*mmu2)/(2*chi_p_p*chi_p_p)
00321     +(s*s1 - s*s + t*u + t1*u1 - 2*s*mmu2)/(chi_m_p*chi_p_p);
00322   double R_mu = s1*B/(chi_m_p*chi_p_p)+mmu2/(s*s)*D_s_s;
00323   
00324   double C = u/(chi_m*chi_p_p) + u1/(chi_p*chi_m_p) - t/(chi_m*chi_m_p) - t1/(chi_p*chi_p_p);
00325   double D_s_s1 = 0.5*(s+s1)*C + 2*(u-t1)/chi_m_p + 2*(u1-t)/chi_p_p;
00326   double R_e_mu = B*C + mmu2/(s*s1)*D_s_s1;
00327 
00328 
00329   double CosPsi = fEvent->GetCosPsi();
00330   double gamma = eg*pm/(2-eg*(1-em*CosPsi/pm));
00331 
00332   std::complex<double> vp_s  = fVPol->Evals(gGlobal->Get_s());
00333   double vp_s_s  = std::abs(vp_s*vp_s);
00334   std::complex<double> vp_s1 = fVPol->Evals(gGlobal->Get_s()*s1*0.25);
00335   double vp_s1_cs= std::real(vp_s1*std::conj(vp_s));
00336 
00337   double RG_f = gamma*(vp_s_s*R_mu + vp_s1_cs*R_e_mu);
00338   return RG_f;  
00339 }

void TVCrossPart::SetDefaultVP (  )  [inline, inherited]

Definition at line 33 of file TVCrossPart.h.

References TVCrossPart::fZeroVP.

00033 {fZeroVP = false;}

virtual void TVCrossPart::SetHardPhoton ( const bool x  )  [inline, virtual, inherited]

Definition at line 31 of file TVCrossPart.h.

References TVCrossPart::fHardPhoton.

Referenced by init_prime_gen_(), Mcgpj::initialize(), and main().

00031 {fHardPhoton = x;}

void TVCrossPart::SetNoFSR (  )  [inline, inherited]

Definition at line 34 of file TVCrossPart.h.

References TVCrossPart::fNoFSR.

Referenced by init_prime_gen_(), Mcgpj::initialize(), and main().

00034 {fNoFSR = true;}

void TMuCrossPart::SetThetaMin ( const double &   )  [virtual]

Implements TVCrossPart.

Definition at line 39 of file TMuCrossPart.C.

References cos(), fBetaMu2, fCosMin, fMax, fNorm, gConst, TRadGlobal::Get_BetaF(), gGlobal, and TConstants::Pi().

Referenced by Init().

00039                                               {
00040   fCosMin  = cos(th);
00041   fBetaMu2 = gGlobal->Get_BetaF()*gGlobal->Get_BetaF();
00042   fMax     = 2 - fBetaMu2*(1 - fCosMin*fCosMin);
00043   fNorm    = 2*fCosMin*(2 - fBetaMu2 + fCosMin*fCosMin*fBetaMu2/3)* // Theta norm
00044     2*gConst->Pi(); // Phi norm  
00045 }

void TVCrossPart::SetZeroVP (  )  [inline, inherited]

Definition at line 32 of file TVCrossPart.h.

References TVCrossPart::fZeroVP.

Referenced by init_prime_gen_(), Mcgpj::initialize(), and main().

00032 {fZeroVP = true;}


Member Data Documentation

double TMuCrossPart::fBetaMu [protected]

Definition at line 22 of file TMuCrossPart.h.

Referenced by GetValue(), and TMuCrossPart().

double TMuCrossPart::fBetaMu2 [protected]

Definition at line 23 of file TMuCrossPart.h.

Referenced by GetCNorm(), MakeCosTheta(), and SetThetaMin().

double TMuCrossPart::fCompMuSV [protected]

Definition at line 21 of file TMuCrossPart.h.

Referenced by GetValue(), and TMuCrossPart().

double TMuCrossPart::fCosMin [protected]

Definition at line 17 of file TMuCrossPart.h.

Referenced by MakeCosTheta(), and SetThetaMin().

TDFun* TVCrossPart::fD [protected, inherited]

Definition at line 11 of file TVCrossPart.h.

Referenced by TPiCrossPart::GetValue(), GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TPiCrossPart::Init(), Init(), TGGCrossPart::Init(), TEPCrossPart::Init(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), TPiCrossPart::TPiCrossPart(), TEPCrossPart::~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), ~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().

TEvent* TVCrossPart::fEvent [protected, inherited]

Definition at line 10 of file TVCrossPart.h.

Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::BornShift(), BornShift(), TEPCrossPart::BornShift(), TVCrossPart::GetEvent(), TPiCrossPart::GetValue(), GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TPiCrossPart::Init(), Init(), TGGCrossPart::Init(), TEPCrossPart::Init(), TVCrossPart::PrintEvent(), TGGCrossPart::R_3_Gamma(), R_e_Gamma(), R_e_Gamma_t(), R_e_mu_Gamma_t(), R_f_Gamma(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_kuraev_eidelman(), TPiCrossPart::R_Gamma_t(), TEPCrossPart::RGamma(), TEPCrossPart::RGamma_kuraev_eidelman(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), TPiCrossPart::TPiCrossPart(), TEPCrossPart::~TEPCrossPart(), TGGCrossPart::~TGGCrossPart(), ~TMuCrossPart(), and TPiCrossPart::~TPiCrossPart().

bool TVCrossPart::fHardPhoton [protected, inherited]

Definition at line 12 of file TVCrossPart.h.

Referenced by TPiCrossPart::GetValue(), GetValue(), TGGCrossPart::GetValue(), TEPCrossPart::GetValue(), TVCrossPart::SetHardPhoton(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

TMuKFun* TMuCrossPart::fK [protected]

Definition at line 10 of file TMuCrossPart.h.

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

double TMuCrossPart::fMax [protected]

Definition at line 19 of file TMuCrossPart.h.

Referenced by SetThetaMin().

bool TVCrossPart::fNoFSR [protected, inherited]

Definition at line 14 of file TVCrossPart.h.

Referenced by TPiCrossPart::GetValue(), GetValue(), R_e_Gamma(), TPiCrossPart::R_Gamma(), TPiCrossPart::R_Gamma_t(), TVCrossPart::SetNoFSR(), TGGCrossPart::TGGCrossPart(), TKnCrossPart::TKnCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

double TMuCrossPart::fNorm [protected]

Definition at line 20 of file TMuCrossPart.h.

Referenced by GetCNorm(), and SetThetaMin().

unsigned int TVCrossPart::fNPart [protected, inherited]

Definition at line 9 of file TVCrossPart.h.

Referenced by TVCrossPart::GetNPart(), TEPCrossPart::TEPCrossPart(), TGGCrossPart::TGGCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

TPhotonD* TMuCrossPart::fPhD1 [protected]

Definition at line 11 of file TMuCrossPart.h.

Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().

TPhotonD* TMuCrossPart::fPhD2 [protected]

Definition at line 12 of file TMuCrossPart.h.

Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().

TPhotonFS* TMuCrossPart::fPhFS [protected]

Definition at line 15 of file TMuCrossPart.h.

Referenced by Init(), TMuCrossPart(), and ~TMuCrossPart().

TPhotonI* TMuCrossPart::fPhI1 [protected]

Definition at line 13 of file TMuCrossPart.h.

Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().

TPhotonI* TMuCrossPart::fPhI2 [protected]

Definition at line 14 of file TMuCrossPart.h.

Referenced by GetValue(), Init(), TMuCrossPart(), and ~TMuCrossPart().

double TMuCrossPart::fSinTheta2 [protected]

Definition at line 18 of file TMuCrossPart.h.

Referenced by GetCNorm(), and MakeCosTheta().

TVacuumPol* TMuCrossPart::fVPol [protected]

Definition at line 16 of file TMuCrossPart.h.

Referenced by BornShift(), Init(), R_e_Gamma(), R_e_Gamma_t(), R_e_mu_Gamma_t(), R_f_Gamma(), TMuCrossPart(), and ~TMuCrossPart().

bool TVCrossPart::fZeroVP [protected, inherited]

Definition at line 13 of file TVCrossPart.h.

Referenced by TVCrossPart::BornCrossSection(), TPiCrossPart::Init(), Init(), TEPCrossPart::Init(), TVCrossPart::SetDefaultVP(), TVCrossPart::SetZeroVP(), TEPCrossPart::TEPCrossPart(), TMuCrossPart(), and TPiCrossPart::TPiCrossPart().


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