TEPCrossPart Class Reference

#include <TEPCrossPart.h>

Inheritance diagram for TEPCrossPart:

TVCrossPart List of all members.

Public Member Functions

 TEPCrossPart ()
 ~TEPCrossPart ()
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 RGamma ()
double RGamma_kuraev_eidelman (const bool &print=false)

Protected Attributes

TEKFunfK
TPhotonDfPhD1
TPhotonDfPhD2
TPhotonDfPhD3
TPhotonDfPhD4
TPhotonIfPhI1
TPhotonIfPhI2
TPhotonFfPhF3
TPhotonFfPhF4
TVacuumPolfVPol
double fCosTheta
double fCosMin
double fSinMin2
double fNorm
double fMax
unsigned int fNPart
TEventfEvent
TDFunfD
bool fHardPhoton
bool fZeroVP
bool fNoFSR

Detailed Description

Definition at line 8 of file TEPCrossPart.h.


Constructor & Destructor Documentation

TEPCrossPart::TEPCrossPart (  ) 

Definition at line 10 of file TEPCrossPart.C.

References TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, TVCrossPart::fNPart, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, TRadGlobal::GetDatadir(), TRadGlobal::GetVpolFname(), gGlobal, and TVacuumPol::Init().

00010                           :TVCrossPart(){
00011   fNPart = 18;
00012 
00013   fK     = new TEKFun();
00014   fD     = new TDFun();
00015   fEvent = new TEvent();
00016 
00017   // soft photons 
00018   fPhD1  = new TPhotonD();
00019   fPhD2  = new TPhotonD();
00020   fPhD3  = new TPhotonD();
00021   fPhD4  = new TPhotonD();
00022 
00023   // initial and final hard photons
00024   fPhI1  = new TPhotonI();
00025   fPhI2  = new TPhotonI();
00026   fPhF3  = new TPhotonF();
00027   fPhF4  = new TPhotonF();
00028 
00029   // vacuum polarization
00030   fVPol  = new TVacuumPol();
00031   fVPol->Init(gGlobal->GetDatadir(), gGlobal->GetVpolFname());
00032 
00033   fHardPhoton = true;
00034   fZeroVP     = false;
00035 }

TEPCrossPart::~TEPCrossPart (  ) 

Definition at line 89 of file TEPCrossPart.C.

References TVCrossPart::fD, TVCrossPart::fEvent, fK, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, and fVPol.

00089                            {
00090   delete fK;
00091   delete fD;
00092   delete fEvent;
00093 
00094   delete fPhD1;
00095   delete fPhD2;
00096   delete fPhD3;
00097   delete fPhD4;
00098 
00099   delete fPhI1;
00100   delete fPhI2;
00101   delete fPhF3;
00102   delete fPhF4;
00103 
00104   delete fVPol;  
00105 }


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 TEPCrossPart::BornShift ( const double &  ,
const double &  ,
const double &   
) [virtual]

Implements TVCrossPart.

Definition at line 107 of file TEPCrossPart.C.

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

Referenced by GetValue().

00107                                                                                  {
00108   double Y1 = fEvent->GetY(0);
00109   double sw = gGlobal->Get_s()*z1*z2;
00110   double tw = -0.5*gGlobal->Get_s()*z1*Y1*(1.-c);
00111   double a  = z1+z2-(z1-z2)*c;
00112   double a2 = a*a;
00113   std::complex<double> vptw  = fVPol->Evalt(tw);
00114   std::complex<double> vpsw  = fVPol->Evals(sw);
00115 
00116   double p1 = z1*(1-c);
00117   double p12 = p1*p1;
00118   double p2 = z2*(1+c);
00119   double p22 = p2*p2;
00120   double cs =  
00121     std::abs(vptw*vptw)*(a2+p22)/(2*p12) +
00122     std::abs(vpsw*vpsw)*(p12+p22)/(2*a2) -
00123     std::real(vptw*std::conj(vpsw))*p22/(a*p1);
00124 
00125   cs *= 4/a2;
00126 
00127   return cs;
00128 }

double TEPCrossPart::GetCNorm (  )  [protected]

Definition at line 59 of file TEPCrossPart.C.

References fCosTheta, fNorm, and s.

Referenced by GetValue().

00059                              {
00060   //  double s = (1 - fCosTheta)/(3 + fCosTheta*fCosTheta); 
00061   double s = 1 - fCosTheta;
00062   double norm = s*s*fNorm;
00063   return norm;
00064 }

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 TEPCrossPart::GetValue ( const unsigned  int  )  [virtual]

Reimplemented from TVCrossPart.

Definition at line 136 of file TEPCrossPart.C.

References TConstants::Alpha(), TConstants::AlphaPi(), BornShift(), COMP_F, COMP_I, TDFun::Eval(), TEKFun::Eval(), TDFun::EvalSoft(), F, fCosTheta, TVCrossPart::fD, TVCrossPart::fEvent, TVCrossPart::fHardPhoton, fK, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, gConst, TRadGlobal::Get_b(), TRadGlobal::Get_L(), TRadGlobal::Get_LnDelta(), TRadGlobal::Get_VarPar(), TRadGlobal::Get_XMin(), GetCNorm(), TPhotonF::GetEnergy(), TPhotonI::GetEnergy(), TPhotonD::GetEnergy(), TPhotonD::GetENorm(), TPhotonF::GetENorm(), TPhotonI::GetENorm(), TPhoton::GetPhiNorm(), TPhoton::GetThNorm(), TPhoton::GetThNormF(), TEvent::GetY(), gGlobal, M_PI, MakeCosTheta(), TEvent::MakeEvent(), TEvent::MakeEventN(), maxmtr, TConstants::Pi2(), TEvent::Print(), RGamma(), and RGamma_kuraev_eidelman().

00136                                                      {
00137   bool IsSoftIE, IsSoftIP, IsSoftFE, IsSoftFP;
00138   IsSoftIE = IsSoftIP = IsSoftFE = IsSoftFP = true;
00139 
00140   bool CompSV, CompIE, CompIP, CompFE, CompFP;
00141   CompSV = CompIE = CompIP = CompFE = CompFP = false;
00142 #ifdef OLDSTYLE
00143   double b  = gGlobal->Get_b();
00144 #endif
00145   double AP = gConst->AlphaPi();
00146 
00147 #ifdef FIXP
00148   double c = 0.3;
00149   fCosTheta = c;
00150 #else
00151   double c = MakeCosTheta();
00152 #endif
00153 
00154   switch(ipart){
00155   case 0:
00156     IsSoftIE = IsSoftIP = IsSoftFE = IsSoftFP = true;
00157     CompSV   = true;
00158     break;
00159   case 1:
00160     IsSoftFP = false;
00161     CompFP   = true;
00162     break;
00163   case 2:
00164     IsSoftFE = false;
00165     CompFE   = true;
00166     break;
00167   case 3:
00168     IsSoftFP = IsSoftFE = false;
00169     break;
00170   case 4:
00171     IsSoftIP = false;
00172     CompIP   = true;
00173     break;
00174   case 5:
00175     IsSoftIP = IsSoftFP = false;
00176     break;
00177   case 6:
00178     IsSoftIP = IsSoftFE = false;
00179     break;
00180   case 7:
00181     IsSoftIP = IsSoftFE = IsSoftFP = false;
00182     break;
00183   case 8:
00184     IsSoftIE = false;
00185     CompIE   = true;
00186     break;
00187   case 9:
00188     IsSoftIE = IsSoftFP = false;
00189     break;
00190   case 10:
00191     IsSoftIE = IsSoftFE = false;
00192     break;
00193   case 11:
00194     IsSoftIE = IsSoftFE = IsSoftFP = false;
00195     break;
00196   case 12:
00197     IsSoftIE = IsSoftIP = false;
00198     break;
00199   case 13:
00200     IsSoftIE = IsSoftIP = IsSoftFP = false;
00201     break;
00202   case 14:
00203     IsSoftIE = IsSoftIP = IsSoftFE = false;
00204     break;
00205   case 15:
00206     IsSoftIE = IsSoftIP = IsSoftFE = IsSoftFP = false;
00207     break;
00208   case 16:
00209     // one photon out of the narrow cones with singularity about initial particles
00210     if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,1)){
00211       double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma();
00212       double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm();
00213       return t1*norm;
00214     }
00215     return 0;
00216     break;
00217   case 17:
00218     // one photon out of the narrow cones with singularity about final particles
00219     if(fHardPhoton && fEvent->MakeEvent(c,fPhF3,0)){
00220       //      fEvent->CosPrint();
00221       double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma();
00222       double norm = fPhF3->GetENorm()*fPhF3->GetThNormF()*fPhF3->GetPhiNorm()*GetCNorm();
00223       //      cout<<DB(RGamma())<<DB(GetCNorm())<<DB(fPhF3->GetENorm())<<DB(fPhF3->GetThNorm())<<endl;
00224       /*      
00225       if(t1*norm>maxmtr){
00226         maxmtr = t1*norm;
00227         fEvent->Print();
00228         cout<<maxmtr<<" "<<t1<<" "<<norm<<endl<<flush;
00229       }
00230       */
00231       return t1*norm;
00232     }
00233     return 0;
00234     break;
00235   case 18:
00236     // Soft and virtial part for one photon cross-section (testing purpose only)
00237     if(fEvent->MakeEvent(c,0,0,0,0)){
00238       double lde = gGlobal->Get_LnDelta();
00239       return BornShift(1,1,c)*
00240         (1
00241          + 2*AP*(gGlobal->Get_L()-1)*(2*lde + 1.5)
00242          - 4*AP*log((1+c)/(1-c))*lde 
00243          + AP*fK->Eval(1,1,c)
00244          )*GetCNorm();
00245     }
00246     return 0;
00247     break;
00248   case 19:
00249     // preprint INP 78-82 soft and virtual part
00250     if(fEvent->MakeEvent(c,0,0,0,0)){
00251       double lde = gGlobal->Get_LnDelta();
00252       double rho = gGlobal->Get_L();
00253       double z = c;
00254       double z2 = z*z;
00255       double z3 = z2*z;
00256       double z4 = z3*z;
00257 #define F(x) TLi2::Eval(x)
00258       return BornShift(1,1,c)*
00259         (1
00260          + 2*AP*
00261          (
00262           2*(rho - 1 - log((1+z)/(1-z)))*lde - F(0.5*(1+z)) + F(0.5*(1-z)) - 23./9. + 
00263           11./6.*rho + 
00264           0.5*pow(3+z2,-2)*(
00265                             M_PI*M_PI/3.*(2*z4 - 3*z3 - 15*z) + 
00266                             0.5*(2*z4-3*z3+9*z2+3*z+21)*pow(log(0.5*(1-z)),2)-
00267                             (z4+z2-2*z)*pow(log(0.5*(1+z)),2) - 
00268                             (z3+4*z2+5*z+6)*pow(log((1+z)/(1-z)),2)+
00269                             1./3.*(11*z3+33*z2+21*z+111)*log(0.5*(1-z))+
00270                             (z3-3*z2+7*z-5)*log(0.5*(1+z))
00271                             )
00272           )
00273          )*GetCNorm();
00274 #undef F
00275     }
00276     
00277     return 0;
00278     break;
00279   case 20:
00280     // one photon out of the narrow cones with singularity about initial particles
00281     if(fHardPhoton && fEvent->MakeEvent(c,fPhI1,1)){
00282       double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma_kuraev_eidelman();
00283       double norm = fPhI1->GetENorm()*fPhI1->GetThNorm()*fPhI1->GetPhiNorm()*GetCNorm();
00284       return t1*norm;
00285     }
00286     return 0;
00287     break;
00288   case 21:
00289     // one photon out of the narrow cones with singularity about final particles
00290     if(fHardPhoton && fEvent->MakeEvent(c,fPhF3,0)){
00291       double t1 = gConst->Alpha()/(2*gConst->Pi2())*RGamma_kuraev_eidelman();
00292       double norm = fPhF3->GetENorm()*fPhF3->GetThNormF()*fPhF3->GetPhiNorm()*GetCNorm();
00293 
00294       if(t1*norm>maxmtr){
00295         maxmtr = t1*norm;
00296         fEvent->Print();
00297         RGamma_kuraev_eidelman(true);
00298         cout<<maxmtr<<" "<<t1<<" "<<norm<<endl<<flush;
00299       }
00300 
00301       return t1*norm;
00302     }
00303     return 0;
00304     break;
00305   default:
00306     return 0;
00307     break;
00308   }
00309 
00310   if(!fHardPhoton) CompSV = CompIE = CompIP = CompFE = CompFP = false;
00311 
00312   double RedCut = 1e-10;//gGlobal->Get_InfraRedCut();
00313 
00314   double  x1g, x2g, x3g, x4g;
00315   x1g = x2g = x3g = x4g = 0;
00316 
00317   double  z1, z2, z3, z4;
00318   z1 = z2 = z3 = z4 = 1;
00319 
00320   if(IsSoftIE)
00321     x1g = fPhD1->GetEnergy(); 
00322   else
00323     x1g = fPhI1->GetEnergy();
00324   z1 = 1 - x1g;
00325   
00326   if(IsSoftIP)
00327     x2g = fPhD2->GetEnergy(); 
00328   else
00329     x2g = fPhI2->GetEnergy();
00330   z2 = 1 - x2g;
00331   
00332   if(fEvent->MakeEvent(c,x1g,x2g,0,0)){
00333 
00334     double Beta2_m, D0_m;
00335     if(IsSoftFE){
00336       gGlobal->Get_VarPar(1, Beta2_m, D0_m);
00337       //      gGlobal->Get_VarPar(fEvent->GetY(0), Beta2_m, D0_m);
00338       x3g = fPhD3->GetEnergy(gGlobal->Get_XMin(), Beta2_m); 
00339     }else
00340       x3g = fPhF3->GetEnergy();
00341     z3 = 1 - x3g;
00342     
00343     double Beta2_p, D0_p;
00344     if(IsSoftFP){
00345       gGlobal->Get_VarPar(1, Beta2_p, D0_p);
00346       //      gGlobal->Get_VarPar(fEvent->GetY(1), Beta2_p, D0_p);
00347       x4g = fPhD4->GetEnergy(gGlobal->Get_XMin(), Beta2_p);
00348     }else
00349       x4g = fPhF4->GetEnergy();
00350     z4 = 1 - x4g;
00351       
00352     if(fEvent->MakeEventN(x3g,x4g)){
00353 
00354       double D1, D2, D3, D4, t2 = 0;
00355 
00356       if(IsSoftIE){
00357 #ifdef OLDSTYLE
00358         D1 = b;
00359 #else
00360         if(x1g>RedCut)
00361           D1 = fD->EvalSoft(x1g)*fPhD1->GetENorm();
00362         else
00363           D1 = fD->EvalSoft(RedCut)*fPhD1->GetENorm();
00364 #endif
00365       }else{
00366         double norm = fPhI1->GetENorm();
00367         D1 = fD->Eval(z1)*norm;
00368         if(CompIE) t2 = COMP_I(x1g)*norm;
00369       }
00370 
00371       if(IsSoftIP)
00372 #ifdef OLDSTYLE
00373         D2 = b;
00374 #else
00375         if(x2g>RedCut)
00376           D2 = fD->EvalSoft(x2g)*fPhD2->GetENorm();
00377         else
00378           D2 = fD->EvalSoft(RedCut)*fPhD2->GetENorm();
00379 #endif
00380       else{
00381         double norm = fPhI2->GetENorm();
00382         D2 = fD->Eval(z2)*norm;
00383         if(CompIP) t2 = COMP_I(x2g)*norm;
00384       }
00385 
00386       if(IsSoftFE)
00387 #ifdef OLDSTYLE
00388         D3 = b;
00389 #else
00390         if(x3g>RedCut)
00391           D3 = fD->EvalSoft(x3g, Beta2_m, D0_m)*fPhD3->GetENorm();
00392         else
00393           D3 = fD->EvalSoft(RedCut, Beta2_m, D0_m)*fPhD3->GetENorm();
00394 #endif
00395       else{
00396         gGlobal->Get_VarPar(fEvent->GetY(0), Beta2_m, D0_m);
00397         double norm = fPhF3->GetENorm();
00398         D3 = fD->Eval(z3, Beta2_m, D0_m)*norm;
00399         if(CompFE) t2 = COMP_F(x3g)*norm;
00400       }
00401 
00402       if(IsSoftFP){
00403 #ifdef OLDSTYLE
00404         D4 = b;
00405 #else
00406         if(x4g>RedCut)
00407           D4 = fD->EvalSoft(x4g, Beta2_p, D0_p)*fPhD4->GetENorm();
00408         else
00409           D4 = fD->EvalSoft(RedCut, Beta2_p, D0_p)*fPhD4->GetENorm();
00410 #endif
00411       }else{
00412         gGlobal->Get_VarPar(fEvent->GetY(1), Beta2_p, D0_p);
00413         double norm = fPhF4->GetENorm();
00414         D4 = fD->Eval(z4, Beta2_p, D0_p)*norm;
00415         if(CompFP) t2 = COMP_F(x4g)*norm;
00416       }
00417 
00418       if(CompSV)
00419         t2 = -4*AP*log((1+c)/(1-c))*gGlobal->Get_LnDelta();
00420       double Ksv;
00421       if(fHardPhoton)
00422         Ksv = fK->Eval(z1,z2,c);
00423       else
00424         Ksv = 0;
00425       double t1  = (1 + AP*Ksv)*D1*D2*D3*D4;
00426 
00427       return BornShift(z1,z2,c)*(t1+t2)*GetCNorm();
00428     }
00429   }
00430   return 0;
00431 }

void TEPCrossPart::Init (  )  [virtual]

Reimplemented from TVCrossPart.

Definition at line 66 of file TEPCrossPart.C.

References TVCrossPart::fD, TVCrossPart::fEvent, fK, fPhD1, fPhD2, fPhD3, fPhD4, fPhF3, fPhF4, fPhI1, fPhI2, fVPol, TVCrossPart::fZeroVP, gCut, TPhotonF::Init(), TPhotonI::Init(), TPhotonD::Init(), TEvent::Init(), TDFun::Init(), TEKFun::Init(), M_PI, TVacuumPol::SetDefaultVP(), SetThetaMin(), TVacuumPol::SetZeroVP(), TKinemCut::ThetaMaxM(), and TKinemCut::ThetaMinM().

00066                        {
00067   SetThetaMin((gCut->ThetaMinM()<M_PI-gCut->ThetaMaxM())?gCut->ThetaMinM():M_PI-gCut->ThetaMaxM());
00068 
00069   fK->Init();
00070   fD->Init();
00071   fEvent->Init();
00072 
00073   fPhD1->Init();
00074   fPhD2->Init();
00075   fPhD3->Init();
00076   fPhD4->Init();
00077 
00078   fPhI1->Init();
00079   fPhI2->Init();
00080   fPhF3->Init();
00081   fPhF4->Init();
00082 
00083   if(fZeroVP) 
00084     fVPol->SetZeroVP();
00085   else 
00086     fVPol->SetDefaultVP();
00087 }

double TEPCrossPart::MakeCosTheta (  )  [protected]

Definition at line 48 of file TEPCrossPart.C.

References fCosMin, fCosTheta, and fSinMin2.

Referenced by GetValue().

00048                                  {
00049   //  double s,r[2];
00050   //  do{
00051   //    gRandom->RndmArray(2,r);
00052   //    fCosTheta = 1 - fSinMin2/(1+fCosMin*(2*r[0]-1));
00053   //    s = 3 + fCosTheta*fCosTheta;
00054   //  }while(s*s < fMax*r[1]);
00055   fCosTheta = 1 - fSinMin2/(1+fCosMin*(2*gRandom->Rndm() - 1));
00056   return fCosTheta;
00057 }

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

Definition at line 20 of file TVCrossPart.h.

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

00020 {fEvent->Print();}

double TEPCrossPart::RGamma (  )  [protected]

Definition at line 433 of file TEPCrossPart.C.

References conj(), TVacuumPol::Evals(), TVacuumPol::Evalt(), TVCrossPart::fEvent, fVPol, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MI2(), TRadGlobal::Get_s(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, is, rb::me2, rb::R(), s, and t().

Referenced by GetValue().

00433                            {
00434   double em,pm,cm, ep,pp,cp, eg,pg,cg;
00435   fEvent->GetPPar(0,em,pm,cm);
00436   fEvent->GetPPar(1,ep,pp,cp);
00437   fEvent->GetPPar(2,eg,pg,cg);
00438 
00439   double  s, s1,  t, t1,  u, u1;
00440   s  = 4;
00441   s1 = 4*(1 - eg);
00442 
00443   double BetaI = gGlobal->Get_BetaI();
00444   t  = -2*(em - BetaI*pm*cm);
00445   t1 = -2*(ep + BetaI*pp*cp);
00446 
00447   u  = -2*(ep - BetaI*pp*cp);
00448   u1 = -2*(em + BetaI*pm*cm);
00449 
00450   double is  = 1/s;
00451   double is1 = 1/s1;
00452   double it  = 1/t;
00453   double it1 = 1/t1;
00454 
00455   double s_ev = gGlobal->Get_s()*0.25;
00456   std::complex<double> vpt,vpt1,vps,vps1;
00457   vpt  = fVPol->Evalt(s_ev*t);
00458   vpt1 = fVPol->Evalt(s_ev*t1);
00459   vps  = fVPol->Evals(s_ev*s);
00460   vps1 = fVPol->Evals(s_ev*s1);
00461 
00462   //  cout<<DB(vpt)<<DB(vpt1)<<DB(vps)<<DB(vps1)<<endl;
00463   double vpss, vps1s1, vptt, vpt1t1, vptct1, vpscs1, vptcs, vpt1cs1, vpt1cs, vptcs1;
00464   vpss    = std::real(vps*std::conj(vps));
00465   vps1s1  = std::real(vps1*std::conj(vps1));
00466   vptt    = std::real(vpt*std::conj(vpt));
00467   vpt1t1  = std::real(vpt1*std::conj(vpt1));
00468 
00469   vptct1  = std::real(vpt*std::conj(vpt1));
00470   vpscs1  = std::real(vps*std::conj(vps1));
00471   vptcs   = std::real(vpt*std::conj(vps));
00472   vpt1cs1 = std::real(vpt1*std::conj(vps1));
00473   vpt1cs  = std::real(vpt1*std::conj(vps));
00474   vptcs1  = std::real(vpt*std::conj(vps1));
00475 
00476   double chi_m,chi_p,chi_m_p,chi_p_p;
00477   chi_m   = eg*(1 - BetaI*cg);
00478   chi_p   = eg*(1 + BetaI*cg);
00479   chi_m_p = 2*(1 - ep);
00480   chi_p_p = 2*(1 - em);
00481   //  cout<<DB(chi_m)<<DB(chi_p)<<DB(chi_m_p)<<DB(chi_p_p)<<endl;
00482   double ichi_m   = 1/chi_m;
00483   double ichi_p   = 1/chi_p;
00484   double ichi_m_p = 1/chi_m_p;
00485   double ichi_p_p = 1/chi_p_p;
00486 
00487   double SS,S1S1,SS1,TT,T1T1,TT1,TS,TS1,T1S,T1S1;
00488   SS   = t*t + t1*t1 + u*u + u1*u1;
00489   S1S1 = SS;
00490   SS1  = SS*(t*chi_p*chi_p_p + t1*chi_m*chi_m_p - u*chi_p*chi_m_p - u1*chi_m*chi_p_p);
00491   TT   = s*s + s1*s1 + u*u + u1*u1;
00492   T1T1 = TT;
00493   TT1  = TT*(u*chi_p*chi_m_p + u1*chi_m*chi_p_p + s*chi_m_p*chi_p_p + s1*chi_m*chi_p);
00494   TS   = -0.5*( u*u + u1*u1 )*( s *(t  + s1) + t *(s  + t1) - u*u1 );
00495   TS1  = -0.5*( u*u + u1*u1 )*( t *(s1 + t1) + s1*(s  + t ) - u*u1 );
00496   T1S  =  0.5*( u*u + u1*u1 )*( t1*(s  + t ) + s *(s1 + t1) - u*u1 );
00497   T1S1 =  0.5*( u*u + u1*u1 )*( s1*(s  + t1) + t1*(s1 + t ) - u*u1 );
00498   //  cout<<DB(SS)<<DB(TT)<<DB(TS)<<DB(TS1)<<DB(T1S)<<DB(T1S1)<<endl;
00499   /*
00500   double R = 
00501     vpss*SS/(s*chi_m_p*chi_p_p) + 
00502     vps1s1*S1S1/(s1*chi_m*chi_p) -
00503     vptt*TT/(t*chi_p*chi_p_p) -
00504     vpt1t1*T1T1/(t1*chi_m*chi_m_p) + 
00505     (vptct1*TT1/(t*t1)-vpscs1*SS1/(s*s1))/(chi_m*chi_m_p*chi_p*chi_p_p) +
00506     vptcs*TS/(t*s*chi_m_p*chi_p*chi_p_p) +
00507     vpt1cs1*T1S1/(t1*s1*chi_m*chi_m_p*chi_p) -
00508     vpt1cs*T1S/(t1*s*chi_m*chi_m_p*chi_p_p) -
00509     vptcs1*TS1/(t*s1*chi_m*chi_p*chi_p_p);
00510   cout<<DB(R)<<endl;
00511   */
00512   double R = 
00513     vpss*SS*(is*ichi_m_p*ichi_p_p) + 
00514     vps1s1*S1S1*(is1*ichi_m*ichi_p) -
00515     vptt*TT*(it*ichi_p*ichi_p_p) -
00516     vpt1t1*T1T1*(it1*ichi_m*ichi_m_p) + 
00517     (vptct1*TT1*(it*it1) - vpscs1*SS1*(is*is1))*(ichi_m*ichi_m_p*ichi_p*ichi_p_p) +
00518     vptcs*TS*(it*is*ichi_m_p*ichi_p*ichi_p_p) +
00519     vpt1cs1*T1S1*(it1*is1*ichi_m*ichi_m_p*ichi_p) -
00520     vpt1cs*T1S*(it1*is*ichi_m*ichi_m_p*ichi_p_p) -
00521     vptcs1*TS1*(it*is1*ichi_m*ichi_p*ichi_p_p);
00522   /*
00523   double vptt1   = std::abs(vpt*vpt1);
00524   double vprtt1  = std::real(vpt*vpt1);
00525   double Rss1  = -vptt*TT/(t*chi_p*chi_p_p) - vpt1t1*T1T1/(t1*chi_m*chi_m_p)
00526     + vprtt1*TT/(t*t1)*(u/(chi_m*chi_p_p) + u1/(chi_p*chi_m_p)) 
00527     - vpscs1*SS/(s*s1)*
00528     (t/(chi_m*chi_m_p) + t1/(chi_p*chi_p_p) - 
00529      u/(chi_m*chi_p_p) - u1/(chi_p*chi_m_p)) +
00530     (vptcs*chi_m*TS/(t*s) + vpt1cs1*chi_p_p*T1S1/(t1*s1) - 
00531      vpt1cs*chi_p*T1S/(t1*s) - vptcs1*chi_m_p*TS1/(t*s1))/(chi_p*chi_m*chi_p_p*chi_m_p);
00532   double Rss   = (vpss*SS/s + vptt1*TT*s1/(t*t1))/(chi_p_p*chi_m_p);
00533   double Rs1s1 = (vps1s1*SS/s1 + vptt1*TT*s/(t*t1))/(chi_p*chi_m);
00534   double R1 = Rss + Rss1 + Rs1s1;
00535   */
00536 
00537   double me2 = gGlobal->Get_MI2();
00538   double st2 = (s+t)*(s+t);
00539   double b1 = 0.5*(vptt  *( s*s  +  st2)*it *it  + vpss  *( st2  +  t*t )* is*is ) + vptcs  *st2 *is *it;
00540   double st12 = (s+t1)*(s+t1);
00541   double b2 = 0.5*(vpt1t1*( s*s  + st12)*it1*it1 + vpss  *( st12 + t1*t1)* is*is ) + vptcs  *st12*is *it1;
00542   double s1t2 = (s1+t)*(s1+t);
00543   double b3 = 0.5*(vptt  *(s1*s1 + s1t2)*it *it  + vps1s1*(s1t2  +  t*t )*is1*is1) + vptcs1 *s1t2*is1*it;
00544   double s1t12 = (s1+t)*(s1+t1);
00545   double b4 = 0.5*(vpt1t1*(s1*s1 +s1t12)*it1*it1 + vps1s1*(s1t12 + t1*t1)*is1*is1) + vpt1cs1*s1t12*is1*it1;
00546   R -= 4*me2*(
00547               (ichi_p_p*ichi_p_p)*b1 +
00548               (ichi_m_p*ichi_m_p)*b2 +
00549               (ichi_p  *ichi_p  )*b3 +
00550               (ichi_m  *ichi_m  )*b4
00551               );
00552 
00553   double CosPsi = fEvent->GetCosPsi();
00554   double gamma  = eg*pm/(2 - eg*(1 - em*CosPsi/pm));
00555 
00556   return R*gamma*0.25;
00557 }

double TEPCrossPart::RGamma_kuraev_eidelman ( const bool print = false  )  [protected]

Definition at line 560 of file TEPCrossPart.C.

References DB, TVCrossPart::fEvent, TRadGlobal::Get_BetaI(), TRadGlobal::Get_MI2(), TEvent::GetCosPsi(), TEvent::GetPPar(), gGlobal, rb::me2, rb::R(), s, and t().

Referenced by GetValue().

00560                                                             {
00561   // preprint INP 78-82
00562   double em,pm,cm, ep,pp,cp, eg,pg,cg;
00563   fEvent->GetPPar(0,em,pm,cm);
00564   fEvent->GetPPar(1,ep,pp,cp);
00565   fEvent->GetPPar(2,eg,pg,cg);
00566 
00567   double s  = 4;
00568   double s1 = s*(1 - eg);
00569 
00570   double u1 = s*(-1. + 0.5*em*(1.-cm));
00571   double t1 = -0.5*s*em*(1.+cm);
00572   double t  = -0.5*s*em*(1.-cm);
00573   double u  = s*(-1 + eg + 0.5*em*(1+cm));
00574   double utilde  = s*(-1 + 0.5*em*(1+cm));
00575   double t1tilde = s*(-1 + eg +0.5*em*(1-cm));
00576 
00577   double BetaI   = gGlobal->Get_BetaI();
00578   double chi_m   = eg*(1 - BetaI*cg);
00579   double chi_p   = eg*(1 + BetaI*cg);
00580   double chi_m_p = 2*(1 - ep);
00581   double chi_p_p = 2*(1 - em);
00582   double me2  = gGlobal->Get_MI2();
00583   double R_i = 
00584     0.5*(u     *u1*pow(1/t1+1/s1,2) + s*s1/pow(t1     ,2) + 
00585          t*t1     /pow(s1,2))*s*(-me2*(1-eg)/pow(chi_m,2) + (1+pow(1-eg,2))/(eg*chi_m)) +
00586     0.5*(utilde*u1*pow(1/t +1/s1,2) + s*s1/pow(t1tilde,2) + 
00587          t*t1tilde/pow(s1,2))*s*(-me2*(1-eg)/pow(chi_p,2) + (1+pow(1-eg,2))/(eg*chi_p));
00588 
00589   double R_f = pow((3+cm*cm)/(1-cm),2)*s*(-me2/(4*pow(chi_p_p,2))-me2/(4*pow(chi_m_p,2)) + 
00590                                           (1+pow(1-eg,2))/(4*eg)*(1/chi_m_p + 1/chi_p_p));
00591   
00592   double R = R_i + R_f;
00593   
00594   double CosPsi = fEvent->GetCosPsi();
00595   double gamma  = eg*pm/(2 - eg*(1 - em*CosPsi/pm));
00596   if(print)cout<<DB(R_i)<<DB(R_f)<<DB(gamma)<<DB(u)<<DB(u1)<<DB(utilde)<<DB(t)<<DB(t1)<<DB(t1tilde)<<DB(chi_m)<<DB(chi_p)<<DB(chi_m_p)<<DB(chi_p_p)<<endl<<flush;
00597   return R*gamma*0.25;
00598 }

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 TEPCrossPart::SetThetaMin ( const double &   )  [virtual]

Implements TVCrossPart.

Definition at line 37 of file TEPCrossPart.C.

References cos(), fCosMin, fNorm, fSinMin2, gConst, and TConstants::Pi().

Referenced by Init().

00037                                               {
00038   fCosMin  = cos(th);
00039   fSinMin2 = 1 - fCosMin*fCosMin;
00040   //  fMax     = pow((3 + fCosMin*fCosMin),2);
00041   //  double c = fCosMin;
00042   //  double s2 = fSinMin2;
00043   //  fNorm    = 2*( c*(75 - 26*c*c - c*c*c*c) + 24*s2*log((1-c)/(1+c)) )/(3*s2)* // Theta norm
00044   fNorm = 2*fCosMin/fSinMin2* // Theta norm
00045     2*gConst->Pi(); // Phi norm
00046 }

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 TEPCrossPart::fCosMin [protected]

Definition at line 21 of file TEPCrossPart.h.

Referenced by MakeCosTheta(), and SetThetaMin().

double TEPCrossPart::fCosTheta [protected]

Definition at line 20 of file TEPCrossPart.h.

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

TDFun* TVCrossPart::fD [protected, inherited]

Definition at line 11 of file TVCrossPart.h.

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

TEvent* TVCrossPart::fEvent [protected, inherited]

Definition at line 10 of file TVCrossPart.h.

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

bool TVCrossPart::fHardPhoton [protected, inherited]

Definition at line 12 of file TVCrossPart.h.

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

TEKFun* TEPCrossPart::fK [protected]

Definition at line 10 of file TEPCrossPart.h.

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

double TEPCrossPart::fMax [protected]

Definition at line 24 of file TEPCrossPart.h.

bool TVCrossPart::fNoFSR [protected, inherited]

Definition at line 14 of file TVCrossPart.h.

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

double TEPCrossPart::fNorm [protected]

Definition at line 23 of file TEPCrossPart.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(), TGGCrossPart::TGGCrossPart(), TMuCrossPart::TMuCrossPart(), and TPiCrossPart::TPiCrossPart().

TPhotonD* TEPCrossPart::fPhD1 [protected]

Definition at line 11 of file TEPCrossPart.h.

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

TPhotonD* TEPCrossPart::fPhD2 [protected]

Definition at line 12 of file TEPCrossPart.h.

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

TPhotonD* TEPCrossPart::fPhD3 [protected]

Definition at line 13 of file TEPCrossPart.h.

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

TPhotonD* TEPCrossPart::fPhD4 [protected]

Definition at line 14 of file TEPCrossPart.h.

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

TPhotonF* TEPCrossPart::fPhF3 [protected]

Definition at line 17 of file TEPCrossPart.h.

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

TPhotonF* TEPCrossPart::fPhF4 [protected]

Definition at line 18 of file TEPCrossPart.h.

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

TPhotonI* TEPCrossPart::fPhI1 [protected]

Definition at line 15 of file TEPCrossPart.h.

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

TPhotonI* TEPCrossPart::fPhI2 [protected]

Definition at line 16 of file TEPCrossPart.h.

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

double TEPCrossPart::fSinMin2 [protected]

Definition at line 22 of file TEPCrossPart.h.

Referenced by MakeCosTheta(), and SetThetaMin().

TVacuumPol* TEPCrossPart::fVPol [protected]

Definition at line 19 of file TEPCrossPart.h.

Referenced by BornShift(), Init(), RGamma(), TEPCrossPart(), and ~TEPCrossPart().

bool TVCrossPart::fZeroVP [protected, inherited]

Definition at line 13 of file TVCrossPart.h.

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


Generated on Tue Nov 29 23:35:59 2016 for BOSS_7.0.2 by  doxygen 1.4.7